Asial Blog

Recruit! Asialで一緒に働きませんか?

soxでサウンドファイルを編集

カテゴリ :
バックエンド(インフラ)
タグ :
Tech
Linux
シェルスクリプト
sox
サウンド
今回はLinux上で手軽にサウンドファイルを編集出来る sox を紹介します。

単純にオーディオファイルを編集するだけならGUIで編集可能なアプリケーションはたくさんあります。どこぞのOSならもっとたくさんあるでしょう。
ですが、バッチ処理をしたり少々複雑な条件でコンバートしようとするとGUIの場合は一筋縄にはいきません。
手軽にシェルスクリプトのみでバッチ処理をしようとすると、やはりコマンドラインに限ります。
そのニーズを満たすものが sox です。

  1.        sox [global-options] [format-options] infile1
  2.           [[format-options] infile2] ... [format-options] outfile
  3.           [effect [effect-options]] ...
soxのマニュアルから引用 (man sox)

使用例
  1. $ sox -r 22050 hoge.wav -r 44100 foo.wav   # レートを22050から44100に変更
  2. $ sox -s -c2 -r 22050 -w -t raw hoge -w hoge.wav   # 2ch 22050hzのrawファイルをwavに変換

こんな感じで使用できます。
2つめの-tオプションは、タイプの指定です。拡張子で自動判別しますが、このオプションで強制的に指定出来ます。

  1. $ sox hoge.wav piyo.wav trim 1 15  # 1から15秒まで切り出し
  2. $ sox -v 0.8 hoge.wav piyo.wav # ボリュームを0.8倍にする

など、細かい指定も可能です。

これらを応用して、

  1. for vol in $(seq 0 9)   
  2. do
  3.   sox -v 0.${vol} hoge.wav tmp.raw trim 0 1
  4.   cat tmp.raw >> out.raw
  5. done
  6. sox -s -c2 -r 22050 -w out.raw -w hoge.wav

とすれば、1秒ごとにボリュームがフェードインする音を出力出来ます。

音のバッチ処理を手軽に実現するには都合がいいので、もし使える機会があったら使ってみてはいかがでしょうか。