5
0

More than 1 year has passed since last update.

【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その2:音源分離

Last updated at Posted at 2022-10-14

概要

Whisperを活用した日本語歌詞のforced-alignmentの試行錯誤 その2です。
音源分離を事前にすることで結果が良くなるかを検証します。

シリーズ一覧は以下
【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment リンクまとめ

背景

Whisperで歌唱区間を抽出した後、wav2vecでforced-alignmentをすることで、多少それっぽい結果を得ることができました。しかし、whisperがBGMのみの区間もsegmentとして抽出してしまうなど課題もありました。

今回は、ノイズ除去してからwhisperに入力すると精度がよくなるという情報も見られたため、試してみることにしました。

音源分離

音源分離にはDemucsを使いました。手軽に使えるライブラリの中ではもっとも精度がよいようです。
こちらの記事を参考に音源分離を実行しました。

環境はColabです。
音源は引き続きYOASOBI「夜に駆ける」を使わせていただきます。

!pip install demucs
input_audio_path = "yorunikakeru.wav"
!python3 -m demucs --two-stems=vocals {input_audio_path}

実行完了するとseparated/mdx_extra_q/yorunikakeruのような名前のフォルダが作られて、中にボーカルのみ(vocals.wav)とBGMのみ(no_vocals.wav)の音声ファイルが生成されます。

vocals.wavをダウンロードして聴いてみると非常に綺麗に音源分離ができています。
あとはこれを入力としてwhisperによる歌唱区間抽出、wav2vecによるalignmentをするだけです。やり方は前回記事と重複するので省略します。モデルサイズは前回同様、largeにしました。

結果

正解データをまだ作っていないので感覚的な評価になりますが、歌唱区間の検出はあまり改善されていないように思えました。前回同様、BGM部分もsegmentとして認識されてしまう区間が結構ありました。耳ではきれいに除去できているように聴こえるのですが、なぜでしょうか。
ちなみに、Character Error Rate (CER)は前回の0.06に対し、0.05と若干改善しています。誤差の範囲かもしれませんが。

wav2vecによるalignmentは感覚ですが、精度が上がっているような気がしました。少なくとも音源分離はalignmentの精度を高めるうえで有用なのかもしれません。一方で実用レベルにはまだ達してはいない気がします。このあたり現状だと感覚で議論するしかないので、alignmentの精度を数値化するための正解データを早めに作っておきたいです。

おわりに

OpenAI Whisperを活用した日本語歌詞のforced-alignment その2ということで、音源分離を試してみました。結果、耳で聴く分にはきれいにノイズ除去できたものの、whisperのsegment検出のタイムスタンプのズレは思ったほど解消されませんでした。一方で、wav2vecのalignmentの精度向上にはポジティブな影響があったように思われました。

次のステップですが、alignmentの正解データを作って、音源分離の効果を定量的に検証してみたいです。
また今回、音源分離のためのdemucs実行はコマンドラインで行いましたが、将来的に何らかのアプリに組み込むことを考えると、pythonのコードでかけたほうが便利そうです。demucsをpytorchで実行するチュートリアルなどを参考に、その辺のやり方も探ってみたいです。

参考

demucsで音源分離する(コマンドライン実行)
[Demucs] 機械学習で音源分離・ボーカル抽出 [Python]

demucsをpytorchで実行するチュートリアル
MUSIC SOURCE SEPARATION WITH HYBRID DEMUCS

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0