複数の wave ファイルを MP3/AAC に変換する Makefile

FFmpeg を使って wav ディレクトリにある wave ファイルを一括で MP3 に変換するため、次のような Makefile を書いた。

CONV = ffmpeg
OPTS = -filter:a loudnorm -ab 64k
SRCDIR = wav
DESTDIR = mp3

SOURCES = $(wildcard $(SRCDIR)/*.wav)
TARGETS = $(addprefix $(DESTDIR)/, $(notdir $(SOURCES:.wav=.mp3)))

$(DESTDIR)/%.mp3: $(SRCDIR)/%.wav
        -mkdir -p $(DESTDIR)
        $(CONV) -i $< $(OPTS) $@

all: $(TARGETS)

clean:
        -rm -f $(TARGETS)

変換時に -filter:a loudnorm オプションを付けて音量を自動的に揃えるようにしてある。

Ogg Vorbis にしたい場合は次のようにする。

CONV = ffmpeg
OPTS = -filter:a loudnorm -codec:a libvorbis -qscale:a 1
SRCDIR = wav
DESTDIR = oga

SOURCES = $(wildcard $(SRCDIR)/*.wav)
TARGETS = $(addprefix $(DESTDIR)/, $(notdir $(SOURCES:.wav=.oga)))

$(DESTDIR)/%.oga: $(SRCDIR)/%.wav
        -mkdir -p $(DESTDIR)
        $(CONV) -i $< $(OPTS) $@

all: $(TARGETS)

clean:
        -rm -f $(TARGETS)

AMラジオを圧縮するときのビットレート

AMラジオの音質は 32 kbps 相当と言われるが実際はどうだろう。

3種類のフォーマットで(サンプリング周波数は変えずに*1ビットレートを変えて試してみた結果が次の通り。

形式 ビットレート 変換速度 聞こえ方
MP3 64 kbps 80x 比較すると音質の低下がわかる程度
MP3 32 kbps 110x シャリシャリいう音が目立つ
AAC 64 kbps 66x 比較すると音質の低下がわかる程度
AAC 32 kbps 53x MP3 32kよりは音質の低下が目立たない
Ogg Vorbis 58.1 kbps 95x 音質の低下は感じない

ここで変換速度は10分の長さの音声を1分で変換できたときを 10x とする。数値が大きいほど速い。

また Ogg Vorbis は指定できる一番低い品質 (qscale=1) で十分な音質を得られたのでそれ以外試していない。

以上から Ogg Vorbis が音質・変換速度ともに良いので .oga が再生できる環境ならこの形式にすべきだろう。それ以外の環境では音質に違いがなく変換が速い 64 kbps の MP3 を選ぶ。

*1:ラジオをMP3で保存する | Round & Round The Ring I Go にあるように再生できない機器があるようなので