我有2张声卡,我必须接收输入,处理它并馈送到第三张卡的输出。我假设sounddevice
lib是用于此目的的最佳选择,因为它直接适用于numpy
数组,这些数组非常适合使用。但是我现在遇到了两个问题:
1.我无法理解如何在一个流中连接来自不同卡的2个(以及更多)输入(或者可以打开多个流)
2.尝试使用预定义设备启动输出流时,出现错误:
def callback(indata, outdata, frames, time, status):
outdata[:, 1] = data
with sd.Stream(device = 1, channels=2, callback=callback):
print(' ')
sounddevice.PortAudioError: Error opening Stream: Invalid number of channels [PaErrorCode -9998]
我想那是因为MacBook上的Core Audio频道映射,它有这些音频配置:
0 Built-in Input, Core Audio (2 in, 0 out)
1 Built-in Output, Core Audio (0 in, 2 out)
但我不能自己打败这个问题。
提前致谢
答案 0 :(得分:1)
不可能有一个包含多个输入或多个输出设备的流,另请参阅https://stackoverflow.com/a/39919494/。
但是,您可以在macOS音频设置中组合两个设备(查找"聚合设备")。
您正在显示的错误是因为您使用的是sd.Stream
,它同时具有输入和输出。指定channels=2
表示输入和输出通道的数量都 2.但您只是提供了一个device=1
的设备, #39; t有任何输入通道,导致给定的错误信息。
使用CoreAudio,您通常可以使用默认设备,但如果要明确指定设备编号,则必须指定正确的输入和输出设备,如下所示:
device=[0, 1]