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 で音源をミックスする時に,ある音源の開始位置を指定できないかな?と思いながらオプションを探していたのですが,それらしきオプションが見つかりませんでした. 仕方がないので,少々強引なやり方になってしまうのですが,以下の方法で実現することができました. もっと良い方法を知っている方がいたら,教えて頂けると嬉しいです.
- 音源を開始したい位置までの長さの無音ファイルを生成する 参考:研究メモ - 無音の wav ファイルを作るには http://mastarpj.nict.go.jp/~ksugiura/memo/memo_jp.html#tips25
- 無音ファイルの後にミックスする音源を結合する
- ミックスする
コマンドで表すと以下のようになります.
# 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 は日本語情報が豊富とは言えませんが,とても便利なツールだと思います.