Asial Blog

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

soxコマンドで音声ファイルを編集する10の例

カテゴリ :
バックエンド(プログラミング)
タグ :
Tech
Linux
sox
サウンド
こんにちは、浦本です。

今回は、サウンドファイルの編集に便利なsoxコマンドの使用例を紹介します。

sox (Sound eXchange) 配布元: http://sox.sourceforge.net/

soxを使うとコマンドだけでサクっとサウンド編集を行うことができます。
Linux/Mac/Windowsで利用可能です。
日々のサウンド編集だけでなく、Webアプリのバックエンド処理として活用しても面白いと思います。

ちなみに、soxネタは被らないだろうと思っていたのですが、
検索してみるとなんとアシアルブログの過去記事でも一度紹介されていました。さすがKさん!
以下はその続編として書きたいと思います。


【1】音量を上げる
+3dB上げる例です。
soxの基本的な使い方は「sox 入力ファイル 出力ファイル エフェクトオプション」となります。
  1. $ sox in.wav out.wav gain 3

【2】リミッター付きで音量を上げる
音量を上げながらも、リミッターによって音割れを抑えることができます。
  1. $ sox in.wav out.wav gain -l 3

【3】ノーマライズする
ピークが最大音量(0dB)となるように、自動的にgainを調節します。
  1. $ sox in.wav out.wav gain -n

【4】リピートする
8回リピートした音声を出力する例です。
例えば1小節の素材を8小節にして保存できます。
  1. $ sox in.wav out.wav repeat 8

【5】連結する
4ファイルを連結する例です。
  1. $ sox inA.wav inB.wav inC.wav inD.wav out.wav

【6】フェードインする
先頭の5秒間の音量を徐々に上げてフェードインさせます。
  1. $ sox in.wav out.wav fade t 5

【7】フェードアウトする
先頭から60秒の時点を終了位置とし、終わりの5秒間をフェードアウトします。
  1. $ sox in.wav out.wav fade t 0 60 5
1番目の数字がフェードイン秒数(この場合0)、2番目が終了位置の秒数(残りはカットされる)、3番目がフェードアウト秒数です。

【8】ハイパスフィルタをかける
1000Hzより高音域を通します。
  1. $ sox in.wav out.wav highpass 1000

【9】ローパスフィルタをかける
1000Hzより低音域を通します。
  1. $ sox in.wav out.wav lowpass 1000

【10】サウンド情報を表示する
再生時間やサンプル数などの情報を表示することができます。
この場合、soxではなくsoxi(Sound eXchange Information)です。
  1. $ soxi in.wav
  2. Input File     : 'in.wav'
  3. Channels       : 2
  4. Sample Rate    : 44100
  5. Precision      : 16-bit
  6. Duration       : 00:00:01.90 = 84000 samples = 142.857 CDDA sectors
  7. File Size      : 401k
  8. Bit Rate       : 1.68M
  9. Sample Encoding: 16-bit Signed Integer PCM

以上のように簡単な加工であれば手軽にサウンド編集ができるので、
皆さんもぜひ試してみてください。
私の場合は、DAWで調節するまでもないような日々のミックスを、
あとで聴きやすいように音量調節するため利用しています。

soxコマンドにはオプションが多く存在するため、
こちらのHTMLマニュアルを見ながら利用するのがおすすめです。
http://sox.sourceforge.net/sox.html