ゼロ詰めの数値データファイルを作成し、ffmpegで無音のwav形式音声ファイルに変換します。
#!/bin/bash fs=24000 # サンプリング周波数 len=2 # 時間長(秒) temp=`mktemp ./XXXX.raw` dd if=/dev/zero of=${temp} count=`expr ${fs} \* 2` bs=${len} ffmpeg -y -f s16le -ar ${fs} -ac 1 -i ${temp} silent.wav rm ${temp}
wavのフォーマットを符号付16ビットにしたため、ddコマンドのcountオプションには2を掛けました。
ちなみに、複数のwavファイルを結合させるには、
ffmpeg -i before.wav -i silent.wav -i after.wav \ -filter_complex "concat=n=3:v=0:a=1" output.wav
とするそうです。これらのスクリプトにより、 bofore.wav と after.wav の間に2秒間のミュート区間が挟み込まれます。なお、同じことをmp3形式の音声ファイルで試してみましたが、mp3は圧縮時に劣化が発生するため、再帰的に何度も結合を実施すると大変音質が悪くなりました。wav形式で結合してから、最後にmp3圧縮する方がよさそうです。