注意: すべてのコマンドは bash シェルを想定しています。
すべての MP3 ファイルをひとつのディレクトリに集めます。
ファイル名に空白があるなら、最初に空白をアンダーラインに変更してやります
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done |
次に示すコマンドで WAV ファイルに変換します。
for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done |
Mpg123 はどの Linux ディストリビューションにも入っ ているはずですが、手もとにないなら、http://www.mpg123.de/ から入手できま す。
注意:ある種の MP3 ファイルは、mpg123 出力にひずみ がでることがありますので注意してください。最初、私はそのファイルがおかしいの だと考えていましたが、別のプレイヤーで調べたところ問題はありませんでした。 そこで、ディスクに WAV ファイルを書き出せる別の MP3 プレイヤーを探してみた ところ、次のようなものを見つけました。 http://www.mars.org/home/rob/proj/mpeg/ にある MAD mp3 デコーダーです。次のようなコマンド を使います。
for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done |
さらに別の方法もあります。見たところいくつかの mp3 ファイルは mpg123 と madplay の両者でデコード トラブルを起こします。lame エンコーダにはデコード機能 があり、それらのファイルでもうまく扱えるようです。 (lame はhttp://www.mp3dev.org/mp3/ にあ ります)。
for i in *.mp3; do lame --decode $i `basename $i .mp3`.wav; done |
注意:`basename $i .mp3`.wav という コマンドは、 MP3 拡張子を WAV で置き換えます。 さまざまな実行方法がありますが、ここでは一例を示しておきます。 `echo "$1" | sed 's/\.mp3$/.wav/'`
"file *.wav" を実行し、16 ビット、 ステレオ 44100 Hz とは異なるファイルに対する出力をチェックします。
違った特性を持つファイルがあるなら、上述した方法でそれらファイルを 変換します。たとえば、track01.wav というファイルを変換してサンプルレート 44.1 kHz になるようにするには次のようにします。
sox track01.wav -r 44100 track01-new.wav resample |
Sox はとても一般的なもので、 どのような Linux ディストリビューションにもデフォルトでインストールされているでしょう。 また次のところでも入手できます。http://www.spies.com/Sox/ しかし、 私のようなお気軽ユーザにはコマンドオプションはちょっと暗号のように思えま す。sox をうまく使うには http://www.spies.com/Sox/sox.tips.html を見てください。
音量の極端な違いを避けるには、WAV ファイルを標準化します。私 は Chris Vaill (<cvaill@cs.columbia.edu>) の normalizeというプログラムを使っています。http://www.cs.columbia.edu/~cvaill/normalize/ で入手できます。
私は次のような構文を使っています( -m は mix モードで、すべてのファイル はできるだけ大きな音になるはずです)
normalize -m *.wav |