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秒ごとにボリュームがフェードインする 音を出力出来ます。
音のバッチ処理を手軽に実現するには都合がいいので、もし使える機会があったら使ってみてはいかがでしょうか。




