2015年8月4日 星期二

KTV 歌曲音量均衡方法

一般的原聲原影 KTV 檔案,播放時有個最大的問題,
就是每一首歌的音平水準不同,導致歌語歌之間的
音量差距很大,要一直調整擴大機的音量.

MP3 也會有類似的問題, ReplayGain 就是用來解決
這種問題. 所使用的原理, 就是算出整首歌音量的"能量",
然後算出每首歌,要達到標準音量能量的話,需要調大聲
或調小聲多少分貝(dB).

所以如果要調整 KTV 音量, 讓每首歌播出時的音量
感覺都差不多, 可以利用 ReplayGain 的方法, 算出每一首
歌曲的音量能量, 再得到需要調整的增益(分貝)值, 就可以拿來
設定給點歌軟體, 讓每首歌的預設音量都根據 ReplayGain
算出來的分貝值調整, 就可以讓每首歌音量差不多.

ffmpeg 是一個功能強大的影音處理程式, 裏頭也有包括
計算影音檔中, 各個音軌的 replaygain 的值. 事實上 ffmpeg
可以計算音軌的 RMS 及 replaygain, 兩者都是計算音量的能量,
但是 replaygain 還有根據頻率不同給予不同的能量加權,
也就是高音與低音給人的音量能量感受,有不同的感受.

利用 ffmpeg 計算出來的 replaygain 分貝值,就是該首歌曲
需要調整的音量相對值. 公式則為 :

   音量調整值 = 10^(分貝值/20)

例如算出來的分貝值是 +1.38dB 的話,則表示音量調整值是
10^(1.38/20) = 10^(0.069)=1.17

如果算出來的分貝值是 -2.15dB 的話, 則音量調整值是
10^(-2.15/20) = 10^(-0.1075) = 0.78

因為音量有可能需要調大聲,也可能調小,所以假設
點歌軟體每首歌的預設音量是設定在 40(0最小, 100 最大值),
則往上調大聲最多可以調整 2.5 倍, 調小聲基本上比較沒限制,

所以上面例子中, +1.38dB 的歌曲, 設定給點歌軟體的預設音量值
就是 40*1.17 = 46.8 = 47
另一個 -2.15dB 的歌曲, 設定給點歌軟體的預設音量值為
 40*0.78 = 31.2

所以每首歌算出 replaygain 的增益值之後, 就可以設定
點歌軟體資料庫中, 每首歌曲的預設音量值, 在每首歌曲播出時,
由於預設音量的調整, 讓每首歌聽起來的音量大小都差不多.

至於預設音量的標準值, 我目前建議是設定在 40, 這樣可以讓
歌曲往上調整音量的空間, 最大有 2.5 倍(大約增益值是 +8dB),
往下調整的解析度也還足夠. 如果實際處理的歌曲, 很多都太小聲,
增益值都超過 +8dB 的話, 在考慮把標準音量從 40 往下調整.
基本上點歌軟體的標準音量往下調整的話, 實際從 PC 輸出的音量
也會比較小, 需要靠擴大機端調大輸出音量來補償.

目前我會利用 ffmpeg, 把每首歌曲的 replaygain 增益值算出來,
然後把預設音量值直接算好後, 把每首歌曲檔名修改為類似 :
  Selina_vL_gn46.mpg
  ALin_vR_gn37.mpg

然後再利用程式,掃描點歌軟體的資料庫檔案, 把預設音量的欄位
靠 "_gn" 後面的數值設定進去, 就可以讓每首歌曲的預設音量
根據 replaygain 調整.

至於左右聲道的判斷, 還有增益值的可信度, 會再另外一篇文章再
討論.

沒有留言:

張貼留言