Pythonでいい感じの音声区間検出してくれるライブラリはないかなと探していたら、inaSpeechSegmenterというものが見つかったので使ってみた。
github.com
デフォルトでは音声の区間、音楽の区間、ノイズの区間、無音の区間を検出し、その区間ラベルと時間情報(開始・終了時刻)の情報を返してくれる。面白いのは音声区間においてジェンダーの区別もデフォルトでしてくれるということ。
区間ラベルを列挙しておこう:
- speech (male/female) 音声
- music 音楽
- noise ノイズ
- noEnergy 無音
インストールは以下。
pip install inaSpeechSegmenter
こんなスクリプトを書いてみた。
gist.github.com
inaSpeechSegmenterは区間ラベルと時間情報のみを取得できる。同ライブラリのseg2csvをインポートすることで、検出結果をcsvに書き出すことができる 。
seg2csv(segmentation, 'myseg.csv')
実用上は複数の音声ファイルに分割したいので、上記のスクリプトではpydubのAudioSegmentの力を借りて音声区間ごとにwavに分割保存したわけである。