You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现录音程序自动将录制的音频保存至本地电脑?

解决PyAudio录制音频后无法保存到本地的问题

你的代码已经包含了音频保存的逻辑,但存在一个致命错误导致保存失败:在调用pa.get_sample_size(FORMAT)获取采样宽度之前,你已经执行了pa.terminate()销毁了PyAudio实例,这会导致程序无法正确设置WAV文件的参数,最终保存失败。

修正后的完整代码

import pyaudio
import wave


FRAMES_PER_BUFFER = 3200
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000

pa = pyaudio.PyAudio()

stream = pa.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=RATE,
    input=True,
    frames_per_buffer=FRAMES_PER_BUFFER
)

print('start recording')

seconds = 3
frames = []
for i in range(0, int(RATE/FRAMES_PER_BUFFER*seconds)):
    data = stream.read(FRAMES_PER_BUFFER)
    frames.append(data)
 
stream.stop_stream()
stream.close()

# 先完成音频保存操作,再终止PyAudio实例
obj = wave.open('Recordings.wav', 'wb')
obj.setnchannels(CHANNELS)
obj.setsampwidth(pa.get_sample_size(FORMAT))
obj.setframerate(RATE)
obj.writeframes(b''.join(frames))
obj.close()

pa.terminate()

关键说明

  • 保存路径:当前代码用的是相对路径'Recordings.wav',音频会保存在你运行程序的当前文件夹下。如果要指定固定路径,直接替换成绝对路径即可,比如:
    • Windows:'C:/Users/你的用户名/Documents/我的录音.wav'
    • macOS/Linux:'/home/你的用户名/Documents/我的录音.wav'
  • 核心修正:把pa.terminate()移到音频保存完成之后,确保在获取采样宽度时PyAudio实例还处于可用状态。
  • 验证结果:运行修正后的程序,录制完成后去对应路径找到WAV文件,用任意音频播放器即可收听。

内容的提问来源于stack exchange,提问作者Shania Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:52:18