python-sounddevice不会在音频接口(Windows)上检测到所有输入通道

时间:2019-07-01 09:18:15

标签: python-3.x windows audio python-sounddevice

我正在使用Focusrite Scarlett 18i20音频接口,在这里我需要至少使用其4个输入来记录脉冲响应。我在Windows 10 PC上运行,使用python(anaconda)和sounddevice。

当我使用sounddevice.query_devices()时,它将设备列为 “ 1个Focusrite USB(Focusrite USB Au,MME(2输入,0输出)”。

我的问题是该设备实际上有8个模拟输入通道,而我至少需要4个。输出也是如此,它看到2,但应该是8。如何使声音设备识别它们?这是驱动程序问题吗?

devices in matlab and sounddevice

1 个答案:

答案 0 :(得分:0)

由于Windows 10上有大量可以在Scarlett和Python之间运行的音频驱动程序,因此您必须选择更合适的驱动程序(ASIO在Windows上运行良好,可以下载here)。

下载并安装后,sounddevice.query_devices()应该返回几个包含Scarlett的字符串,每个字符串具有不同的驱动程序。

然后,您只需要启动流并选择所有频道(我的频道是6i6,所以只有6个频道):

    def run(self):
        try:
          with sd.Stream(callback=self.read_stream, {'device': "Focusrite USB ASIO", 'channels': 6}, samplerate=44100):
                    sd.sleep(2147483647)
        except ValueError:
            print("Focusrite disconnected")