![更改 ALSA 中的取樣率](https://rvso.com/image/31650/%E6%9B%B4%E6%94%B9%20ALSA%20%E4%B8%AD%E7%9A%84%E5%8F%96%E6%A8%A3%E7%8E%87.png)
我是電腦發燒友,我使用過 Windows(帶有 ASIO4ALL)和 OSX 來處理音訊。現在我將 Ubuntu 13 作為我的 HTPC/立體聲音訊。首先,我停用了 Pulse 音訊並使用帶有 ALSA 的 GooMusicplayer。
我的 DAC 能夠支援 24 位元 96khz。我似乎找不到 ALSA 的配置來設定輸出取樣率。我該如何配置它?
答案1
Alsa 預設使用與來源相同的取樣率和格式。然而,可以強制提高(或降低)取樣率。
這是您可以做到的一種方法。 (在/etc/asound.conf或者〜/.asoundrc)
pcm.device{
format S24_LE
rate 96000
type hw
card 0
device 0
}
然後只需將該 pcm 設為另一個 pcm 的從屬,例如預設(立體聲)pcm(警告:除非您有相容的卡,否則 24 位元格式將無法工作,我通常使用適用於大多數卡的 S32_LE。)
pcm.!default{
type plug
slave.pcm "device"
}
然而,上述內容僅適用於立體聲來源(因此,如果您從預設情況下使用 Surround51 pcm 的 5.1 來源播放,事情會變得有點複雜)
我知道(並且個人使用)關於如何強制非立體聲源的採樣率的一種方法是從這個 asound.conf/asoundrc(死連結)並修改它們。 (註:該文件不是我自己寫的)
(你可以找到我的聲音設定檔在這個問題中,直接複製它,而不是經歷下面手動修改它的麻煩)
首先複製“dmixed”pcm,並將其硬體部分修改為所需的取樣率和格式。
然後按原樣從中複製!default、surround40 和surround51 PCM。這將有效地混合所有輸出,並將所有 2.0、4.0 和 5.1 來源的取樣率上轉換為 dmixed pcm 中設定的取樣率。
在該設定檔中,您可能還會發現「upmix20_51」pcm 很有趣,因為它是透過選擇性地將聲音複製到其他頻道來將 2.0 來源升混到 5.1 的有效方法。如果您想使用它,您必須將其類型從“插頭”變更為“路由”,然後將其設定為預設 pcm 的從屬裝置。
pcm.!default{
type plug
slave.pcm "upmix20_51"
}
由於該 pcm 所使用的「surround51」使用「dmixed」作為從屬設備,因此強制取樣率也會套用於該 pcm。
遺憾的是,按照現在的情況,單聲道音源只能從左揚聲器輸出,但這幾乎不是問題,因為單聲道音源在這些爸爸中很少見。我剛才給的例子正是我自己的例子聲音設定檔配置完畢後,如果您有 5.1 揚聲器設定並想要強制使用 96khz 取樣率,請盡情享受。
從理論上講,我認為強制提高採樣率不會為您帶來任何好處(因為這是一個荒謬的想法,它會提高採樣率較低的來源的音訊品質),因此您將成為將應用程式配置為使用96khz 輸出會更好。
但對我來說,如果我不強制使用 96khz 或 44.1khz 頻率,我就會遇到一些劈啪聲的問題(在特定遊戲中,例如《幽浮:未知敵人》)。強制使用 96khz 並不會造成任何損失(它既不會提高也不會降低 44.1/48khz 來源的品質),這是一個完美的解決方案。
答案2
設備的取樣率預設是應用程式為其配置的,即原始檔案的取樣率。
答案3
其他答案有些正確。
大多數音效卡預設不具有多通道功能。 ALSA 在軟體中混合多種聲音。
一般來說,有兩種選擇:
繞過混合軟體輸出,您可以享受更大範圍的聲音。
聲卡上只允許有一個程式運行!
啟用軟體混合,並丟失一些您可能不會注意到的品質。
不只一個程式可以這樣運作!請注意,我不是發燒友,至少現在還不是。
如果您的硬體不支援同時混合多個串流,則預設啟用第二個選項。
筆記:還有第三種選擇。 ALSA 可以在軟體中配置重新取樣,但根據我的經驗,雖然可以將所有要重新取樣的應用程式調整為最大最高取樣率和位元率- 它在FPS 遊戲中引入了明顯的滯後,這是不好的對於一個遊戲玩家來說。
請注意,由於以下幾個原因,第三種選擇可能不實用:
- 我沒有很好地測試它,但我猜某些應用程式可能仍然存在問題。
- 大多數音訊收藏都是 44.1/44 khz 取樣率和 16 位元率,除非你使用大量 FLAC,但即便如此,FLAC 也必須有更高的取樣率。
- 上採樣並不能提供更好的音質(理論上可以,但如果你使用便宜的耳機 - 你不會注意到它,我 99% 確定)。
.asoundrc
遊戲中的延遲是非常真實的,除非我在我的文件中做錯了什麼。
讓事情變得更加混亂的是,從好的方面來說,情況可能會變得更糟。您可以建立具有不同設定(通道/速率/取樣率/實體輸出和輸入配置)的「裝置」。有些應用程式可以使用您手動建立的設備,有些則不能。這讓我很惱火。
最臭名昭著、最有問題的是:Flash播放器。
對於不使用 USB 連接耳機的人來說,這個答案是正確的。他們有自己的內建音效卡,我對此的了解有限,可能對於那些內建主機板音效卡的人來說更真實。可能仍適用於 USB 耳機,但對整個事情持保留態度。我猜想,如果不是的話,所有生產的聲卡中至少有 10% 會使用硬體混音,因為硬體缺少它作為一個選項。光輸出是一大例外。 AFAIK 光纖輸出不需要混頻器。解復用在「接收器」中進行,由硬體完成。別相信我的話。
答案4
感謝@Cestarian 提供以上資訊。這應該可以幫助我讓 USB semi-pro 音訊介面達到我的重新編碼標準化的取樣率 (96K)。我發現這對於工作室的機器設定非常有洞察力。
為了幫助您,既然您幫助了我,我將回答以下問題:
「從理論上講,我認為強制提高採樣率不會為您帶來任何好處(因為它會提高採樣率較低的來源的音訊質量,這是一個荒謬的想法),因此您將應用程式配置為使用96khz 輸出會更好。
但對我來說,如果我不強制使用 96khz 或 44.1khz 頻率,我就會遇到一些劈啪聲的問題(在特定遊戲中,例如《幽浮:未知敵人》)。強制使用 96khz 並不會造成任何損失(它既不會提高也不會降低 44.1/48khz 訊號源的品質),因此這是一個完美的解決方案。
有一種應用程式可以獲取數位訊號,並將其轉換為比原始訊號更高的乘數:數位抖動減少。找出計算機與母帶工作室為此目的使用的外部採樣率轉換器盒的精度將會很有趣。
第二個:我影像必須有一個處理幀,當取樣率未定義時必鬚髮生。從邏輯上講,它必須感測來自硬碟的傳入數據,然後將其格式化(如果不正確)到資料流中,而不是僅輸出到資料流。聲音使用即時處理而不是CPU。但由於您也進行了上取樣,因此您可以修復遊戲聲音檔案上的來源取樣率抖動。