Presonus 1810c ASIO多通道录音时PyAudio无法识别全部输入设备如何解决
问题原因
你当前的问题核心有两点:
- 仅遍历了索引为0的Host API(一般为Windows默认的MME/DirectSound接口),该接口不支持枚举ASIO协议的多通道输入设备
- 默认通过pip安装的PyAudio依赖的PortAudio库未开启ASIO编译支持,无法识别ASIO设备的全通道配置
解决步骤
1. 修正设备遍历逻辑
先遍历所有Host API找到ASIO对应的接口,再枚举该接口下的输入设备,修改后参考代码:
import pyaudio p = pyaudio.PyAudio() # 遍历所有Host API for host_api_idx in range(p.get_host_api_count()): host_api_info = p.get_host_api_info_by_index(host_api_idx) # 筛选ASIO接口 if 'ASIO' in host_api_info['name']: print(f"找到ASIO Host API,索引: {host_api_idx}, 名称: {host_api_info['name']}") # 枚举该API下的所有输入设备 for dev_idx in range(host_api_info['deviceCount']): dev_info = p.get_device_info_by_host_api_device_index(host_api_idx, dev_idx) if dev_info['maxInputChannels'] > 0: print(f"输入设备id {dev_idx} - 名称: {dev_info['name']}, 最大输入通道数: {dev_info['maxInputChannels']}") p.terminate()
如果运行上述代码未找到ASIO Host API,说明你的PyAudio没有ASIO支持,执行下一步。
2. 安装带ASIO支持的PyAudio
默认pip安装的PyAudio不带ASIO编译支持,需要替换为开启ASIO支持的版本:
- 卸载现有PyAudio:
pip uninstall pyaudio - 下载对应Python版本、带ASIO支持的PyAudio预编译whl包安装,或者自行编译PortAudio时开启ASIO支持后重新编译PyAudio
3. 确认硬件通道配置
打开Presonus官方的Universal Control控制面板,确认你需要使用的3个麦克风输入通道未被禁用,且ASIO通道映射配置正确,无通道隐藏设置。
注意:测试前请关闭占用ASIO设备的DAW软件,ASIO协议默认独占设备,被占用时无法被其他程序枚举或调用
4. 替代方案(可选)
如果PyAudio配置ASIO遇到问题,可以换用sounddevice库,该库对ASIO多通道设备的适配性更好,安装后可直接通过以下代码枚举ASIO设备:
import sounddevice as sd # 打印所有设备列表,筛选ASIO设备 print(sd.query_devices()) # 查看ASIO主机API信息 print(sd.query_hostapis())
内容的提问来源于stack exchange,提问作者Burnt Umber
相关产品推荐
相关产品推荐

