SoXとは?
SoX(Sound eXchange / サウンドエクスチェンジ)は、作者が言うように、"音声処理プログラムの十徳ナイフ"です。無料で、フリー、オープンソースでWindows、Mac、Linux上で動作します。
SoXは録音、変換、編集、分割、結合、多くの形式の音声ファイルに様々なエフェクトを適用することができます 。
対応されているファイル形式
Slackware Linux 13.37のデフォルトインストールでは、SoXに対応されている音声ファイル形式は以下のとおりです:
8svx、 aif、 aifc、 aiff、 aiffc、 al、 amb、 au、 avr、 caf、 cdda、 cdr、 cvs、 cvsd、 cvu、 dat、 dvms、 f32、 f4、 f64、 f8、 fap、 flac、 fssd、 gsm、 gsrt、 hcom、 htk、 ima、 ircam、 la、 lpc、 lpc10、 lu、 mat、 mat4、 mat5、 maud、 mp2、 mp3、 nist、 ogg、 paf、 prc、 pvf、 raw、 s1、 s16、 s2、 s24、 s3、 s32、 s4、 s8、 sb、 sd2、 sds、 sf、 sl、 smp、 snd、 sndfile (Libsndfileライブラリに対応されているファイル形式)、 sndr、 sndt、 sou、 sox (内部形式)、 sph、 sw、 txw、 u1、 u16、 u2、 u24、 u3、 u32、 u4、 u8、 ub、 ul、 uw、 vms、 voc、 vorbis、 vox、 w64、 wav、 wavpcm、 wv、 wve、 xa、 xi
関連するライブラリがインストールされていれば他の形式も追加されます。
対応されているいくつかのエフェクト:
bandpass (バンドパスフィルタ)、 chorus (コーラス)、 delay (ディレイ)、 echo (エコー)、 equalizer (イコライザ)、 fade (フェードインとフェードアウト)、 highpass (ハイパスフィルタ)、 lowpass (ローパスフィルタ)、 pitch (ピッチのみの変化)、 reverb (リバーブ)、 reverse (リバース)、 riaa (RIAAのビニール効果)、 speed (スピードとピッチの変化)、 synth (基本的な波形の生成)、 tempo (スピードのみの変化)、 tremolo (トレモロ)、 trim (トリム)、 vocoder (ボコーダ)
全形式、効果や機能の一覧はこちら(英語)にあります。
インストール
WindowsとMacの場合は公式ページからダウンロードできます。 Linuxでは、同じページからソースコードをダウンロードしてコンパイルするか、ディストリビューション固有のパッケージリポジトリからインストールすることもできます。 Slackware(私が使っているLinuxディストリビューション)の場合、Soxはデフォルトでインストールされます MP3ファイル生成の対応が無効になっていますが、コンパイルする(SlackBuild)スクリプトを再実行して再インストールするだけで解決されます。
含まれているソフトウェア
SoXはコマンドラインツールであり、さまざまなタスクを実行するためのミニプログラム(コマンド)を含みます:
Play
対応されている形式のファイルを再生します。再生中にエフェクトを適用することもできます。
Rec
マイク、サウンドカードなどからの音を対応されている形式のファイルへと録音します。
Soxi
対応されている形式のファイルの情報を表示します。
Sox
よく音声処理の結果を別のファイルに保存するために使われていますが、 実際には"rec"と、"play"と"soxi"の中核です。
基本的使用例
注:これらの例はLinux上で実行されました、他のシステムへのコマンドに違いがあるか私は知りません。
オーディオファイルの情報の表示
-
"音楽.mp3"というファイルのサイズ、長さ、エンコード、ビットレート、チャネル数、 サンプルレート)、コメントなどを表示する:
$ soxi 音楽.mp3
-
上記のファイルの長さだけを表示する:
$ soxi -d 音楽.mp3
オーディオファイルの再生
-
"例.mp3"というファイルを再生する:
$ play 例.mp3
-
"例.mp3"というファイルにリバーブエフェクトを適用して、再生する:
$ play 例.mp3 reverb
-
"例.mp3"を逆再生する:
$ play 例.mp3 reverse
-
"例.mp3"の最初の5秒だけを再生する:
$ play 例.mp3 trim 0 5
-
"例.mp3"の秒5からさいごまで再生する:
$ play 例.mp3 trim 5
注:。リバーブ、トリムなどのパラメータを制御するオプションや他に多くのエフェクトがありますが、 詳細は後述のセクション"ヘルプの表示"を読みください。
オーディオファイルの録音
デフォルトの録音デバイス(例えば、マイク)から音をキャプチャして、"例.wav"というファイルに保存する:
$ rec 例.wav
注:最初に録音デバイスを設定する必要があります(例えば、Windowsのサウンド設定や、Linuxの"alsamixer"または"aumix"のようなプログラムで)。
一時停止と継続
再生や録音を一時停止するには同時に"Ctrl"キーと"Z"キーを押しますと、SoXは一時停止して、バックグラウンドへ移されます( 止まったところから継続して、Soxをフォアグラウンドに戻すには、以下のコマンドを入力します:
$ fg
注:これはWindowsで同じように(またはどのように/それとも元々)実行できるかどうかわかりません。
オーディオファイルの処理と変換
これらのコマンドはファイルを処理して、別のファイルに結果を保存します( ファイルを別の形式に変換することもできます。
-
"例.wav"を"例.mp3"に変換する:
$ sox 例.wav 例.mp3
-
"例1.wav"に(SOXのデフォルトパラメータで)リバーブエフェクトを適用して、 "例2.wav"に結果を保存する:
$ sox 例1.wav 例2.wav reverb
-
"例-その1.flac"と"例-その2.flac"を "例-完成.flac"に結合する:
$ sox 例-その1.flac 例-その2.flac 例-完成.flac
-
"例1.ogg"の最初の50秒を"例2.mp3"に保存する:
$ sox 例1.mp3 例2.ogg trim 0 50
-
バックグラウンドミュージック("音楽.mp3")と音声の録音("演説.wav")をミクスして、 "プレゼン.ogg"を作る:
$ sox -m 音楽.mp3 演説.wav プレゼン.ogg
-
同じく"プレゼン.ogg"を作りますが、今回はBGM("音楽.mp3")の音量を半分にして、声("演説.wav")の音量を二倍にします:
$ sox -m -v0.5 音楽.mp3 -v2 演説.wav プレゼン.ogg
ヒント:ファイルを変更せずに効果を"プレビュー"したい場合は、"play"コマンドに エフェクトを掛けて、結果を聞きます:
$ play -m -v0.5 音楽.mp3 -v2 演説.wav
パラメータ(この例では、音量 - "-v"の後の番号、を調整して、 結果が気に入ったら、"play"コマンドを"sox"と置き換えて、出力ファイルを指定します。例:
$ sox -m -v0.5 音楽.mp3 -v1.2 演説.wav プレゼン.ogg
オーディオの生成
SoXは正弦波(sine wave)、三角波(triangle wave)、方形波(square wave)、 "鋸"(sawtooth wave)などの基本的な波形を生成することができます。そして、ホワイトノイズ("white" noise)、ブラウンノイズ("brown"ノイズ)とピンクノイズ("pink"ノイズ)のようなものも生成できます。
-
このコマンドは440Hz(ラ音/A4)の正弦波を再生します。 音量が高すぎないようにゲインを下げます:
$ play -n synth 1 sine 440 gain -10
-
これは同じことをしますが、周波数の代わりに音符の名前を指定します:
$ play -n synth 1 sine A4 gain -10
-
上記と同じ、正弦波を"正弦.wav"という名前のファイルに保存します:
$ sox -n 正弦.wav synth 1 sine A4 gain -10
情報の抑制
画面に表示されるテキストを抑制したい場合は、"-q"オプションを使って、 Soxが警告とエラー以外の情報を表示しないようにします。"rec"と"play"と"sox"で実行できます。例:
$ play -q 音楽.mp3
ヘルプの表示
すべてのSoXのコマンド、形式やエフェクトを表示するには以下のコマンドを入力してください:
$ sox --help
"play"と"rec"と"soxi"のヘルプコマンドは"play --help"、"rec --help"と"soxi --help"です。
注:"play"と"rec"と"sox"のヘルプは、 ファイルの入力/出力とエフェクトの順番以外はほとんど同じです。
(英語で)コマンドの詳細な説明やエフェクトパラメータ使用例の入ったユーザーマニュアルもあります。 Linuxでは、マニュアルがインストールされていれば、このコマンドでそれらをオフラインで読むことができます:
$ man sox
"sox"、"play"と"rec"のマニュアル。
$ man soxformat
対応されているファイル形式に関連するすべてのオプション。
$ man soxi
"soxi"のマニュアル。
$ man libsox
コードやSoXのエンジンとライブラリをいじくりしたい人のためのマニュアル。
またSoXのドキュメンテーションページでマニュアルのオンライン版を読むことができます。