wavファイルを複数の10秒の長さのwavファイルに分割する必要がありますが、各結果のwavファイルは〜しなければならない無音を追加する必要がある場合、長さは正確に10秒です。したがって、wavファイルの持続時間(秒)が10の倍数ではない場合、最後のwavファイルは無音で埋められなければなりません。
私はいくつかの答えを見ました(1、2、サム)soxとffmpegを使用してファイルを同じ長さのチャンクに分割する方法を示します。
$ ffmpeg -i file.wav -f segment -segment_time 10 -c copy out%03d.wav
$ sox file.wav output-.wav trim 0 10 : newfile : restart
ただし、これらのコマンドによって生成された最後のファイルの長さは通常10秒未満です。同じコマンドでwavファイルを分割し、必要に応じて最後のファイルを埋める方法はありますか?
答え1
ファイルを分割し、結果ファイル(for i in *wav
)を調べてif (length < 10 seconds)
入力します。
Waveファイルの長さを取得するには:
sox --info -D file.wav
ウェーブファイルを入力します。https://superuser.com/questions/579008/add-1-second-of-silence-to-audio-through-ffmpeg
計算を少し試してみることもできますね:-)