You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:09:03