声音设备上的多个输入
Multiple inputs on 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)
但我自己无法解决这个问题。
提前致谢
单个流不可能有多个输入或多个输出设备,另请参阅 。
但是,您可以在 macOS 音频设置中组合两个设备(查找 "aggregate device")。
您显示的错误是因为您使用的是 sd.Stream
,它既有输入又有输出。指定 channels=2
意味着输入 和 输出通道的数量是 两个 2. 但是你只是提供一个设备 device=1
,它没有任何输入通道,导致给定的错误消息。
对于 CoreAudio,您通常可以只使用默认设备,但如果您想明确指定设备编号,则必须指定正确的输入和输出设备,如下所示:
device=[0, 1]
我有 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)
但我自己无法解决这个问题。
提前致谢
单个流不可能有多个输入或多个输出设备,另请参阅
但是,您可以在 macOS 音频设置中组合两个设备(查找 "aggregate device")。
您显示的错误是因为您使用的是 sd.Stream
,它既有输入又有输出。指定 channels=2
意味着输入 和 输出通道的数量是 两个 2. 但是你只是提供一个设备 device=1
,它没有任何输入通道,导致给定的错误消息。
对于 CoreAudio,您通常可以只使用默认设备,但如果您想明确指定设备编号,则必须指定正确的输入和输出设备,如下所示:
device=[0, 1]