繁体   English   中英

出现IOError:在Raspberry Pi上将麦克风与PyAudio一起使用时,[Errno无效的通道数] -9998

[英]Getting IOError: [Errno Invalid number of channels] -9998 when using mic with PyAudio on Raspberry Pi

坏消息,大家!

我尝试通过PyAudio在Raspberry Pi上使用麦克风,但没有成功。 麦克风已连接到USB声卡。

当我通过“ arecord”时,麦克风起作用:

pi@raspberrypi ~ $ arecord -D plughw:0,0 -f cd test2.wav
Recording WAVE 'test2.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

但是,当我在PyAudio中执行test record.py测试时,出现错误。 对于使用PyAudio的Python中的所有程序,该错误相同:

pi@raspberrypi /usr/src/pyaudio/test $ python record.py 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1438
Expression 'ValidateParameters( inputParameters, hostApi, StreamDirection_In )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2742
Traceback (most recent call last):
  File "record.py", line 26, in <module>
frames_per_buffer=CHUNK)
  File "/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 747, in open
stream = Stream(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 442, in __init__
self._stream = pa.open(**arguments)
IOError: [Errno Invalid number of channels] -9998

谢谢你的帮助

您是否在Raspberry PI上连接了声卡? 默认情况下,您获得音频输出,但没有音频输入。 您可以通过运行检查

alsamixer

如果按F6键,您应该会看到声卡已列出。 如果按F4键,您应该会看到捕获设备(如果有)

我使用eBay的廉价USB声卡进行测试。

声卡带有音频输入后,请确保将pyaudio配置为使用正确的声卡索引和声道数(我的声道是单声道音频输入,不是立体声)。

pyaudio.PyAudio().open(format=pyaudio.paInt16,
                        rate=44100,
                        channels=1, #change this to what your sound card supports
                        input_device_index=1, #change this your input sound card index
                        input=True,
                        output=False,
                        frames_per_buffer=1024)

您可以使用pyaudio.PyAudio的实例方法get_device_countget_device_info_by_index来获取索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM