我试过
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
列出所有音频设备?
答案 0 :(得分:2)
我已经创建了(发布此问题后一段时间)Python的sounddevice模块,其中包括its own DLLs和ASIO支持(以及所有其他主机API)。 它可以安装:
pip install sounddevice --user
之后,您可以列出所有设备:
python -m sounddevice
当然你也可以在Python中做到这一点:
import sounddevice as sd
sd.query_devices()
答案 1 :(得分:1)
我认为你的期望是合理的。枚举PortAudio设备的等效C代码将为您提供所有可用设备。有几件事可能是错的:
您的构建的PyAudio尚未使用ASIO支持进行编译。 PortAudio将枚举已在编译时配置/编译的本机主机API的设备。
你有一个64位版本的Python / PyAudio,你的ASIO设备驱动程序是32位,反之亦然(64位ASIO驱动程序和32位Python)。
正如多媒体迈克建议的那样,你可以通过枚举来自C的PA设备来消除PyAudio .PortAudio分布中的pa_devs.c程序就是这样做的。
答案 2 :(得分:-2)
我认为问题可能出在底层的PortAudio库中。你有(或者你能在C中编写)一个访问PortAudio库并尝试执行同一个列表的简单实用程序吗?
此外,谷歌搜索' portaudio asio'揭示this tidbit from the official PortAudio docs:
有些情况下PortAudio受到的功能限制 底层本机音频API ... ASIO SDK只允许一个设备 一次打开,所以PortAudio / ASIO目前不支持开放 同时使用多个ASIO设备。