Python 音响设备的多输入输出通道接线

Python 音响设备的多输入输出通道接线,python,raspberry-pi,audio-streaming,pyaudio,Python,Raspberry Pi,Audio Streaming,Pyaudio,我正在尝试通过Raspberry Pi上的sounddevice模块和4个USB声卡制作输入输出对。我制作了两个有线频道,但从三个一直失败。理想情况下,我希望构建多达4个通道的真实流媒体(延迟并不重要) 我使用了callback和:,它似乎可以在两个通道中正常工作。请查找以下代码: 将sounddevice作为sd导入 def有线呼叫(indata、outdata、*数据): #sd.CallbackStop() outdata[:]=indata 使用sd.Stream(设备=0,通道=1,

我正在尝试通过Raspberry Pi上的sounddevice模块和4个USB声卡制作输入输出对。我制作了两个有线频道,但从三个一直失败。理想情况下,我希望构建多达4个通道的真实流媒体(延迟并不重要)

我使用了callback和:,它似乎可以在两个通道中正常工作。请查找以下代码:


将sounddevice作为sd导入
def有线呼叫(indata、outdata、*数据):
#sd.CallbackStop()
outdata[:]=indata
使用sd.Stream(设备=0,通道=1,回调=wirecall,samplerate=44100):
使用sd.Stream(设备=1,通道=1,回调=wirecall,samplerate=44100):
尽管如此:
响应=输入()
如果响应在(“”,'q','q'):
打破
这很好,但只要我再添加一个:它不起作用。这是树莓还是Sounddevice模块的限制?我也尝试了PyAudio,但结果相同

当我尝试打开下面3个流时,会出现错误消息

>>> with sd.Stream(device=3,channels=1,callback=wirecall,samplerate=44100):
...     with sd.Stream(device=1,channels=1,callback=wirecall,samplerate=44100):
...         with sd.Stream(device=2, channels=1,callback=wirecall,samplerate=44100):
...             while True:
...                 response=input()
...                 if response in ('', 'q', 'Q'):
...                     break
...
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "/home/pi/.local/lib/python2.7/site-packages/sounddevice.py", line 1662, in __init__
    **_remove_self(locals()))
  File "/home/pi/.local/lib/python2.7/site-packages/sounddevice.py", line 780, in __init__
    'Error opening {0}'.format(self.__class__.__name__))
  File "/home/pi/.local/lib/python2.7/site-packages/sounddevice.py", line 2570, in _check
    raise PortAudioError(errormsg, err, hosterror_info)
sounddevice.PortAudioError: Error opening Stream: Unanticipated host error [PaErrorCode -9999]: 'Broken pipe' [ALSA error -32]
>>>
>>使用sd.Stream(设备=3,通道=1,回调=wirecall,samplerate=44100):
...     使用sd.Stream(设备=1,通道=1,回调=wirecall,samplerate=44100):
...         使用sd.Stream(设备=2,通道=1,回调=wirecall,samplerate=44100):
...             尽管如此:
...                 响应=输入()
...                 如果响应在(“”,'q','q'):
...                     打破
...
回溯(最近一次呼叫最后一次):
文件“”,第3行,在
文件“/home/pi/.local/lib/python2.7/site packages/sounddevice.py”,第1662行,在__
**_删除_self(locals()))
文件“/home/pi/.local/lib/python2.7/site packages/sounddevice.py”,第780行,在__
“打开{0}时出错。格式(self.\uuuuuu class.\uuuuuu name.\uuuuuu))
文件“/home/pi/.local/lib/python2.7/site packages/sounddevice.py”,第2570行,检查
引发端口错误(错误消息、错误、主机错误信息)
sounddevice.PortAudioError:打开流时出错:意外的主机错误[PaErrorCode-9999]:“断管”[ALSA错误-32]
>>>

你说的“它不工作”是什么意思?您是否收到错误消息,或者代码的预期行为与实际行为是什么?嗨,抱歉,我错过了。上面写着“管道破裂”[Alsa错误-32]。我会把它贴在帖子上。以防万一我尝试重新安装我的Rpi,但它发生了相同的情况。你说“它不工作”是什么意思?您是否收到错误消息,或者代码的预期行为与实际行为是什么?嗨,抱歉,我错过了。上面写着“管道破裂”[Alsa错误-32]。我会把它贴在帖子上。以防万一我尝试重新安装我的Rpi,但结果还是一样。