Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取IOError:[Errno通道数无效]-9998在Raspberry Pi上使用带PyAudio的麦克风时_Python_Raspberry Pi_Raspbian_Raspberry Pi2_Pyaudio - Fatal编程技术网

Python 获取IOError:[Errno通道数无效]-9998在Raspberry Pi上使用带PyAudio的麦克风时

Python 获取IOError:[Errno通道数无效]-9998在Raspberry Pi上使用带PyAudio的麦克风时,python,raspberry-pi,raspbian,raspberry-pi2,pyaudio,Python,Raspberry Pi,Raspbian,Raspberry Pi2,Pyaudio,各位,坏消息 我试图通过PyAudio在我的树莓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在我的树莓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时,我得到了一个错误。对于Python中使用PyAudio的所有程序,错误都是相同的:

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
pi@raspberrypi/usr/src/pyaudio/test$python record.py
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡。pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.side
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.hdmi
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.hdmi
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.modem
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡.pcm.modem
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡。pcm。电话线
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知pcm卡。pcm。电话线
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open)dmix插件仅支持播放流

Expression'parameters->channelCount您是否将声卡连接到Raspberry PI? 默认情况下,您可以获得音频输出,但不能获得音频输入。 你可以通过运行来检查

alsamixer
如果按[code>F6
,您将看到列出的声卡。 如果按
F4
,您应该会看到捕获设备(如果有)

我用易趣上便宜的USB声卡进行测试

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


您可以使用pyaudio.pyaudio的实例方法
get\u device\u count
get\u device\u info\u by\u index
来获取索引。

您是否将声卡连接到树莓PI? 默认情况下,您可以获得音频输出,但不能获得音频输入。 你可以通过运行来检查

alsamixer
如果按[code>F6,您将看到列出的声卡。 如果按
F4
,您应该会看到捕获设备(如果有)

我用易趣上便宜的USB声卡进行测试

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


你可以使用pyaudio.pyaudio的实例方法
get_device\u count
get_device\u info\u by_index
来获取索引。

你的pyaudio代码在哪里?…需要查看它来查看bug在哪里…Hi@KhalilAmmour-žعو,我正在使用pyaudio test文件夹中的test record.py test。我在这里发布代码:我想PyAudio不认识我的USB声卡。你的RPI升级到最新版本了吗?是的,我的RPI今天升级了@Khalilamour-在
/etc/modprobe.d/alsa base.conf
文件中将USB声卡设置为默认值吗?这里的Python代码在哪里?…需要查看它才能看到错误在哪里…嗨@Khalilamour-在PyAudio的test文件夹中使用test record.py。我在这里发布代码:我想PyAudio不认识我的USB声卡。你的RPI升级到最新版本了吗?是的,我的RPI今天升级了@KhalilAmmour-您是否在
/etc/modprobe.d/alsa base.conf
文件中将USB声卡设置为默认值?非常感谢@george profenza!我现在可以用我的RPI通过pyaudio录制声音。为什么只有当
频道=1
时它才起作用?这是否意味着我的USB声卡不支持立体声?看起来,我的也不支持。您可以通过在
alsamixer
中选择您的卡并转到
Capture
,或者使用带有pyaudio的
get_device_info_by_index
来查看它是单声道还是立体声,pyaudio将打印设备支持的频道数:
pa=pyaudio.pyaudio()用于x范围内的x(0,pa.get_device_count()):打印pa.get_device_info_index(x) 
(请参阅
MaxInputChannel
属性)最后,我的USB声卡只有一个输入通道。非常感谢您的回答和您的时间。@george Profenzat非常感谢@george profenza!我现在可以用我的RPI通过pyaudio录制声音。为什么只有当
channels=1
时它才起作用?这是否意味着我的USB声卡不支持立体声?看起来,我的没有它是单声道还是立体声。你可以在
alsamixer
中选择你的卡并进入
Capture
,或者使用
get\u device\u info\u by\u index
和pyaudio一起使用,pyaudio将打印设备支持的频道数:
pa=pyaudio.pyaudio(),用于xrange(0,pa.get\u device\u count()):print pa.get\u device\u info\u by\u index(x)
(请参阅
maxInputChannels
属性)最后,我的USB声卡只有一个输入通道。非常感谢您的回答和时间。@george profenza