2009年3月16日
soxでサウンドファイルを編集
今回はLinux上で手軽にサウンドファイルを編集出来る sox を紹介します。
単純にオーディオファイルを編集するだけならGUIで編集可能なアプリケーションはたくさんあります。どこぞのOSならもっとたくさんあるでしょう。
ですが、バッチ処理をしたり少々複雑な条 件でコンバートしようとするとGUIの場合は一筋縄にはいきません。
手軽にシェルスクリプトのみでバッチ処理をしようとすると、やはりコマンドラインに限ります。
そのニーズを満たすものが sox です。
sox [global-options] [format-options] infile1
[[format-options] infile2] ... [format-options] outfile
[effect [effect-options]] ...
soxのマニュアルから引用 (man sox)
使用例
$ sox -r 22050 hoge.wav -r 44100 foo.wav # レートを22050から44100に変更
$ sox -s -c2 -r 22050 -w -t raw hoge -w hoge.wav # 2ch 22050hzのrawファイルをwavに変換
こんな感じで使用できます。
2つめの-tオプションは、タイプの指定です。拡張子で自動判別しますが、このオプションで強制的に指定出来ます。
$ sox hoge.wav piyo.wav trim 1 15 # 1から15秒まで切り出し
$ sox -v 0.8 hoge.wav piyo.wav # ボリュームを0.8倍にする
など、細かい指定も可能です。
これらを応用して、
for vol in $(seq 0 9)
do
sox -v 0.${vol} hoge.wav tmp.raw trim 0 1
cat tmp.raw >> out.raw
done
sox -s -c2 -r 22050 -w out.raw -w hoge.wav
とすれば、1秒ごとにボリュームがフェードインする音を出力出来ます。
音のバッチ処理を手軽に実現するには都合がいいので、もし使える機会があったら使ってみてはいかがでしょうか。