记一次解决 Tumbleweed pipewire 爆音的问题

升级到 Tumbleweed 之后,陆陆续续发现一些问题。“浑身着火” 嘛~

今天要说的是爆音的问题。升级之后看视频,听音乐的时候感觉有很明显的爆音,就是那种高频失真,吱吱嗡嗡的感觉。声音大的时候更加明显,但是降低音量其实也还有。就是感觉伴随着正常的声音,永远同时有一个高频的声音存在,而这个高频又超出了笔记本的小喇叭的表现范围那样,表现成吱吱嗡嗡的声音。

以前用 15.2 的时候觉得笔记本的声音还好,没什么特别异常。

查了一下,发现音频相关软件又变了,最早用 Debian 的时候是 alsa, 后来用的比较新的发现版是 pulseaudio, Tumbleweed 的原来变成了 pipewire.(一开始见到这个名字的包还以为是干甚么类似雷电,火线之类的)

然后我尝试用 yast 里的声音设定来设置一下声卡。(噗,然后发现 yast 声音已经没有安装了。即使在 openSUSE software 里设法装上了,也发现已经无法使用了。)

中文搜索几乎搜索不到甚么能解决问题的信息。只有一些关于 alsa, jack, pulseaudio, pipewire 演进历史的文章。

后来用英文搜索, pipewire crackling 之类的关键字,终于在 Manjaro 的论坛找到了一个长帖子。

里面关键的一点是说采样率的事情。结合以前做过一些音频处理的事, 我大概确认了这就是关键点。

大部分我们电脑上的音频文件 ,比如 cd 转录的音频, 音乐网站上下载的音频的采样率都是 44.1kHz, 视频网站的音频也是 44.1kHz.

而 pipewire hardcode 了采样率是 48kHz. 大概是因为笔记本的小喇叭硬件上不支持 48kHz, 所以就会发生充采样(或者某种意义上的 mismatch, 所以导致出现奇怪的爆音。(而我的蓝牙耳机并不会有这个问题)

接下来的解决方式就比较简单了。首先把 /usr/share/pipewire/pipewire.conf 复制一份到自己的个人配置目录 ~/.config/pipewire/pipewire.conf. 然后修改其中关于采样率的部分。(最好不要直接去改根目录下的配置文件,升级可能会覆盖)

改成下面这样

把默认采样率改为 44100Hz, 并且在允许的采样率中 prepend 44100Hz.

重启之后,问题解决。再也不会有那种爆音了。(可能问题还是因为我的笔记本硬件不支持 48kHz 的原因吧。然而 pipewire, emmmmm…)

2赞

悲报: 还是有问题。在播放某些音频的时候还是出现了异常的爆音

1赞

后续来了。拆开笔记本扬声器发现胶盆裂了。买了个新的换上了。

但是我很好奇,之前用 15.2 上的 pulseaudio 那么久笔记本的扬声器都没问题。换了 Tumbleweed 用上了 pipewire 之后没多久就出现这样的事情。

是扬声器的胶盆阳寿刚好尽了呢还是 pipewire 的某些不合适的配置加速了它的衰竭? 我没有证据, 也无法做对比实验了。但是软件导致硬件损坏的事情历史上也不是没有。

我并没有任何表示 pipewire 不好的意思,只是开始对它有点怀疑了。

1赞

可能是扬声器到了临界点,采样率不匹配导致的 “杂音” 压上了最后一根稻草。