pw-dump | python3 -c "
import sys,json
data=json.load(sys.stdin)
for n in data:
p=n.get('info',{}).get('props',{})
if 'Mic1' in p.get('node.name',''):
for pp in n.get('info',{}).get('params',{}).get('Props',[]):
cv=pp.get('channelVolumes')
if cv: print(f'channelVolumes: {cv}')
"
# 输出:channelVolumes: [0.287175, 0.287175] ← 异常!只有 28.7%
腾讯会议麦克风无声 PipeWire音量bug修复
📌 问题环境
🔍 问题描述
腾讯会议设置中麦克风列表能正常检测到设备(Digital Microphone / Stereo Microphone),但点击"测试麦克风"后完全无声,无法正常收音。其他应用(如系统录音机)也存在同样的问题。
🔎 排查过程
第一步:确认硬件正常
直接绕过 PipeWire,通过 ALSA 设备录音测试:
结论:声卡硬件和驱动层没有问题。
第二步:发现 PipeWire 音量异常(核心问题)
通过
pw-dump检查 PipeWire 节点属性,发现关键线索:PipeWire 节点内部的
channelVolumes被设为 28.7%(约 -10.8 dB),而 PulseAudio 层显示的音量是 100%。 这意味着 PipeWire 和 PulseAudio 之间存在音量映射不一致的 bug。直接对比音量差异:
第三步:发现腾讯会议设备选择问题
监控腾讯会议的录音流:
腾讯会议的 VoiceEngine 选择了 Mic2(Stereo Microphone / 模拟麦克风),这是 3.5mm 外接麦克风口,没有插入外接麦克风时信号极弱。实际工作的内置麦克风是 Mic1(Digital Microphone / DMIC)。
腾讯会议通过 PulseAudio 的
module-stream-restore记住了错误的设备偏好,每次重启都继续使用错误的设备。第四步:发现 ALSA 默认增益过低
SOF 驱动的默认 ALSA 混音器设置对麦克风增益过于保守。
✅ 解决方案
修复 1:调整 ALSA 增益
修复 2:修正 PipeWire channelVolumes
修复 3:腾讯会议手动选择正确麦克风
修复 4:持久化为开机自启服务
ALSA 增益恢复(system 级):
PipeWire 音量恢复(user 级):
💡 对 Deepin 团队的建议
1. PipeWire/PulseAudio 音量映射 Bug(优先级:高)
PipeWire 的
channelVolumes与 PulseAudio 的source volume存在不一致。PulseAudio 层显示 100% 时,PipeWire 层实际只有 28.7%,导致麦克风信号被大幅衰减。建议:
libpulsevia PipeWire)中 source volume → channelVolumes 的映射逻辑skl_hda_dsp_generic驱动下的音量同步问题channelVolumes重置的报告2. SOF 驱动默认增益过低(优先级:中)
SOF HDA DSP 驱动的默认 ALSA 混音器配置对麦克风增益非常保守(Mic Boost=0dB),新安装的系统麦克风灵敏度极低。
建议:
3. SOF 拓扑文件符号链接问题(优先级:中)
2 声道拓扑被符号链接到 1 声道拓扑,可能导致部分机型的 DMIC 配置不正确。
建议:
4. PipeWire channelVolumes 持久化(优先级:低)
PipeWire 节点的
channelVolumes没有用户可配置的持久化机制,每次重启或 PipeWire 服务重启后都会重置。建议:
channelVolumes的默认值配置项5. 腾讯会议兼容性(优先级:低)
腾讯会议 Linux 版的
libaudio_module.so内部音频模块在 PipeWire 环境下存在设备选择和音频捕获的兼容性问题。建议:
📎 相关命令速查
本文档基于 2026-06-11 在小米 RedmiBook 14 2025 + Deepin V23 上的实测经验整理。
如有类似问题,欢迎回帖讨论。