Ubuntu

更改 ALSA 中的採樣率

  • December 8, 2020

我是電腦發燒友,我使用過 Windows(帶有 ASIO4ALL)和 OSX 的音頻。現在我將 Ubuntu 13 作為我的 HTPC/立體聲音頻。首先,我禁用了 Pulse 音頻並將 GooMusicplayer 與 ALSA 一起使用。

我的 DAC 能夠支持 24 位 96khz。我似乎找不到 ALSA 設置輸出採樣率的配置。我該如何配置它?

預設情況下,設備的採樣率是應用程序為其配置的,即原始文件的採樣率。

預設情況下,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"
}

但是,以上僅適用於立體聲源(因此,如果您從預設使用環繞 51 pcm 的 5.1 源播放,事情會變得更複雜一些)

我知道(並且個人使用)關於如何強制非立體聲源的採樣率的一種方法是從這個 asound.conf/asoundrc(死連結)中獲取部分並修改它們。(注意:我沒有自己寫那個文件)

(您可以在這個問題中找到我的asound.conf並直接複製它,而不是通過下面手動修改它的麻煩)

首先複製“dmixed” pcm,並將其硬體部分修改為所需的採樣率和格式。

然後照原樣複製!default、surround40 和surround51 pcms。這將有效地混合所有輸出並將所有 2.0、4.0 和 5.1 源的採樣率上轉換為在 dmixed pcm 中設置的採樣率。

在該配置文件中,您可能還會發現“upmix20_51” pcm 很有趣,因為它是一種通過選擇性地將聲音複製到其他通道來將 2.0 源上混到 5.1 的有效方法。如果要使用它,則必須將其類型從“plug”更改為“route”,然後將其設置為預設 pcm 的從屬。

pcm.!default{
   type plug
   slave.pcm "upmix20_51"
}

由於 pcm 使用的“surround51”使用“dmixed”作為從屬設備,因此強制採樣率也將適用於該 pcm。

可悲的是現在的情況,單聲道音源只會從左揚聲器輸出,但這幾乎不是問題,因為這些爸爸很少見單聲道音源。我剛剛給出的範例正是我配置自己的asound.conf的方式,如果您有 5.1 揚聲器設置並想要強制 96khz 採樣率,請盡情享受。

從理論上講,我認為強制提高采樣率不會為您帶來任何好處(因為這是一個荒謬的想法,它會提高來自具有較低採樣率的源的音頻質量),因此您將成為最好將應用程序配置為使用 96khz 輸出。

但對我來說,如果我不強制使用 96khz 或 44.1khz 頻率,我會遇到一些劈啪聲的問題(在特定遊戲中,例如 Xcom:Enemy Unknown)。鑑於強制 96khz(它既不會增加也不會降低 44.1/48khz 源的質量)我完全沒有損失任何東西,這是一個完美的解決方案。

引用自:https://unix.stackexchange.com/questions/74558