1

我有 2 个声卡,我必须从中获取输入、处理它并馈送到第三张卡的输出。我认为sounddevicelib 是为此目的的最佳选择,因为它直接与使用起来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)

但我自己无法解决这个问题。

提前致谢

4

1 回答 1

1

不可能有具有多个输入或多个输出设备的单个流,另请参见https://stackoverflow.com/a/39919494/

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

您显示的错误发生是因为您使用的是sd.Stream具有输入和输出的 。指定channels=2意味着输入输出通道的数量都是2。但您只是提供了一个设备device=1,它没有任何输入通道,导致给定的错误消息。

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

device=[0, 1]
于 2018-01-29T13:11:56.457 回答