SoXというサウンド処理用のコマンドラインツール
SoXというサウンド処理用のコマンドラインツールを知りました。これは普通に便利なので、紹介しておきます。Sound eXchangeの略がSoXのようです。
私は、音声入力ツールの検証をしようと思って調べていたときに、soxで検証データを取ると便利と知りました。macOSで作業してます。
インストールはhomebrewを使いました。
homebrew install sox
以下で16kHzモノラルのテスト音声が取れます。
rec -r 16000 -c 1 test1.wav # Ctrl+Cで停止
Code language: CSS (css)
めちゃ便利。
合わせて確認したいリンクも調べたので置いておきます。
- SoXの公式サイトはSourceForge上にあります。ライセンスは、GPLv2とLGPLv2です。
- ドキュメントはこちらです。
SoXの開発元と保守状況について
HandWikiによると、以下です。
- 最初の作者はLance Norskogで、1991年7月にUsenetのalt.sourcesグループに「Aural eXchange」として投稿された。同年11月の2回目のリリースで「Sound Exchange」に改名された。
- その後、様々な貢献者がいて、最新の安定版は14.4.2であり、リリースは2015年2月22日になっている。SourceForgeでのコード更新は2015年のバージョン14.4.2を最後に止まっています。
つまり、10年以上新しいリリースがなく、メンテナンスはほぼ行われていない状態。ただ、現在も多くの環境でパッケージとして配布され、広く使われ続けているようです。
オーディオ関係のファイルフォーマットはそんなに頻繁に変わるものではないですし、安定しているんだろう、と私は認識してます。
それから以下は、ついでにClaude Opusに実行サンプルとして出力させたものです。現時点で私は実際に動かして検証してませんし、文章もほぼAIが書いたものをそのまま貼ってます。次に私が使う時、参考にしつつ調べる省略になれば、と考えておいておきます。参考にされる場合は、各自が調べ直すなど、自己責任でお願いします。
SoXの基本構文
sox [入力ファイル] [出力ファイル] [エフェクト]
Code language: CSS (css)
フォーマット変換
sox input.wav output.mp3
Code language: CSS (css)
WAVをMP3に変換します。拡張子から自動でフォーマットを判別します。
音量変更
sox input.wav output.wav vol 0.5
Code language: CSS (css)
音量を半分にします(2.0なら倍)。
トリミング(切り出し)
sox input.wav output.wav trim 10 5
Code language: CSS (css)
10秒地点から5秒間を切り出します。
フェードイン・アウト
sox input.wav output.wav fade 3 0 3
Code language: CSS (css)
最初の3秒でフェードイン、最後の3秒でフェードアウト。
サンプルレート変更
sox input.wav output.wav rate 44100
Code language: CSS (css)
サンプルレートを44.1kHzに変換する。
複数ファイルの連結
sox file1.wav file2.wav output.wav
Code language: CSS (css)
2つのファイルをつなげます。
ファイル情報の表示
soxi input.wav
Code language: CSS (css)
サンプルレート、チャンネル数、長さなどを表示する
基本的な録音
rec output.wav
Code language: CSS (css)
これだけでマイクから録音が始まり、Ctrl+Cで停止
時間を指定して録音
rec output.wav trim 0 10
Code language: CSS (css)
10秒間だけ録音して自動停止
フォーマットやスペックを指定
rec -r 44100 -c 2 -b 16 output.wav
Code language: CSS (css)
サンプルレート44.1kHz、ステレオ、16bitで録音
録音しながらエフェクト適用
rec output.wav noisered noise.prof 0.3
Code language: CSS (css)
無音検出による自動停止。
rec output.wav silence 1 0.1 3% 1 3.0 3%
Code language: CSS (css)
これで「音が鳴り始めたら録音開始、3秒間無音が続いたら自動停止」といった挙動が作れます。会話や演奏の区切りで自動的に切ってくれるので、バッチ処理や自動収録に向いています。
テスト用・検証用のデータ生成
無音の生成
sox -n silence.wav trim 0 5
Code language: CSS (css)
5秒の無音。タイミング検証やパディングのテストに。
サイン波(指定周波数のトーン)
sox -n sine440.wav synth 5 sine 440
Code language: CSS (css)
440Hzのサイン波を5秒。リサンプリングやフィルタの検証の定番
各種波形
sox -n square.wav synth 3 square 1000
sox -n saw.wav synth 3 sawtooth 200
sox -n noise.wav synth 3 whitenoise
Code language: CSS (css)
矩形波、ノコギリ波、ホワイトノイズなど。倍音やノイズ特性のテストに
スイープ(周波数掃引)
sox -n sweep.wav synth 10 sine 20-20000
Code language: CSS (css)
20Hzから20kHzまでのスイープ。周波数特性やエイリアシングの確認に便利
複数チャンネルやスペックを変えて生成
sox -n -r 48000 -c 2 -b 24 test.wav synth 5 sine 1000
Code language: CSS (css)
48kHz / ステレオ / 24bit といった条件を指定して、エッジケースの検証データを作れる
