暇人じゃない

soxmix でミックスする音源の開始位置を指定する

soxmix とは sox というコマンドラインツールの仲間です. sox は音声ファイルのフォーマットを変換したり,エフェクトをかけたり,結合することができます. soxmix を使用することで,複数の音源をミックスすることができます.

SoX - Sound eXchange | HomePage http://sox.sourceforge.net/

# 音源を結合する
% sox sound1.wav sound2.wav out.wav
# 音源をミックスする
% soxmix source.wav sound1.wav sound2.wav out.wav

soxmix で音源をミックスする時に,ある音源の開始位置を指定できないかな?と思いながらオプションを探していたのですが,それらしきオプションが見つかりませんでした. 仕方がないので,少々強引なやり方になってしまうのですが,以下の方法で実現することができました. もっと良い方法を知っている方がいたら,教えて頂けると嬉しいです.

コマンドで表すと以下のようになります.

# 30 秒の長さの純音ファイル(10000Hz)を生成
% sox -t nul /dev/null sine.wav synth 30 sine 10000
# 純音ファイルのボリュームを 0 にして無音ファイルを生成
% sox -v 0 sine.wav offset.wav
# 無音ファイルの後に,開始したい音源ファイルを結合
% sox offset.wav sound.wav out.wav
# ミックス
% soxmix source.wav out.wav mix.wav

sox は日本語情報が豊富とは言えませんが,とても便利なツールだと思います.