英特尔公司 Comet Lake PCH cAVS - Realtek ALC245 - 使用 SOF。这只是我笔记的一个简要整理版本。
我希望有人遇到过这个问题并能提供帮助,我一直在努力寻找答案,但毫无进展。我搜索了所有答案,但都没有找到与我的问题真正匹配的内容。
使用 GNOME 控制中心声音测试时,两侧的音频都会延迟/中断,例如,我会听到“t left”或“front”。查看输出栏,我可以看到正在播放的完整音频。扬声器上的音频输出不正确。
speaker-test
-> 音频听起来正常,报告播放左前声道,但音频从两个扬声器中发出
speaker-test -c2
-> 左前声道以固定时间间隔 (1 秒开,1 秒关) 跳过音频,右前声道以固定时间间隔 (1 秒开,1 秒关) 跳过音频
speaker-test -c2 -s1
-> 左前置声道的左扬声器会定期跳音(1 秒开,1 秒关)
播放视频或游戏时,音频听起来正确,将平衡移到左侧,音频会跳过,将音频移到右侧,音频会跳过。只要平衡居中,音频播放正确。但是,音频开始有延迟,这在 Minecraft 中很明显。如果播放的声音为 0(根据调试),并且我发出声音,则声音是无声的。如果我不延迟并继续发出声音(例如挖矿),声音就会开始。如果我等待 10 秒,行为会重复。
- 尝试了 Pulseaudio 和 Pipewire,都表现出了这种行为
- 尝试了多个 Linux 发行版(ArchCraft、Axyl、Pop!_OS、Ubuntu、Manjaro),问题如下
- 对于 Pop!_OS 21.10 和 Ubuntu 21.10,内核分别为 5.15 和 5.13,均表现出此行为。Axyl 在 5.16 系列中拥有最先进的内核,问题仍然存在
- 完全关闭 Pulseaudio(并确认它没有运行),并直接使用 ALSA 进行扬声器测试,问题仍然存在
- 由于我从公式中去掉了 Pulseaudio,注释掉 module-suspend-on-idle 并没有帮助
- 禁用省电没有帮助
- 笔记本电脑配有 Bang & Olufsen 扬声器设置(不确定这是否真的很重要)
- 音频在 Windows 10 中正常运行
curl https://gitlab.freedesktop.org/pulseaudio/pulseaudio/raw/master/src/utils/pa-info?inline=false | bash | nc termbin.com 9999
---->的输出Termbin 链接
> lspci -v
00:1f.3 Multimedia audio controller: Intel Corporation Comet Lake PCH cAVS
Subsystem: Hewlett-Packard Company Comet Lake PCH cAVS
Flags: bus master, fast devsel, latency 32, IRQ 179, IOMMU group 14
Memory at 6044110000 (64-bit, non-prefetchable) [size=16K]
Memory at 6044000000 (64-bit, non-prefetchable) [size=1M]
Capabilities: [50] Power Management version 3
Capabilities: [80] Vendor Specific Information: Len=14 <?>
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Kernel driver in use: sof-audio-pci-intel-cnl
Kernel modules: snd_hda_intel, snd_sof_pci_intel_cnl
01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1)
Subsystem: Hewlett-Packard Company TU116 High Definition Audio Controller
Flags: bus master, fast devsel, latency 0, IRQ 17, IOMMU group 1
Memory at 78080000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
> cat /proc/asound/cards
0 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0x78080000 irq 17
1 [sofhdadsp ]: sof-hda-dsp - sof-hda-dsp
HP-OMENLaptop15_ek0xxx--878A
> dmesg | grep snd
[ 34.251943] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[ 34.251963] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[ 34.252033] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[ 34.252125] snd_hda_intel 0000:01:00.1: Disabling MSI
[ 34.252130] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
[ 34.342178] snd_hda_intel 0000:01:00.1: bound 0000:01:00.0 (ops nv50_audio_component_bind_ops [nouveau])
[ 35.645366] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC245: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[ 35.645368] snd_hda_codec_realtek ehdaudio0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 35.645369] snd_hda_codec_realtek ehdaudio0D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[ 35.645370] snd_hda_codec_realtek ehdaudio0D0: mono: mono_out=0x0
[ 35.645371] snd_hda_codec_realtek ehdaudio0D0: inputs:
[ 35.645372] snd_hda_codec_realtek ehdaudio0D0: Mic=0x19
[ 35.691746] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten
[ 35.691749] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten
> dmesg | grep sof
[ 35.054556] sof-audio-pci-intel-cnl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[ 35.054574] sof-audio-pci-intel-cnl 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[ 35.054586] sof-audio-pci-intel-cnl 0000:00:1f.3: enabling device (0000 -> 0002)
[ 35.054722] sof-audio-pci-intel-cnl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[ 35.054775] sof-audio-pci-intel-cnl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 35.061729] sof-audio-pci-intel-cnl 0000:00:1f.3: use msi interrupt mode
[ 35.355175] sof-audio-pci-intel-cnl 0000:00:1f.3: hda codecs found, mask 5
[ 35.355177] sof-audio-pci-intel-cnl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[ 35.355181] sof-audio-pci-intel-cnl 0000:00:1f.3: DMICs detected in NHLT tables: 2
[ 35.582605] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware info: version 1:6:0-18fab
[ 35.582607] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware: ABI 3:17:0 Kernel ABI 3:18:0
[ 35.608445] sof-audio-pci-intel-cnl 0000:00:1f.3: Topology: ABI 3:17:0 Kernel ABI 3:18:0
[ 35.625794] sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
[ 35.703633] input: sof-hda-dsp Mic as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card1/input30
[ 35.703679] input: sof-hda-dsp Headphone as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card1/input31
[ 35.703702] input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card1/input32
[ 35.703722] input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card1/input33
[ 35.703762] input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card1/input34
答案1
我有同样的笔记本电脑型号,在播放有声读物/播客或收听任何与语音相关的内容时,也遇到了同样的音频剪辑问题。确实很烦人。尝试了网上建议的所有解决方案,但目前没有结果。
不过,我找到了一个简单的解决方案。只需播放背景声音,例如低音量的平静环境歌曲。
似乎单词之间的语音停顿导致音频子系统过早停止,然后在下一个单词的开头再次启动,稍有延迟,导致单词被截断。通过播放背景音乐,即使音量很小,音频子系统也会保持持续活动/打开。祝你好运。
答案2
安装 PulseAudio 的音量控制
PulseAudio 是 Ubuntu 以及其他一些系统的默认声音服务。它是开源的,通常很可靠,可与 ALSA 和 OSS 驱动程序配合使用,以确保系统生成的声音信号能够传送到扬声器。
但是,虽然应用程序和桌面环境都带有自己的 PulseAudio 音量控制,但它并不是那么精细,不允许您单独控制每个播放流。Pavucontrol 让您可以更好地控制 PC 上的每个音频设备,因此您可以尝试使用这些滑块来确保您的扬声器或耳机音量设置为应有的水平。
要安装 pavucontrol,请打开终端并输入以下命令:
pulseaudio --start
sudo apt install pavucontrol
之后,从终端运行 pavucontrol,或者在桌面环境的启动菜单中查找“PulseAudio Volume Control”。转到“Output Devices”选项卡,确保选择了默认扬声器。
重新加载 ALSA
如果声音问题仍然存在,您可以尝试的另一个方法是重新加载 ALSA。为此,请在终端中使用以下命令:
sudo alsa force-reload
输出如下图所示。
完成后,如果你仍然无法让声音正常工作,请尝试
pulseaudio -k && pulseaudio -D
如果 pulseaudio 没有注册模块已重新加载,则重新加载 ALSA 后可能会遇到麻烦。
如果仍然没有收到音频,请直接尝试这个一次性 ALSA 命令:
alsactl restore