音声つき単語帳の単語と例文とかを切り出してランダム出題する形にしたかったのでまずsoxを使って無音部分で音声を分割しました。

これでout001.wavなどのように連番でファイルが保存されます。初めの0.3が音声の前の部分の無音の長さで、後ろの0.3が音声の後に続く無音部分の長さです。

参考

sox fails to split files – Stack Overflow


英語の勉強にアメリカドラマから音声を抜き出して、その中のサイレンス部分を削除したかったのでやり方を調べたらffmpegsoxで簡単にできることがわかったので、その方法を紹介します。

動画から音声を抜き出す

一つの動画から音声を抜き出すときは

で抜き出せるので

フォルダごとまとめて処理するには

でフォルダ内の全ての.mp4の動画ファイルから.wavファイルが抜き出されます。-vnno videoのオプションです。

他にも-acodec copy として音声ファイルを変換せずに抜き出すこともできます。

無音部分を自動検出して削除

次に無音部分を自動的に認識して削除するのにsoxを使います。やり方によっては.wav以外も認識するようにできるようなのですが、うちの環境ではできなかったので.wavで処理をしています。

で先ほど作った.wavファイルから無音部分が全て削除されました。

wavをm4aに ffmpeg で変換

wavのままだとファイルがでかすぎるのでm4aに変換します。mp3でもいいんですが、m4aの方が圧縮効率がいいのでこちらを使います。

以上で変換終了です。

まとめ

この3行を一括変換したいフォルダにcdで移動して実行すればOKです。.wavファイルは手動で削除しときましょう。rm *.wavでもいいですが。

上記は全てcygwin上で行ってますがもちろんLinuxでもMacでも動くはずです。

参考

ffmpeg – How to remove silence part from mp3 that is extracted from tv drama – Unix & Linux Stack Exchange