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

WSL环境下Python sounddevice录音报错PortAudioError:找不到设备

问题

在WSL环境中使用sounddevice录制音频时,触发错误:sounddevice.PortAudioError: Error querying device -1。

已完成以下操作:

  • 按照sounddevice安装指南安装了libportaudio2、CFFI和numpy
  • 遵循PortAudio说明编译了PortAudio
  • 通过usbipd将USB麦克风(Logi USB Headset H340)连接到WSL,PowerShell中usbipd wsl list和WSL bash中sudo usbip port均显示设备已成功连接

但调用sd.rec时仍报错,运行python3 -m sounddevice或sd.query_devices()均无设备返回结果。

解决方法
  • 检查WSL版本:运行wsl --list --verbose确认使用的是WSL 2,WSL 1对USB设备支持有限,必须切换到WSL 2
  • 验证底层音频工具是否识别设备:在WSL中运行arecord -l或pacmd list-sources(需先安装PulseAudio),如果这两个命令也找不到设备,说明硬件识别存在问题,需优先排查USB设备在WSL中的挂载状态
  • 重新编译PortAudio并启用ALSA支持:WSL 2依赖ALSA层实现音频,编译时需指定--with-alsa参数,步骤如下:
    ./configure --with-alsa
    make
    sudo make install
    sudo ldconfig
    
  • 确认sounddevice绑定的PortAudio库:运行python3 -c "import sounddevice; print(sounddevice._libname)",确保路径指向你编译安装的PortAudio库,而非系统默认的libportaudio2(可能缺少USB支持)
  • 手动指定设备:如果底层工具能找到设备但sounddevice识别不到,可尝试用arecord -l查到的设备ID(如hw:1,0),在代码中手动指定设备:
    import sounddevice as sd
    sd.default.device = 0  # 替换为实际设备索引或设备名称
    
  • 重启WSL服务:在PowerShell中执行wsl --shutdown,再重新启动WSL,确保USB设备挂载状态生效

内容的提问来源于stack exchange,提问作者amash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:30:05