音声を分割したいだけなのなんでこんなに苦労するんだ… いや、わかるんだけどさ… なのでサクッとできるスクリプトを作りました

僕はミュージシャンのライブが好きです!
ライブDVD/BDもよく買います。
ライブならではのアレンジもあったりで日常的に聞きたいわけなんですが、それがすごく苦労する…

音声の取得

なんらかの方法でDVD/BDから音声を取得します。ここでは詳しくは触れない。
一番簡単な方法はアナログで音声を録音すること。
昭和の時代はラジカセに録音機能があってだな、それを使ってスピーカーから出る音を録音したそうなんだよ(さすがに僕は経験がない)。
さすがにこれはしないけど、音声出力をオーディオインタフェースに刺して録音する方法です。
昭和の方法に比べてこれはこれで全然ありだと思う。

音声を無音部分で分割する

これを行うソフトウェアはたくさんあるんですが以下の問題があります。

  • 「無料で簡単だよ!」みたいなアプリケーションがあるが、そもそもダウンロードサイトも怪しいし、違うアプリケーションをダウンロードさせようとする広告がある
  • 「無料で簡単だよ!」っといいつつ、いざ出力しようとすると「ここからは有料だぞ!」って言ってきたりする。おまえらに人の心はないんか? 殺すぞ?
  • 無料と有料の差は何なんだよ!っていうのはインストールするまでわからない
  • 「古き良きやつ」はメンテされておらず、互換性の問題をゴニョゴニョしなければWindowsにインストールができなかったりする。

うーん、やりたいことはわからんでもないんですが、音声を分割したいだけなんだって。

それ ffmpeg でできるよ

ffmpegでできるんでスクリプトにしておきました。ChatGPTとペアプロして。すごい時代になりました。

bash スクリプトです。
ffmpegをインストールしてパスを通して実行するだけです。
以下が無音時間の扱いに関するパラメータです。微調整して実行すると良いと思います。

min_duration=30 # 分割された音声がこの秒数以下の場合は削除
silence_level=”-30dB” # 無音と判断するレベル
silence_duration_sec=”0.5″ # 無音継続時間(秒)

個人用途で雑な作りなので、ぜひPull Requestやissueをいただけると嬉しいです。