錄影片或線上會議時, 自己覺得最煩的是我的麥克風的聲音錄不起來/對方聽不見。 (攝影機我不太開, 所以比較沒 (遇到) 問題。) 更煩的是通常看不見錯誤訊息, 不知道該如何除錯。
最近搜尋 「linux sound architecture」 跟 「linux audio stack」 (特別是圖片搜尋), 粗略讀了幾篇, 總算有個較清楚的概觀。 大推最簡單清楚的 1、 2 兩篇, 特別是 LearnDigitalAudio 的簡單明瞭金字塔圖。 簡單地說, 硬體之上是提供統一 API 的 ALSA, 再上去是可以接受多音源/可以混音的 PulseAudio (那些對於延遲零容忍的專業人士們則採用 JACK ), 最上層則是應用軟體。 以前我都只會開 (較低階的) alsamixer 來檢查麥的問題, 明明麥已啟用卻還是有可能錄不出聲音; 現在知道了: 應該開比較高階的 pavucontrol (PulseAudio Volume Control) 來看。 它比較接近應用程式、 用起來比較簡單、 也比較常是問題的來源。
啟動 pavucontrol 之後, 切到 「輸入裝置」 分頁。 試著把麥克風插入電腦後面的孔、 等幾秒、 拔掉、 再插入前面的孔。 過程中你會在 pavucontrol 視窗上看到它自動偵測到裝置 (麥) 出現/消失的狀況。 確認你想用的那一顆麥已經 「設定為預設 (fallback) 裝置」 (右上角最右邊的勾)、 確認 「音訊靜音」 沒有被按下去 (右上角最左邊的消音喇叭)。 我發現有幾次應用軟體 (正在使用 jitsi 的瀏覽器、audacity) 無法把聲音送給麥克風, 都是因為預訊裝置突然跳到 「monitor of 內部音效類比立體聲」。 當你製造聲響時, 有一根顯示多少分貝 (dB) 的棒子應該要抖動。 它上方的拉棒 (slider) 可以控制麥的敏感度。 調到太左邊, 錄下來的聲音會很小; 調到太右邊, 聲音不只太大, 還可能被截斷而變成破音。 如果沒有以上效果, 請見下方的除錯步驟。
再來打開聲音檔編輯軟體 audacity。 右上橫條 「點選以開始監聽」 給他點下去, 跟剛剛一樣, 會看到棒子開始隨著你的聲音抖動。 請看 我的手指彈麥測試短片。 很短, 用 celluloid 看影片時, 要勾選右下角的 「loop playlist」 讓它循環。 此時如果在 pavucontrol 視窗切換到 「錄製」 分頁, 會看到目前僅有 audacity 一個應用軟體在傾聽麥克風。 再點一次 audacity 的橫條以便停止測試, 此時 pavucontrol 的錄製分頁就變成空白一片。
[除錯步驟] 所以呢, 以後錄音/網路電話/視訊會議被對方說沒聲音時, 可以依序查看:
- pavucontrol 有沒有看到你插入的麥? 沒有的話, 請把麥拔掉再插進去並且稍等一下。 還是沒有的話, 請換一個麥克風插孔。
- pavucontrol 有沒有選取它作為預設裝置 這是我最常遇到的狀況, 有時候本來明明用得好好的, 預設裝置卻會突然自動變成 (沒有用的) "monitor of ..."。
- pavucontrol 沒有把它靜音吧?
- 你的應用軟體 (例如瀏覽器) 有沒有選擇從 PulseAudio 的預設錄音裝置傾聽?
也可以拿 audacity 測一下, 分辨出問題發生的點到底在上中下游哪個地方。 像是 jitsi 之類採用 webrtc 的 webapp, 還可以 到 echo test 網頁測試。
[6/2] 現在我用 jitsi meet 時, 隨時都盯著 pavucontrol。 不知為什麼偶爾會看到麥的敏感度突然飆高, 手動拉低之後隔沒幾秒又自動跳上去。 這會造成對方不僅聽到聲音突然變大, 還會有很大的噪音。 我是採用 chromium 進入 jitsi, 然後分享 firefox 視窗。 如果改用 firefox 進入 jitsi 就不會有這個問題; 但是 firefox 在 jitsi 裡面把自己作為分享視窗時, 則會出現各種奇怪的失敗。 最後找到 這個問答:
- 原來 chrome 系列有一個「自動調整敏感度 (gain)」的 "功能", 而 chrome 團隊不想讓用戶自行取消 這個擾人的 "功能"。 於是有人寫了 Disable Automatic Gain Control 這個擴充套件, 裝好之後瀏覽到 jiti 頁面、 點一下那個套件的按鈕就可以阻止 chrome 在這個頁面自動調整敏感度。
- 如果在其他的應用軟體也遇到相同的問題,
那可以試著
取消 PulseAudio 的自動調整設定:
cd /usr/share/pulseaudio/alsa-mixer/paths
編輯 analog-input-front-mic.conf 把[Element Front Mic Boost]
底下的volume = merge
改成volume = 30
或其他適當的數字。 對於後麥的設定檔 analog-input-rear-mic.conf 也做相同的事。
[6/5] 有一天耳麥插整天,到了下午要上課時,雜音變得好大聲。 我猜是靜電累積? 拔出來在手上捏一捏 (我身體當接地線的意思), 再插回去, 雜音就變小、恢復正常了。 或是關掉電腦、 拔掉電源、 等一兩分鐘 (想像它放電?) 再重開機 -- 這一招還蠻有效的。
[2022/11/1] 後來改用 usb 麥克風, 就沒有雜音問題了。 不要再用 3.5mm 了, usb 麥克風好用!
我覺得這篇文章超級重要的, 值得讓更多 linux 用戶知道。 算是宅在家裡防疫的重要收穫之一 :-)。
一兩週下來,有一些新的心得,已補入正文。
回覆刪除wow,最近正要使用Pulse Audio 這文章真的很棒,可以拿來做參考,感謝
回覆刪除