透過針對性地調整 ALSA 設定來減少 Ubuntu 24.04 的音訊失真

首先降低播放增益,並檢查失真是否會影響所有應用程式。在 Ubuntu 24.04 桌面版中,PipeWire 通常位於應用程式和音訊裝置之間,因此只有當調整 ALSA 設定能夠解決根本原因時才有效:例如,使用混音器解決削波問題,使用 ALSA plugPCM 解決 ALSA 直接應用程式的格式不匹配問題,或者在節能模式下測試解決閒置後出現的咔嗒聲問題。切勿一開始就取代系統預設的 ALSA 設定。

這種失真是由單一應用程式引起的,還是由整個系統引起的?

這種區別決定了哪個設定是相關的。如果瀏覽器聲音不好,而係統發出警報,另一個播放器聲音卻很清晰,那麼問題就出在應用程式、其音訊串流等級或其選擇的輸出裝置上。任何應用程式的失真都可能源自於過高的播放增益、裝置或線纜問題、驅動程式問題或電源轉換。 ALSA 設定無法修復損壞的揚聲器或不良的實體連接。

  1. 使用相同的輸出設備,在兩個不同的應用程式中播放同一段短音訊。測試前請降低應用程式音量和 Ubuntu 的輸出電平;上游造成的數位訊號削波無法透過後續更改硬體混音器來修復。
  2. 開啟終端機並執行 `pipeWire` 和 ` pactl infopipeWire`wpctl status指令。如果安裝了這些工具,它們會顯示目前活動的音訊伺服器和可用的 PipeWire 物件。 Ubuntu 的桌面音訊測試計畫文件中將 PipeWire 指定為桌面音訊伺服器。如果您的安裝已進行自訂,請使用這些命令的輸出結果,而不是假設其音訊路徑。
  3. 運行aplay -l指令列出ALSA播放硬體。如果問題僅出現在某個耳機、揚聲器、底座或線纜上,請先重新插拔或更換該連接,然後再變更配置。

Ubuntu PipeWire 桌面測試計畫和Ubuntu 的爆音故障排除頁面對於目前桌面音訊路徑和基本實體檢查是有用的參考資料。

示例性終端輸出顯示 PipeWire 作為音訊伺服器,aplay 列出了播放設備。
示例性終端輸出顯示 PipeWire 作為音訊伺服器,aplay 列出了播放設備。

播放增益是否可能出現削波?

是的。如果聲音在高音量峰值處出現刺耳、嗡嗡作響或失真,請先降低增益,然後再進行其他設定。多個音量控制可能會疊加:應用程式音量、桌面輸出音量以及硬體音量控制(例如主音量、PCM 音量或揚聲器音量)。這些控制的名稱因音訊設備而異,因此請一次只更改一個相關的播放控制,然後再次聆聽。

  1. 如果需要,請使用以下命令安裝混音器實用程式sudo apt install alsa-utils。
  2. 運行alsamixer。按下F6選擇音效卡,然後F3顯示播放控制。使用方向鍵降低主音量、PCM 音量或揚聲器音量。 Ubuntu Noblealsamixer手冊中詳細介紹了這些音效卡和播放視圖。
  3. 同時將應用程式和桌面輸出音量調至適中水準。不要為了彌補音源音量過小而將音量控制調至 100% 以上;過度提升音量反而會加劇削波失真。Mic Boost此控制為錄製控制,並非播放修復程式。

每次調整後,請使用同一段音訊進行測試。如果降低某個硬體控制值可以消除失真,則應將該控制值保持在低於再次出現刺耳聲音的程度。沒有通用的“正確”百分比:聲卡控制和揚聲器靈敏度各不相同。

alsamixer 播放視圖範例,其中 Master、PCM 和 Speaker 控制均保持在最大值以下。
alsamixer 播放視圖範例,其中 Master、PCM 和 Speaker 控制均保持在最大值以下。

這個問題是否只影響直接開啟 ALSA 的應用程式?

在編輯預設裝置之前,請先嘗試使用 ALSA 的plug轉換功能。此插件可以轉換取樣格式、取樣率或聲道數,以符合硬體。這非常適合直接開啟 ALSA 的舊版程式或命令列程序,因為它們在處理原始硬體 PCM 時可能會發生故障或聲音異常。它不會改變普通 PipeWire 應用程式使用的路由。

找到卡號和設備號aplay -l。若要快速測試,請將您電腦上顯示的硬體 PCM 替換到此命令中:

speaker-test -D plughw:0,0 -c 2 -t sine -f 440 -l 1

plughw:0,0表示卡 0,設備 0;您的編號可能不同。如果此轉換測試正常而直接hw:0,0測試失敗,您可以在使用者設定檔中定義一個命名的 PCM ~/.asoundrc:

pcm.converted {
    type plug
    slave.pcm "hw:0,0"
}

替換hw:0,0為您識別的裝置。converted在支援 ALSA 的應用程式中選擇它,或使用 ALSA 進行測試speaker-test -D converted -c 2 -t sine -f 440 -l 1。編輯現有文件前請先備份~/.asoundrc。 ALSA 專案的PCM 插件參考文件描述了轉換過程,其asoundrc 指南記錄了使用者和系統配置。除非您明確打算取代所有 ALSA 用戶端的預設設置,否則請勿將此定義複製到pcm.!defaultALSA 設定檔;否則可能會幹擾其他裝置或桌面路由。

範例 ~/.asoundrc 程式碼片段,用於為選定的硬體設備定義命名的 ALSA 外掛程式 PCM。
範例 ~/.asoundrc 程式碼片段,用於為選定的硬體設備定義命名的 ALSA 外掛程式 PCM。

