当前位置: 首页 > news >正文

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

出现问题的状态:

  • 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的依赖有问题,重新编译安装依赖库,最终问题得以解决

相关文章:

  • Docker开发工具安装大合集
  • 如何撰写专业技术书籍的序言?——完整指南
  • FreeRTOS概述
  • SpringBoot 接入 豆包 火山方舟大模型
  • 共享内存的原理和创建
  • #函数探幽
  • 《深度解析DeepSeek-M8:量子经典融合,重塑计算能效格局》
  • Zemax 中的 CAD 文件性能比较
  • LeetCode hot 100—爬楼梯
  • Android 线程池实战指南:高效管理多线程任务
  • leetcode日记(91)二叉树的最大深度
  • E1-106.租车骑绿道(贪心)
  • PDF文件中的颜色是什么原理?
  • 拉取gitlab项目时出现500的错误的权限问题
  • vue3通过render函数实现一个菜单下拉框
  • PIMPL模式
  • 深入理解 GPU 渲染加速与合成层(Composite Layers)
  • 008-生成不重复9位随机数
  • C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解
  • 分布式数据库OceanBase
  • 71岁导演詹姆斯・弗雷病逝,曾执导《纸牌屋》、麦当娜MV
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%
  • 105岁八路军老战士、抗美援朝老战士谭克煜逝世
  • 中国人民银行:5月8日起降息,15日起降准
  • 体坛联播|国米淘汰巴萨晋级欧冠决赛,申花击败梅州避免连败
  • 一周人物|何子彦任职光州双年展,陈意心讲述五原路往事