修复ubuntu下找不到音频设备的问题

发布于:2025-03-11 ⋅ 阅读:(98) ⋅ 点赞:(0)

出现问题的状态:

  • ALSA 已正确识别到 ZOOM H2n 设备(card 1)
  • sounddevice 库(依赖 PortAudio)未能正确枚举设备

修复方法:

1. 强制 sounddevice 使用 ALSA 后端
默认情况下,sounddevice 可能尝试通过 PulseAudio 访问设备,导致冲突。需强制使用 ALSA:
方法一:通过环境变量设置
在运行 Python 脚本前设置环境变量:

export SDL_AUDIODRIVER=alsa
export AUDIODEV=hw:1,0  # 对应你的 H2n 设备
python your_script.py

方法二:在代码中指定设备名称
修改音频流初始化代码,直接使用 ALSA 设备名称:

# 将 DEVICE_INDEX 替换为 ALSA 设备名称(如 'hw:1,0')
stream = sd.InputStream(device='hw:1,0', samplerate=RATE, channels=1, blocksize=CHUNK)

tips:但是我的sounddevice显示设备始终为空,指定也没用
2.修复 PortAudio/ALSA 兼容性(成功修复)
sounddevice 依赖 PortAudio 的 ALSA 支持,需确保系统已正确配置:
步骤 1:安装 PortAudio 的 ALSA 开发库

sudo apt install libasound2-dev portaudio19-dev

步骤 2:重新编译 sounddevice 的 PortAudio 后端(最终修复步骤)
如果问题持续,可能需要手动编译 PortAudio:

# 下载 PortAudio 源码
wget http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz
tar -xvf pa_stable_v190700_20210406.tgz
cd portaudio

# 配置并编译(强制启用 ALSA)
./configure --with-alsa
make
sudo make install

# 重新安装 sounddevice
pip uninstall -y sounddevice
pip install sounddevice --no-binary :all:

总结

import sounddevice as sd
print(sd.query_devices())  # 打印所有设备及其索引

用上面的代码输出始终为空,但是系统中又可以通过命令行录制音频,就怀疑是sounddevice的依赖有问题,重新编译安装依赖库,最终问题得以解决


网站公告

今日签到

点亮在社区的每一天
去签到