無音の音声ファイルの作成

ゼロ詰めの数値データファイルを作成し、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圧縮する方がよさそうです。