目录
- 1. 问题
- 2. 解决
-
- 2.1 更改 代码中的 channels 数目
- 2.2 尝试重装 pyaudio
1. 问题
使用 Mac、 jupyter notebook、pyaudio,想要实现音频录制和播放,出现报错:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-12-accd48de8cc7> in <module>51 52 if __name__ == '__main__':
---> 53 instantial_recorder()54 55 # voice_record_save_pretest()<ipython-input-12-accd48de8cc7> in instantial_recorder()26 # 此测试中录音播放均需硬件支持,无法通过 CI 的build27 global recorder_main
---> 28 recorder_main = AudioRecorder(sonic_conf, input_device_index=1)29 30 def voice_record_save_pretest():<ipython-input-8-2bac85483130> in __init__(self, sonic, block_size, **kwargs)41 frames_per_buffer = self.block_size,42 input = True,
---> 43 **kwargs44 )45 ~/software/anaconda3/envs/tensorflow/lib/python3.6/site-packages/pyaudio.py in open(self, *args, **kwargs)748 """749
--> 750 stream = Stream(self, *args, **kwargs)751 self._streams.add(stream)752 return stream~/software/anaconda3/envs/tensorflow/lib/python3.6/site-packages/pyaudio.py in __init__(self, PA_manager, rate, channels, format, input, output, input_device_index, output_device_index, frames_per_buffer, start, input_host_api_specific_stream_info, output_host_api_specific_stream_info, stream_callback)439 440 # calling pa.open returns a stream object
--> 441 self._stream = pa.open(**arguments)442 443 self._input_latency = self._stream.inputLatencyOSError: [Errno -9998] Invalid number of channels
2. 解决
2.1 更改 代码中的 channels 数目
channels 由 1 改为 2 ,尝试失败
接着查看本地声卡支持的最大channels
import pyaudiop = pyaudio.PyAudio()
for i in range(p.get_device_count()):dev = p.get_device_info_by_index(i)print((i,dev['name'],dev['maxInputChannels']))
(0, 'MacBook Pro 麦克风', 1)
(1, 'MacBook Pro 扬声器', 0)
没毛病啊?
后来,回过头才发现,就是这里有问题啊:
应该将 input_device_index=1
改为 input_device_index=0
,
然后,就弹出了 使用麦克风权限的 界面…
兜兜转转,google来百度去,一把鼻涕一把泪,唉
Well done!
2.2 尝试重装 pyaudio
尝试使用 conda ,不再用 pip 安装:
意思是,使用pip来安装只能保证 portaudio 正确的安装,而使用conda安装的pyaudio,会同时确保 portaudio 和 pyaudio 同时正确安装(portaudio作为pyaudio的依赖项),或者告诉你安装失败的原因。
参考:Python package installation issues: PyAudio, PortAudio
这是一条不归路,浪费了我半天的时间!!
参考:[Pyaudio] Error: invalid number of channels -9998