无法用 pyaudio 录制多个波形(无默认输出设备)

Posted

技术标签:

【中文标题】无法用 pyaudio 录制多个波形(无默认输出设备)【英文标题】:Can't record more than one wave with pyaudio (no default output device) 【发布时间】:2016-05-01 20:07:52 【问题描述】:

我正在尝试编写最简单的程序来录制两个录音并记录两个波形文件。您可以获取原始代码:https://gist.github.com/579095ac89fa2fff58db

导入pyaudio 进口波 块 = 1024 格式 = pyaudio.paInt16 频道 = 1 速率 = 44100 p = pyaudio.PyAudio() def 记录(文件名): 流 = p.open(格式 = 格式, 频道 = 频道, 率 = 率, 输入=真, frames_per_buffer = 块) 帧 = [] print "开始录制" + file_name + "." 对于范围内的 i (0, int(RATE / CHUNK * 2)): 数据 = stream.read(CHUNK) 帧.追加(数据) 打印“完成录音” stream.stop_stream() 流.close() p.terminate() wf = wave.open(file_name, 'wb') wf.setnchannels(频道) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() 记录('first.wav') # 再试一次 记录('second.wav')

如果我只调用一次记录函数,一切正常,但如果我再次尝试调用它,我得到:IOError: [Errno -9996] Invalid input device (no default output device)。

python record2x.py
starting recording first.wav.
finished recording
Traceback (most recent call last):
  File "record2x.py", line 38, in <module>
    record('second')
  File "record2x.py", line 16, in record
    frames_per_buffer = CHUNK)
  File "/usr/local/lib/python2.7/site-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
IOError: [Errno -9996] Invalid input device (no default output device)

【问题讨论】:

【参考方案1】:

没什么奇怪的。您在函数中调用了p.terminate(),这意味着您完全关闭了 PyAudio。所以它与声卡分离并等待新的初始化。 p.terminate() 仅在退出程序时调用。 此外,在这里,在您的函数中,stream.stop_stream() 是不必要的,因为stream.close() 会起作用。除非您稍后在启动某些音频时遇到一些点击,但这可能仅在使用 output=True 而不是 input=True 时出现。

【讨论】:

非常感谢。非常感谢您的洞察力。【参考方案2】:

我过早地终止了流。我只需要删除终止调用。

【讨论】:

不是流,而是整个 PyAudio 系统。您可以随时打开和关闭任意数量的流。

以上是关于无法用 pyaudio 录制多个波形(无默认输出设备)的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyAudio 将多个图层添加到录音中

使用 PyAudio 录制扬声器输出

使用 Pyaudio 在 Python 中录制音频,错误 ||PaMacCore (AUHAL)|| ... msg=音频单元:在当前上下文中无法执行

录制内部声音(来自软件合成器的输出)而不是来自麦克风

Python+opencv+pyaudio实现带声音屏幕录制

python 录制电脑声音