我试过
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
print p.get_device_info_by_index(i)
但是我没有得到所有设备的完整列表:例如,在这个列表中,我没有得到ASIO设备。这很奇怪,因为portaudio
也应该提供ASIO设备,对吗?
我如何使用pyaudio
列出所有音频设备?
我试过
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
print p.get_device_info_by_index(i)
但是我没有得到所有设备的完整列表:例如,在这个列表中,我没有得到ASIO设备。这很奇怪,因为portaudio
也应该提供ASIO设备,对吗?
我如何使用pyaudio
列出所有音频设备?
这个问题发布后一段时间,我创建了一个名为 sounddevice 的Python模块,其中包括支持ASIO(和其他主机API)的DLLs。 可以使用以下命令进行安装:
pip install sounddevice --user
接下来,您可以使用以下命令列出所有设备:
python -m sounddevice
import sounddevice as sd
sd.query_devices()
您的PyAudio构建未编译ASIO支持。 PortAudio只会枚举在编译时配置/编译的本机主机API的设备。
您的Python / PyAudio是64位版本,而您的ASIO设备驱动程序是32位的,或者反之亦然(64位ASIO驱动程序和32位Python)。
我认为问题可能出在底层的PortAudio库中。您是否有(或者能否编写一个C语言的简单实用程序),以访问PortAudio库并尝试执行相同的列表操作?
此外,谷歌搜索“portaudio asio”会显示来自官方PortAudio文档的这个提示:
有些情况下,PortAudio受到底层本地音频API功能的限制... ASIO SDK只允许同时打开一个设备,因此PortAudio/ASIO目前不支持同时打开多个ASIO设备。
sounddevice
模块也使用 PortAudio,它可以找到正确的设备。 - JakeD