使用Python的pyaudio列出所有音频设备(portaudio绑定)

Bas*_*asj 8 python audio portaudio pyaudio

我试过了

import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
    print p.get_device_info_by_index(i)
Run Code Online (Sandbox Code Playgroud)

但我没有得到所有设备的完整列表:例如,我没有在此列表中获得ASIO设备.这很奇怪,因为portaudio应该给ASIO设备,对吧?

如何列出所有音频设备pyaudio

Mat*_*ias 6

我已经创建了(在这个问题发布后一段时间)Python的sounddevice模块,它包括它自己的具有 ASIO 支持的 DLL(以及所有其他主机 API)。它可以安装:

pip install sounddevice --user
Run Code Online (Sandbox Code Playgroud)

之后,您可以列出所有设备:

python -m sounddevice
Run Code Online (Sandbox Code Playgroud)

当然,您也可以在 Python 中执行此操作:

import sounddevice as sd
sd.query_devices()
Run Code Online (Sandbox Code Playgroud)


Mul*_*ike -2

我认为问题可能出在底层的 PortAudio 库中。您是否有(或者您可以用 C 语言编写)一个简单的实用程序来访问 PortAudio 库并尝试执行相同的列表?

另外,谷歌搜索“portaudio asio”揭示了PortAudio 官方文档中的这一花絮

在某些情况下,PortAudio 会受到底层本机音频 API 功能的限制...ASIO SDK 只允许一次打开一台设备,因此 PortAudio/ASIO 目前不支持同时打开多个 ASIO 设备。