喀嚓聲是在靜音後出現,還是在恢復播放時出現?

這種模式可能指向 HDA 編解碼器的省電模式,而不是削波。僅當snd_hda_intel驅動程式和參數存在時才暫時測試此設定。首先檢查當前值:

cat /sys/module/snd_hda_intel/parameters/power_save

如果檔案存在,則暫時停用編解碼器的省電模式,直到重新啟動:

echo 0 | sudo tee /sys/module/snd_hda_intel/parameters/power_save

播放音頻,靜置足夠長的時間直到出現咔嗒聲,然後恢復播放。內核的ALSA 節能文件描述了 HDA 節能參數,並指出電源轉換可能會在某些硬體上產生可聽見的咔嗒聲。停用此設定可能會增加功耗;它並非解決連續播放期間失真問題的通用方法。

如果測試結果有效且您希望保持此效果,請建立/etc/modprobe.d/alsa-hda-powersave.conf包含該檔案的 sysfs 分割區options snd_hda_intel power_save=0,然後重新啟動系統。若要撤銷此操作,請刪除該檔案並重新啟動系統。如果 sysfs 路徑不存在,請跳過此步驟:驅動程式可能未載入,或者您的裝置可能正在使用其他驅動程式。請勿手動建立缺失的路徑。

示意性終端視圖顯示 HDA power_save 值從 10 變為 0,以進行臨時測試。
示意性終端視圖顯示 HDA power_save 值從 10 變為 0,以進行臨時測試。

如何確認修復方案是否正確?

在原始應用和另一個應用中以中等音量重播同一段音訊。檢查峰值是否不再出現刺耳的噪音,如果有空閒點擊問題,則確認音訊恢復播放時不再出現點擊聲。如果您新增了已命名的 ALSA PCM,請使用支援 ALSA 的程式進行測試;瀏覽器或其他 PipeWire 用戶端可能無法使用該定義。

如果失真在所有應用程式、輸出裝置和合理的播放音量下仍然存在,請恢復實驗設定並檢查連接、裝置或核心驅動程式。 Ubuntu 建議檢查連接器和所選音訊設備是否有爆音。尋求驅動程式的協助時aplay -l,請收集音訊輸出(如果是 PCI 音頻,則需收集音訊lspci -nnk輸出)。避免隨意修改緩衝區大小:緩衝區大小的變更會以延遲和欠載容差為代價,並且應該在出現丟幀現象後進行,而不是作為通用的失真解決方法。

留下評論

透過針對性地調整 ALSA 設定來減少 Ubuntu 24.04 的音訊失真

透過針對性地調整 ALSA 設定來減少 Ubuntu 24.04 的音訊失真

追蹤是否為削波、ALSA 格式轉換或 HDA 省電導致 Ubuntu 24.04 音訊失真,然後套用相應的可逆修復。

建立一個 PipeWire 輸出切換腳本,用於行動活動音訊

建立一個 PipeWire 輸出切換腳本,用於行動活動音訊

使用 pactl 腳本在指定的 PipeWire 輸出之間切換 Debian 音頻,腳本會更新預設接收器並重新路由正在播放的串流。

恢復 Ubuntu 24.04 上的藍牙耳機麥克風輸入

恢復 Ubuntu 24.04 上的藍牙耳機麥克風輸入

選擇正確的輸入來源,使用免持音訊設定文件,並檢查 Ubuntu 的 PipeWire 路由,即可使您的藍牙耳機麥克風正常運作。

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

了解為什麼 Flatpak 應用可能會忽略 Ubuntu 24.04 GTK 主題,並按照安全步驟檢查主題擴充、刷新 Flatpak 應用程式以及診斷入口網站問題。

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

Install Ubuntu 24.04 alongside Windows 11 with BitLocker safely. Compare separate-drive and shared-drive paths, recovery keys, partitioning, and boot checks.

如何解決 Ubuntu 核心更新後 Nvidia 驅動程式無法載入的問題

如何解決 Ubuntu 核心更新後 Nvidia 驅動程式無法載入的問題

診斷 Ubuntu 核心更新後 NVIDIA 驅動程式故障。檢查 DKMS 和安全啟動,重建匹配的模組,註冊 MOK,並驗證修復效果。

如何修復 Ubuntu 24.04 系統睡眠後 Wi-Fi 斷開連線的問題

如何修復 Ubuntu 24.04 系統睡眠後 Wi-Fi 斷開連線的問題

修復 Ubuntu 24.04 系統掛起後 Wi-Fi 斷開的問題,檢查 NetworkManager、無線電模組、更新、省電模式和驅動程序,然後驗證每次恢復操作。

修復 Ubuntu GNOME 中 Tracker-Miner-3 導致的 CPU 使用率過高問題

修復 Ubuntu GNOME 中 Tracker-Miner-3 導致的 CPU 使用率過高問題

了解為什麼 tracker-miner-fs-3 在 Ubuntu GNOME 中佔用大量 CPU,以及如何檢查索引、排除資料夾、更新 Ubuntu 或安全地重建搜尋索引。

修正在 UEFI 上安裝 Debian 後出現的「找不到可啟動裝置」錯誤

修正在 UEFI 上安裝 Debian 後出現的「找不到可啟動裝置」錯誤

透過檢查啟動模式、EFI 系統分割區、GRUB 檔案和韌體啟動順序來修復 Debian 的 UEFI 啟動錯誤,而無需先重新安裝 Debian。

解決 Windows 11 更新錯誤 0x800f0922

解決 Windows 11 更新錯誤 0x800f0922

遇到 Windows 11 更新錯誤 0x800f0922?了解已驗證的有效解決方法,快速解決此常見問題。逐步指南,幫助您輕鬆完成更新,告別煩惱。