ffmpeg-normalize でMP3ファイルの音量を平均化

プログラム

ffmpeg-normalizeの使い方です。自分用の備忘録でもあります。

ffmpeg-normalizeについて

ffmpeg-normalizeはオーディオファイルの音量をEBU R128という音量規格に基づいて平常化することが出来るプログラムです。

大体の目的としては、様々なオーディオファイルの音量を一定のレベルに変換することで、オーディオファイルが変わるごとに音量を変更しなくても済むようにしたいというところでしょうか。

例えば、違うアルバムの曲をプレイリストにして聞くときに、収録している時の音量が違うので、曲が変わるごとに音量を変えることがありますよね。

そうしない為に、すべてのオーディオの音量を統一化しようというのが、ffmeg-normalizeというプログラムなのです。

オーディオファイルということですが、mp4のファイルにも対応しています。

使用する前の疑問点

以下は、私が ffmpeg-normalize を使用する前に抱いた疑問点です。これから使用を考える方の参考になればと思います。

pythonとの関係

ffmpeg-normalize は ffmpegのようにコマンドプロンプトで動くプログラムです。なので、普通のpythonのライブラリの一つという訳ではありません。

じゃ、なぜ python と関連するのかというと、 ffmpeg-normalize を インストールする時に、pip というPYTHONのプログラムを使用するからです。下記が ffmpeg-normalize をインストールする時のコマンドです。pipというコマンドが必要になるので、pythonが必要になってくるわけです。

pip install ffmpeg-normalize

ffmpegも必要

もちろん、ffmpegも必要になってきます。

エンコードをする時に、ffmpegのプログラムを使っているからです。

音量の平均化の基準は?

一般的に、複数のファイルの音量を調べて、その平均値となる音量をとって平均化をするものだと思ってしまいますが、先述したように、 EBU R128 という音量規格によって平均化されます。

例えば、下記の2つのコマンドを実行したとします。IN.wav、IN2.wavは入力ファイル、OUT.wav、OUT2.wavはそれぞれの出力ファイルです。OUT.wavとOUT2.wavはEBU R128の音量規格になっているので、連続して聴いても音量を変更する必要はありません。

ffmpeg-normalize IN.wav  -o OUT.wav
ffmpeg-normalize IN2.wav  -o OUT2.wav

なので、MP3Gainのようなプログラムで、複数のファイルで音量の平均化をして、また別の複数のファイルで音量平均化して組み合わせると、音量の平均が異なるので、再び音量の調整が必要ですが、ffmpeg-normalizeで変換すれば、すべてのオーディオファイルの音量がEBU R128 という音量規格によって統一されるので、再び、音量を変える必要がなくなるのです。

もちろん、オーディオファイルを解析して、自分の好きな音量にも変更できます。

イントール

python、ffmpegがインストールされていることを前提にしています。もし、まだの方は、下記の記事を参考にして下さい。

コマンドプロンプトを立ち上げて、下記のコマンドを実行します。公式サイトではpip3ですが、pipでも同じです。

pip install ffmpeg-normalize

インストールが済んだら、コマンドプロンプトで ffmpeg-normaliize と入力してください。

ffmpeg-normalize

そうすると、下記のような使用方法の反応が返ってきます。これでインストールは完了です。

オーディオファイルの平常化

mp3の平常化をする時は下記のコマンドになります。入力ファイルがIN.mp3、出力ファイルがOUT.mp3になります。

ffmpeg-normalize IN.mp3 -c:a libmp3lame -o OUT.mp3

-c:a libmp3lame は出力する時のコーデックになります。

なので、wma に変換したい場合は、 -c:a wmav2 となり、下記のになります。

ffmpeg-normalize IN.mp3 -c:a wmav2 -o OUT.wma

libmp3lame、wmav2 は ffmpeg のオーディオコーデックのオプションとなるので、詳しくは ffmpegを参照してください。

wavに関しては、コーデックのオプションは不要です。

ffmpeg-normalize IN.mp3  -o OUT.wav

複数のファイルの処理

複数のファイルの時は下記のようになります。

ffmpeg-normalize IN.mp3 IN2.mp3 IN3.mp3 -c:a libmp3lame -o OUT.mp3 OUT2.mp3 OUT3.mp3

おわりに

少数のオーディオファイルでの変換であれば、コマンドプロンプトで処理が出来ますが、数が多くなってくると、python などでプログラムした方が便利だと思います。

ffmpeg-normalize は音量をどれぐらいにすればいいかを考える必要が無いので、とりあえず音量の平均化されたい方はつかってみればいいかでしょうか。

今回は自分用の備忘録なので、もっと詳しく ffmpeg-normalize について知りたい方は下記の公式サイトをご覧ください。

コメント

タイトルとURLをコピーしました