最近在使用Ubuntu,但是又想使用windows。就装了双系统,其他什么都好就是Ubuntu下音质非常恶心,高音特别尖、低音几乎没有,就像机器人的声色。我这“木头耳朵”都听得非常别扭。

如果你也遇到了我上面的问题,可以看看这篇文章。
环境:

  • 联想笔记本yoga16s (2023),2023以之后的电脑都可以参考这篇文章。
  • Ubuntu24
  • 使用的是pipwrite 音频框架
  • 如果电脑有多张声卡也可以试试这个办法。(不确定)
造成这种现象的原因
  • 初步怀疑是Ubuntu没有正确初始化声卡状态或固件,这点在Intel HD Audio / Realtek 中很常见。
  • 如果是多张声卡的话,有可能是声卡同时启动冲突造成的。

📄 修改配置

/etc/modprobe.d/alsa-base.conf
1
2
3
4
# 新增如下三条配置
options snd_hda_intel power_save=0
options snd_hda_intel probe_mask=1
options snd_hda_intel enable=1 index=0
ps:

建议修改/etc/modprobe.d/alsa-base.conf之前先备份

🔓 配置说明

options snd_hda_intel power_save=0

  • 作用:禁用声卡的节能(power saving)功能。
  • 说明:默认情况下,snd_hda_intel 模块可能在声卡闲置几秒后进入省电状态。这会导致某些硬件在恢复时发出爆音或有延迟。
  • 设置为 0:表示禁用省电,声卡始终保持活动状态。

options snd_hda_intel probe_mask=1

  • 作用:控制驱动在探测声卡时跳过哪些设备。
  • 说明:probe_mask 是一个位掩码(bitmask),用来屏蔽某些声卡芯片的探测。这个参数主要用于多声卡系统,或者当某些声卡在探测时引发问题时。
  • 值为 1:只探测第一个声卡,跳过后续声卡(这取决于硬件数量和顺序)。

options snd_hda_intel enable=1 index=0

  • 作用:enable=1:启用该声卡。
  • index=0:将该声卡分配为默认声卡(编号 0)。
  • 说明:用于强制系统使用某张声卡作为默认设备,在多声卡系统中特别有用。

🚀 测试是否可行

1
2
sudo update-initramfs -u #更新 initramfs配置
reboot
❓ 可能遇到的问题

可能开机之后啥声音都没有了

不用慌,此时我们重启一下pipwrite服务

  • 如果声音没恢复,或者声音恢复了但是音色还像之前一样。那你可以恢复 /etc/modprobe.d/alsa-base.conf文件了。这个方案不适合你,当作什么都没发生吧。
  • 如果声音恢复了,并且音色回复正常了,那么这个方案在你电脑上是可行的。 一定要继续看下去!!!

▶️ 配置开机自动执行重启pipwrite服务

~/.config/systemd/user/下创建一个自己的服务。我这里的服务名字取名为auto-pipewire-restart.service

~/.config/systemd/user/auto-pipewire-restart.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Restart PipeWire at login to fix audio
After=graphical-session.target pipewire.service

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'sleep 5 && systemctl --user restart pipewire pipewire-pulse'

[Install]
WantedBy=default.target

注意ExecStart配置中的休眠时间最好不要改短,不然可以会遇到重启pipewire和pipewire-pulse服务失败的情况

我这里只写服务脚本的内容,如何创建并开机自启服务,可以参考下面的文章。

如果对你有帮助可以关注本站哦!!!