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

问题描述 投票:0回答:2

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

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

如果我只调用一次记录函数,那么一切都很好,但是如果我再次尝试调用它,则会得到:IOError:[Errno -9996]无效的输入设备(无默认输出设备)。>>

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)

我正在尝试编写最简单的程序来进行两次录音并记录两个wave文件。您可以获取原始代码:https://gist.github.com/579095ac89fa2fff58db import pyaudio import wave CHUNK = ...

python audio pyaudio
2个回答
1
投票

没什么奇怪的。您在函数中调用了p.terminate(),表示您完全关闭了PyAudio。因此,它与声卡分离,并等待新的初始化。p.terminate()仅在程序退出时调用。同样,在这里,在您的函数中,不需要stream.stop_stream(),因为stream.close()可以解决问题。除非稍后再启动某些音频时遇到一些喀哒声,否则可能仅在使用output=True时才发生,而不是input=True


1
投票

我正在过早终止流。我只需要删除终止呼叫。

热门问题
推荐问题
最新问题