SoX マニュアル 日本語版 (1)
SoX Sound Exchangeのマニュアルの日本語訳ページからの転載(元ページは無くなっています。WEB Archiveより転載)
SoXは、コマンドラインのサウンド編集アプリです。(Linux/Mac/Windows)
バッチファイルを作ればバッチ処理ができるので大量のデータ処理に便利です。
ファイルの変換にも使えます。
---
SoX
名前・書式・説明・ファイル名・オプション・エフェクト・診断・バグ・関連項目・利用許諾・著作者
名前
SoX — Sound eXchange, 音声処理のためのスイスアーミーナイフ
書式
code:shell
【 角括弧 [, ] に括られたものは省略し得ることを表す。 各種 ‘オプション’ には,その種類のオプションを複数個与え得る。 】
説明
概要・ファイルの形式とタイプ・ファイル形式の決定と設定・音声の再生と記録・正確性・ディザリング・クリッピング・入力ファイルの結合・出力ファイル・SoX の停止
概要
SoX は広く利用されているほとんどの形式の音声ファイルの読み取りと書き出し, およびオプションでそれらにエフェクトを適用することができる。 複数の入力源の結合や音声合成を行うことができ、また,多くのシステムで,汎用の音楽プレイヤーまたはマルチトラック音声レコーダとして機能する。 入力を複数のファイルに分割して出力する限定的な機能もある。
SoX のすべての機能は sox コマンドで利用できる。 音声の再生と記録を簡略化するため、 SoX が play により起動された場合の出力ファイルは自動的に既定のサウンドデバイスに設定され, rec により起動された場合の入力源には既定のサウンドデバイスが利用される。 また、 soxi(1) コマンドを音声ファイルのヘッダ情報の取得に利用できる。
SoX の中核は libSoX と呼ばれるライブラリが担う。 SoX の拡張や他のプログラムからの利用に興味がある者は libSoX マニュアルページ: libsox(3) を参照のこと。 SoX は手軽で単純な編集やバッチ処理に適したコマンドライン音声処理ツールである。 対話的でグラフィカルな音声編集が必要であれば audacity(1)が適する。 SoX の全般的な処理過程は次のように要約できる:
入力 → 結合器 → エフェクト → 出力
ただし、 SoX コマンドライン内における出力とエフェクトの位置は論理的フロー順序と逆になっていることに注意。 また、ファイルに関連するオプションはそのファイル名の前に置かれる一方、エフェクトについてはその逆になる。 どのように行われるか示すため、以下にいくつかの用例を挙げる。 まず、単純な:
sox recital.au recital.wav
は、 Sun AU 形式の音声ファイルを Microsoft WAV ファイルに変換する。 一方:
sox recital.au -b 16 recital.wav channels 1 rate 16k fade 3 norm
は、同じ形式変換に加え,4つのエフェクト: 1 チャンネルへのダウンミックス( channels 1 ), サンプルレート変換( rate 16k ), フェードイン( fade 3 ), 正規化 ( norm )を適用し、結果をビット深度 16( -b 16 )として格納する。
sox -r 16k -e signed -b 8 -c 1 voice-memo.raw voice-memo.wav
は ‘raw’ (別名 ‘ヘッダレス’ )音声を自己記述ファイル形式に変換し,
sox slow.aiff fixed.aiff speed 1.027
は 音声の再生速度を調整し( speed 1.027 ),
sox short.wav long.wav longer.wav
は 2つの音声ファイルを連結し,
sox -m music.mp3 voice.wav mixed.flac
は 2つの音声ファイルを混合( mix )する( -m )。
play "The Moonbeams/Greatest/*.ogg" bass +3
は 一連の音声ファイルを低音ブーストエフェクト( bass +3 )をかけながら再生する。
play -n -c1 synth sin %-12 sin %-9 sin %-5 sin %-2 fade h 0.1 1 0.1
は パイプオルガンの音色により ‘短七’ 和音の合成音( synth sin %-12 sin %-9 sin %-5 sin %-2 )を再生する。
rec -c 2 radio.aiff trim 0 30:00
は ステレオ音声( -c 2 )を 30 分間( trim 0 30:00 )記録し,
play -q take1.aiff & rec -M take1.aiff take1-dub.aiff
は( POSIX シェルとハードウェアのサポートがあれば)マルチトラック録音( rec -M )により新規トラックを記録する。 最後に
rec -r 44100 -b 16 -e signed-integer -p \
silence 1 0.50 0.1% 1 10:00 0.1% | \
sox -p song.ogg silence 1 0.50 0.1% 1 2.0 0.1% : \
newfile : restart
は LP やカセットなどの音声ストリームを記録し( rec -r 44100 -b 16 -s -p ),2 秒間の静音区間により( silence 1 0.50 0.1% 1 2.0 0.1% )複数の音声ファイルに分割する( song.ogg, newfile : restart )。 また、これは音声再生が検知されるまで録音を開始せず,静音が 10 秒間継続すると停止する( silence 1 0.50 0.1% 1 10:00 0.1% )。
注記: 上記は SoX の能力の一端を概観したものに過ぎない。 SoX のすべての パラメタ, ファイル形式, エフェクトの利用の仕方についての詳細な説明は、このマニュアルの残りの部分と soxformat(7), soxi(1) にて述べられる。
ファイルの形式とタイプ
SoX は ‘自己記述’ と ‘raw’ のいずれの音声ファイルにも対応する。 ‘自己記述’ 形式(例えば WAV, FLAC, MP3 )はヘッダを持つ。 このヘッダは、後続の音声データに含まれる,信号とその符号化方式( encoding ),の属性を完全に記述する。 ‘raw’ (‘生の’ — 別称 ‘ヘッダレス’ )形式はこの情報を持たないので、これらの音声の属性が SoX コマンドラインの中で与えられるか, 入力ファイルから推定されなければならない。 【 WAV, FLAC, MP3 など、一般的に "ファイル形式" と称されることも多い,ファイルの タイプ( type )とファイルの 形式( format )とは、データに対する捉え方の点でニュアンスが異なることに注意。 大雑把に言って、形式は下の表の4属性の組からなる内部的で抽象化された概念が念頭に置かれているのに対し、タイプは文字通りファイルの種類を指すもので,これらの各属性データをファイルストリームのデータ構成に直列化するための具体的な構成仕様/配置規則に付けられた名称を指す、というのが訳者の理解である。】
次の4つの属性が SoX が処理可能な音声データの形式の記述に利用される:
サンプルレート
サンプルレートは 1 秒間あたりのサンプル数を表す( ‘Hertz’ または ‘Hz’ )。 デジタル電話通信は伝統的にサンプルレート 8000Hz ( 8kHz )であるが、今日では 16 あるいは 32kHz までも一般的になってきている。 オーディオ CD は 44100Hz ( 44.1kHz )である。 DAT や多くのコンピュータシステムにおいては 48kHz が用いられている。 プロ用のオーディオシステムにおいては 96 kHz がよく利用されている。
サンプルサイズ
各サンプルが保持するビット数(別称 ‘ビット深度’ )。 現在では 16 ビットが一般的である。 草創期のコンピュータ音声では 8 ビットが普及していた。 プロオーディオの分野では 24 ビットが利用されている。 他のサイズも利用されている。
データ符号化方式
各音声サンプルが表現( ‘符号化’ /エンコード)される方式。 一部の符号化方式にはバイトオーダーやビットオーダーが異なる変種がある。 一部の符号化方式においては音声データ領域(すなわちディスクスペースまたは伝送帯域幅)を他の形式パラメタとサンプル数から導出される量より節約するために、圧縮が行われる。 広く利用されている符号化方式には、浮動小数点, μ-law, ADPCM, 符号付き整数 PCM, MP3, FLAC などがある。
チャンネル数
ファイル内に含まれる音声チャンネル数。 1( ‘モノラル’ )および 2 ( ‘ステレオ’ )が広く利用されている。 ‘サラウンド’ 音声には概して 6 チャンネル以上含まれる。
ビットレートは単位時間あたりに符号化される音声信号の量を表す。 これは上のすべてに依存して定まるもので、通常は 1 秒あたりのキロビット数( kbps )で記述される。 A-law 電話通信信号のビットレートは 64 kbps である。 MP3 符号化ステレオ楽曲のビットレートは 128-196 kbps のものが多い。 FLAC 符号化ステレオ楽曲のビットレートは 550-760 kbps のものが多い。
ほとんどの自己記述形式では、例えば楽曲のタイトル, 作者, 等々の,音声に何らかの説明を加えるために利用できる ‘コメント’ テキストを埋め込むことができる。
音声ファイルコメントの重要な用途の一つとして ‘再生ゲイン’ 情報の伝達がある。 SoX は再生ゲイン情報の適用をサポートする(一部のファイル形式に限られるが、現時点では,少なくとも FLAC と Ogg Vorbis は含まれる)が、生成はサポートしない。 既定においては、 SoX は,再生ゲイン情報が入力ファイルにあれば,出力ファイルにもそれが含まれるようにするため、(出力ファイル形式がコメントをサポートしていれば)入力ファイルコメントを出力ファイル内に複製する。 このとき、単なる形式変換ではない何らかの変換が行われた場合、出力ファイルの再生ゲイン情報が正確でなくなることが見込まれるので,( SoX でない)他のツールにより再計算する必要が生じる。
soxi(1) コマンドを音声ファイルのヘッダ情報の表示に利用できる。
ファイル形式の決定と設定
SoX には、音声ファイル形式の属性の決定/設定を行うための,いくつかの仕組みが用意されている。 状況によっては、実際の属性は別々の仕組みから決定/設定され得る。
入力ファイル形式の決定には、与えられた情報, または利用可能な情報の中から,優先度の高い順に次のものが利用される:
コマンドラインで与えられた形式オプション。
ファイルヘッダの内容。
ファイル名拡張子。
出力ファイル形式の設定には、与えられた情報, または利用可能な情報の中から,優先度の高い順に次のものが利用される:
コマンドラインで与えられた形式オプション。
ファイル名拡張子。
入力ファイル形式の属性、または出力ファイルタイプでサポートされる属性のうち,それに最も近いもの。
ファイルタイプを決定できない場合、 SoX はエラーを送出して終了する。 この場合、コマンドラインの形式オプションを追加するか変更する必要がある。
音声の再生と記録
基本的な再生および記録を簡略化するため、 play および rec コマンドが提供されている。 次のように:
play existing-file.wav
および:
rec new-file.wav
これら2つのコマンドはそれぞれ次と等価である:
sox existing-file.wav -d
および:
sox -d new-file.wav
もちろん、いずれにおいても,更なるオプションやエフェクトを(以下で述べるように)追加できる。
一部のシステムには、複数の種類の( SoX と互換性のある)音声ドライバが提供されている: 例えば ALSA & OSS や, SUNAU & AO など。 システムは複数の音声デバイス( ‘サウンドカード’ )も持ち得る。 複数の音声ドライバが SoX に組み込まれていて、かつ,記録/再生において SoX の既定の選択が望ましいものではない場合、 AUDIODRIVER 環境変数でその既定の設定を上書きできる。 例えば(多くのシステムでは):
set AUDIODRIVER=oss
play ...
AUDIODEV 環境変数により既定の音声デバイスを上書きできる。 例えば:
set AUDIODEV=/dev/dsp2
play ...
sox ... -t oss
あるいは:
set AUDIODEV=hw:soundwave,1,2
play ...
sox ... -t alsa
環境変数の設定の仕方はシステムによって異なり得る事に注意。 一部の特定の例については下の ‘SOX_OPTS’ を見よ。
音声出力デバイスでサポートされていないサンプルレートのファイルが再生される場合、必要なサンプルレート変換を得るために rate エフェクトが自動的に呼び出される。 【参考( Mac OS X の場合):入出力デバイスのサンプルレート/サイズは、 アプリケーション/ユーティリティ/Audio MIDI 設定.app から設定すると良い。】 古いハードウェアとの互換性のため、既定の rate 品質レベルは ‘low’ に設定されている。 別の品質レベルを伴う rate エフェクトを明示的に指定することにより、このふるまいを変更できる。 例えば:
play ... rate -m
あるいは --play-rate-arg オプションでも可能である(下を見よ)。
一部のシステムでは play による再生中に音量を調整できる。 システムでサポートされていれば、再生中に ‘v’ および ‘V’ キーを叩くことにより行える。
録音レベルの適切な設定を補助するため、 SoX には,(実際の録音を行う前に)次のようにして呼び出せるピークレベルメータが用意されている:
rec -n
録音レベルは、メータが多くとも 一時的に 最大スケールを指し、かつ,決して ‘レッドゾーン’ (感嘆符( ! )が表示される)に入らないように、( SoX ではなく,システムが提供するミキサープログラムにより)調整されるべきである。 下の -S も見よ。
正確性
多くの 音声を圧縮するファイル形式では、いくばくかの音声信号情報が圧縮過程の中で破棄されている。 その種の形式に変換された場合、再変換で元の形式に戻しても元々の音声と正確に一致しなくなる。 これは、音声の忠実度よりも信号帯域幅の狭さが重視される,電話通信に利用される形式の多く( A-law, GSM など)、あるいは携帯音楽プレーヤでも実用になるような,大きな圧縮比でも十分な忠実度が得られる形式の多く( MP3, Vorbis など)に該当する。
音声信号情報を破棄する形式は ‘不可逆’( lossy )と呼ばれる。 そうでない形式は ‘可逆’(ロスレス — lossless )と呼ばれる。 ‘品質’ とは、不可逆形式において元々の音声信号がどの程度再現できるかを表す尺度を指す。
SoX による音声ファイル変換は、可能な所 — すなわち、不可逆形式が利用されない所, サンプリングレートやチャンネル数を減らさない所, 出力形式で利用されるビット数が入力形式で利用されるビット数より少なくならない所 — では,常に可逆である。 例えば、 8 ビット PCM 形式から 16 ビット PCM 形式への変換など。 一方、 8 ビット PCM 形式から( 8 ビット) A-law 形式への変換は可逆ではない。
注記: SoX においては、どの音声ファイルも,音声処理を行う前に無圧縮の形式に内部的に変換される。 したがって,不可逆形式のファイルを扱う場合、音声の忠実度が更に劣化し得る。 例えば:
sox long.mp3 short.mp3 trim 10
においては、まず入力 MP3 ファイルが解凍され,次に trim エフェクトが適用された後,最後に出力 MP3 を作成する段階で再圧縮が行われる。 このとき、入力ファイルの作成時に生じたもの以上の忠実度の劣化が生じ得る。 したがって、最終的には不可逆の圧縮音声が望まれる場合でも、可逆ファイル形式においてすべての音声処理を行い,最後の段階で不可逆形式に変換することが強く推奨される。
注記: 複数のエフェクトを適用する場合、一般的に, SoX の一度の呼び出しでまとめて適用する方が,複数回に分けて呼び出すよりも正確な結果を生成する。
ディザリング
ディザリング とは、一定ビット深度の音声のダイナミックレンジを最大化するための技法である。 量子化によりもたらされる歪みは、信号に対し微小なホワイトノイズを付加して,元信号との連関性を除去することにより、知覚されにくくなる。 ほとんどの場合、 SoX は,指定された処理がディザリングを要するものかどうか決定でき、出力フォーマット化の過程において,適切にディザを付加する。
特に,既定では、出力ビット深度が 24 よりも少なく, かつ 次のいずれかが成立する場合、 TPDF ディザが自動的に付加される:
ビット深度の削減がコマンドラインオプションの中で明示的に指定されている場合
出力ファイル形式がサポートするビット深度が、入力ファイル形式のビット深度より小さい場合
エフェクトが内部処理チェインにおける実効ビット深度を増大させた場合
例えば音量を vol 0.25 に調整する場合、結果を可逆にするためには 2 ビットの追加が必要になる( 10 進数の 0.25 は 2 進数の 0.01 に等しいので)。 入力ファイルのビット深度が 16 だった場合、 SoX の中ではこの音量調整の処理後に 18 ビットが内部表現に用いられることになる。 出力のビット深度を入力と同じにするために追加ビットを削減する際に,ディザリングが利用される。
SoX が何を自動的に付加したかを調べるには -V オプションが利用できる。 自動ディザリングの上書きには -D オプションが利用できる。 手動によるディザリングの呼び出しについては(例えばノイズシェーピング曲線を選択するために)、dither エフェクトを見よ。
クリッピング
クリッピングとは、音声信号レベル( ‘音量’ )が表現し得る範囲を超えたときに生じる歪みである。 ほとんどの場合、クリッピングは望ましいものではなく,(処理チェインの中で)それが生じる前の所でレベル調整により修正されるべきである。
容易に推察されるように、クリッピングは音量を上げるために vol や gain エフェクトを利用する際に生じ得る。 クリッピングは他の多くのエフェクトでも,あるいは別の形式に変換したり, 単に音声を再生するときですら、起こり得る。
音声ファイルの再生においては,しばしば再サンプルが行われ、アナログ機器における処理の段階で微小な DC オフセットや増幅がもたらされる。 これらのすべては音声信号レベルが元からクリッピング点に近過ぎる所で歪みを生じさせる。
これらの理由から、音声ファイルの信号レベルは,与えられた表現に可能な最大レベルより一定レベル下のレベルを超えないように,いくばくかの ‘ヘッドルーム’ をとっておくことが常である。 一部の標準団体では 9dB のヘッドルームが推奨されているが、ほとんどの場合 3dB (約 70% リニア)で十分である。 この知恵は現代の楽曲制作では忘れられているように見受けられる。 事実、多くの CD, MP3, 等々が 0 dBFS を超えるレベルでマスタリングされている。 すなわち音声は出荷時にはクリップされている。
SoX の stat および stats エフェクトは音声ファイル内の信号レベルの決定を補助する。 クリッピングの防止には gain や vol エフェクトを利用できる。 例えば:
sox dull.wav bright.wav gain -6 treble +6
は、高域ブーストが確実にクリップしないようにする。
処理の中でクリッピングが生じた場合、そのエフェクトに対する警告メッセージが表示される。
-G, gain, norm エフェクトも見よ。
入力ファイルの結合
SoX の入力結合器では、複数のファイルの結合を次のいずれかのメソッド: concatenate, sequence, mix, mix-power, merge, multiply, で行うように設定できる(下のオプション — --combine を見よ)。 play に対する既定のメソッドは sequence である。 rec および sox に対する既定のメソッドは concatenate である。
sequence 以外のすべてのメソッドにおいては、複数の入力ファイルが同じサンプルレートを持っていなければならない。 必要なら、別々の SoX の呼び出しにより,結合前のサンプルレート調整を行える。
concatenate 結合メソッドが選択された場合(通常はこれが既定になる)、入力ファイルのチャンネル数は同じ数に揃っていなければならない。 各入力からの音声は、出力を形成する際に与えられた順番に連結される。
play においては sequence 結合メソッドが自動的に選択される。 これは各入力ファイルからの音声が順次出力ファイルへ送出される点で concatenate に似ている。 しかしながら、出力ファイルは対応する入力ファイルの変わり目で一度閉じられ,再び開かれる点で異なる。 これは異なる種類の音声を出力デバイスに送出するときに必要になるものだが、出力先が通常のファイルの場合は一般に有用ではない。
mix または mix-power 結合メソッドが選択された場合、複数の入力ファイルが与えられなければならず,それらは出力ファイルに混合される。 各入力ファイルのチャンネル数は不揃いでもよいが、その場合は SoX から警告が発せられ,出力ファイルの一部のチャンネルは一部の入力ファイルからの音声を含まないことになる。 混合された音声ファイルは元の入力ファイルへの参照を伴わない限り元には戻せない。
merge 結合メソッドが選択された場合、複数の入力ファイルが与えられなければならず,出力ファイルを形成するために合併される。 各入力ファイルのチャンネル数は不揃いでもよい。 合併された音声ファイルは、すべての入力ファイルのすべてのチャンネルから構成される。 remix エフェクトを伴う,複数回の SoX の呼び出しを用いて、合併を元に戻すことができる。 例えば2個のモノラルファイルを,ステレオファイルを形成するように合併することができる。 モノラルファイルは、順に,ステレオファイルの左と右のチャンネルになる。
multiply 結合メソッドは、対応するチャンネルのサンプル値の積をとる( -1 ... +1 区間の数値に換算した上で)。 入力ファイルのチャンネル数が不揃いであった場合、欠けた方のチャンネルのサンプル値はすべてゼロとみなされる。 入力ファイルの結合においては、指定された(例えば vol 音量調整エフェクトも含めた)どのエフェクトも音声の結合後に適用される。 しかしながら、結合前に個々の入力の音量を設定する(すなわち ‘バランス’ をとる)こともしばしば有用になる。
すべての結合メソッドにおいて、下の -v オプションを用いて, 1 個以上の入力ファイルに対しその音量調整を手動で行える。 一部の入力ファイルに対してのみ与えられた場合、他のものに対する音量調整は行われない。 一部の状況においては音量調整が自動的に適用される(下を見よ)。
選択された入力ファイルの音量調整の表示には、下の -V オプションが利用できる(手動/自動いずれに対しても)。
入力ファイルの混合(ミキシング — mixing )には特別な配慮が必要になる:
他のメソッドと異なり、 mix 結合では,バランス調整が施されなければ 結合器においてクリッピングが生じ得る。 この場合,手動による音量調整が与えられていなければ、 SoX は各入力信号の音量(振幅)を,クリッピングが生じないように自動的に ¹/n 倍する( n は入力ファイル数)。 この結果の音量が小さ過ぎたりバランスが悪い場合は、入力ファイルの音量を上述のように手動で設定する。 norm エフェクトを利用する方法もある。
混合された音声の音量が,ある所では十分大きいが他の所では小さ過ぎる場合、その修正にはダイナミックレンジ圧縮が適用されるべきである。 compand エフェクトを見よ。
mix-power 結合メソッドの場合、混合された音量は入力信号の1つの音量にほぼ等しくなる。 これは倍率係数に ¹/n の代わりに ¹/√n を用いてバランスをとることで得られる。 このバランス係数はクリッピング防止を保障するものではないが、通常はクリップされる頻度は少なく済み,結果の歪みは一般的に知覚できないものになる。
出力ファイル
SoX の既定のふるまいでは、 1 個以上の入力ファイルをとり, 1 個の出力ファイルに書き出す。
このふるまいは、エフェクトのリストに疑似エフェクト newfile を挿入することにより,変更できる。 このとき SoX は複数出力モードに入る。
複数出力モードにおいては、 newfile の前のエフェクトが終了した所で,新規ファイルが作成される。 しかる後, newfile の後のエフェクトチェインが開始され、その出力がその新規ファイルに保存される。
複数出力モードにおいては、すべてのファイル名に一意的な番号が付与されることになる。 ファイル名に拡張子がある場合、番号は拡張子の前に挿入される。 このふるまいは、ファイル名の中で番号を挿入すべき場所に %n を与えることにより,変更できる。 % と n の間には、オプションで,番号の最小桁数を指示する数字を挿入することもできる。
複数出力モードは、 newfile の前にエフェクトチェインを早期に停止させるエフェクトが指定されない限り,あまり有用ではない。 エフェクトチェインが自身を停止させる前に,ファイルの終端に達した場合、新たなファイルは空になるので作成されない。
次の例は、入力ファイルの最初の 60 秒を2つの 30 秒のファイルに分割して,残りは無視する:
sox song.wav ringtone%1n.wav trim 0 30 : newfile : trim 0 30
SoX の停止
通常、 SoX はいったん入力ファイルから利用可能なすべての音声データを読み取れば,その処理を完了させた後に自動的に終了する。
必要なら,プロセスに割り込みシグナルを送ることにより、停止させられる(通常はキーボードの割り込みキー(普通は Ctrl-C )を用いる)。 これは例えば SoX を録音に利用する場合など、一部の状況では自然な要件になる。 複数のファイルを再生している状況の下では、 Ctrl-C は少し異なったふるまいになることに注意: 一度だけ押した場合, SoX は次のファイルへスキップし、間を空けずにもう一度繰り返すと終了する。
処理を早期に停止させる他のオプションとして、停止位置が,時間またはサンプル数から定まるエフェクトも用意されている。 例えば trim エフェクト。 すべてのエフェクトチェインが終了すれば SoX は停止する。