英特爾公司 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
---->術語箱連結
> 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」。轉到“輸出裝置”標籤並確保選擇預設揚聲器。
重新加載 ALSA
如果聲音問題仍然存在,您可以嘗試的另一件事是重新載入 ALSA。為此,請在終端機中使用以下命令:
sudo alsa force-reload
輸出如下圖所示。
完成後,如果聲音仍然無法正常工作,請嘗試
pulseaudio -k && pulseaudio -D
如果pulseaudio 沒有註冊模組已重新載入,則重新載入 ALSA 後您可能會遇到問題。
如果您仍然沒有收到音頻,請直接嘗試以下一次性 ALSA 命令:
alsactl restore