1. 程式人生 > >Linux系統下(Ubuntu16.04LTS)音訊取樣率設定方法

Linux系統下(Ubuntu16.04LTS)音訊取樣率設定方法

問題描述

專案需要,在Ubuntu16.04LTS系統上配置一塊外掛的USB音效卡(MiniStreamer),用起來發現輸入音訊的取樣率被莫名其妙修改了,而且怎麼樣也改不動!輸入1Khz正弦波的單音,實測輸出為918hz。

問題分析

簡單計算很明顯是因為48k的取樣率被系統自動轉用預設的44.1k取樣率重取樣了。結論是系統配置肯定出了問題。

原理解析:

  • 音訊的資料流(以錄音過程為例)如下所示: 音源 -> 音效卡 -> ALSA -> Pulse Audio -> 音訊App -> 揚聲器輸出
  •  其中音源和揚聲器輸出是通道,無需考慮。 音效卡的配置在硬體上就已經決定了(24bit/48k取樣率),手動無法配置。問題的關鍵點就在於ALSA/Pulse Audio和App的配置要匹配了。任何一環的配置不一樣,聲音就變味了 :)
  • 進一步分析,ALSA的預設取樣率就是48K(檢查方法請自行Google)。 音訊App一般都有明顯的取樣率設定可供選擇,只要你注意了,就不會搞錯。顯然,問題出在了Pulse Audio一環

解決方案:

開啟Pulse Audio的配置檔案並修改

sudo gedit /etc/pulse/daemon.conf

可以看到裡面有這麼一句話:

;default-sample-rate = 44100

“;”代表該句話已經被註釋了,不起作用,我們可以修改預設取樣率為48k來解決問題,改為:

default-sample-rate = 48000

儲存並退出。 然後重新配置資源,重啟即可

killall pulseaudio
pulseaudio -k
reboot

至此,完整解決了取樣率不對的問題。

相關參考連結