声音设备上的多个输入

时间:2018-01-27 06:12:11

标签: python audio python-sounddevice

我有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)

但我不能自己打败这个问题。

提前致谢

1 个答案:

答案 0 :(得分:1)

不可能有一个包含多个输入或多个输出设备的流,另请参阅https://stackoverflow.com/a/39919494/

但是,您可以在macOS音频设置中组合两个设备(查找"聚合设备")。

您正在显示的错误是因为您使用的是sd.Stream,它同时具有输入和输出。指定channels=2表示输入输出通道的数量 2.但您只是提供了一个device=1的设备, #39; t有任何输入通道,导致给定的错误信息。

使用CoreAudio,您通常可以使用默认设备,但如果要明确指定设备编号,则必须指定正确的输入和输出设备,如下所示:

device=[0, 1]