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

使用sounddevice库时sd.query_devices()返回空列表,麦克风未被检测怎么办?

问题排查:sounddevice.query_devices()返回空列表但麦克风正常工作

以下是几种可能的原因及对应解决方法:

  • PortAudio库未编译ALSA支持(Linux系统)
    sounddevice依赖PortAudio库,而arecord直接调用ALSA驱动。若你的PortAudio版本未包含ALSA编译支持,就无法识别音频设备。解决步骤:

    1. 安装系统PortAudio开发包:
      sudo apt-get install portaudio19-dev  # Debian/Ubuntu系列
      # Fedora/RHEL系列:sudo dnf install portaudio-devel
      
    2. 强制重新安装sounddevice,使其基于系统PortAudio编译:
      pip install sounddevice --force-reinstall
      
  • 指定sounddevice使用ALSA后端
    有时sounddevice会默认选用不兼容的后端,可通过环境变量强制指定ALSA:

    export PYTHON_SOUNDDEVICE_BACKEND=alsa
    python your_script.py
    

    或在代码中提前设置(需在导入sounddevice前执行):

    import os
    os.environ['PYTHON_SOUNDDEVICE_BACKEND'] = 'alsa'
    import sounddevice as sd
    print(sd.query_devices())
    
  • 检查Python进程的音频权限
    确认运行Python的用户属于audio用户组:

    sudo usermod -aG audio $USER
    

    注销并重新登录后,再测试脚本。

  • 虚拟环境的依赖隔离问题
    若在虚拟环境中运行,sounddevice可能预装了不包含ALSA支持的PortAudio二进制包。按照第一个步骤,在虚拟环境内重新安装sounddevice(需先确保系统已装portaudio开发包)。

内容的提问来源于stack exchange,提问作者imtiaz ul Hassan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:39:55