3

私は音楽プレーヤーを書いていますが、さまざまな曲の音量を正規化したいです。

私はこれを行うためのいくつかの異なる方法を考えることができます、例えば:

  1. すべてのPCMサンプルを調べ(浮動小数点が-1から1であると想定)、m = max(abs(sample))を選択します。次に、係数1/mをすべてのPCMサンプルに適用します。これにより、ピークは1になります。

  2. PCMストリームを通過し、位置ごとに、その周囲の幅のハニングウィンドウを取得し、絶対サンプルの平均を計算し、それらのデータから最大値を選択して、すべてを正規化します。

  3. 2と同じですが、ある種の平均値を取得する他の方法があります。

2と3には、クリッピングが必要になる可能性があるため、品質が低下するという欠点があります。1に正規化するのではなく、0.95程度に正規化することで、ある程度回避できるかもしれません。しかし、2と3には、これがユーザーにとってより自然な正規化である可能性があるという利点があると思います。ウィキペディアにもこれに関する情報があり、曲のラウドネスを測定するためのRMSReplayGain、またはEBUR128について言及しています。

他のポピュラー音楽プレーヤー(iTunesなど)はこれをどのように行っていますか?

4

1 に答える 1

6

iTunesはサウンドチェックテクノロジーを使用しています。「サウンドチェックは、機能がReplayGainに似た独自のAppleInc.テクノロジーです。iTunesとiPodで利用できます。」(ウィキペディアから)だから、これは私にとって解決策ではありません。

ReplayGainが最も一般的な手法のようです。ここでは、アルゴリズムについて説明します。サンプルの実装は、mp3gain(GPL)またはffmpeg-replaygain(GPL、mp3gainから派生)です。私は現在、MusicPlayerプロジェクト(BSDライセンス)に独自の実装を持っています。

実装されたこれらのプロジェクトも参照してください。

于 2012-09-18T18:33:03.343 に答える