Open1

BigVGANの性能を見る

AwesomeSpaghettiAwesomeSpaghetti

概要

BigVGANは以下の公式リポジトリで実装されているが,自身の都合上BigVGAN以外のVocoderモデルとも性能比較を行いたかったため,自身のリポジトリを作成した.
https://github.com/NVIDIA/BigVGAN

以下のrepoに色々比較したいモデルを実装している.
現状はWaveNeXt以外のモデルは安定して学習できている状況である.
特に学習済みモデルは提供していないが,了承願いたい.
https://github.com/reppy4620/vocoders

本題に入るが,公式リポジトリには最近BigVGAN v2なるものが追加された.
主な変更点としては,

  • MultiScaleMelSpectrogramLossの使用
  • MultiScaleSubbandCQTDiscriminatorの使用
    というように,Mel spectrogram lossをMulti scaleのものにして,UnivNetのMultiResolutionDiscriminatorだったところをMultiScaleSubbandCQTDiscriminatorに変更しているといった具合である.

一方で,BigVSANというモデルがSONYから発表されている
https://github.com/sony/bigvsan
実装も公開されており,BigVGANの実装をそのまま使っているようなものである.

これによると,Discriminatorの最終convとLossを特定のものに変えるだけで性能向上が図れると主張されている.
SANについてはvocoderだけに限らずGANに対して適用できるため汎用性が高い.
これもDiscriminatorとLossに適用して試すこととする.

実験条件

そこで,以下の実験条件で実験を行った.

  • データ:JSUT(https://sites.google.com/site/shinnosuketakamichi/publication/jsut)
    • 24kHz
  • モデル:BigVGAN with NSFのSource Excitation module
    • つまり,F0を入力している
    • これは経験的に通常のモデルよりも良かったためである.
  • 100万step
  • batch size : 16
  • FP16
  • AdamW(lr=3e-4, betas=(0.8, 0.99) with ExponentialLRSchedule

比較対象

  1. BigVGAN with NSF
  2. BigVGAN-v2 with NSF
  3. BigVSAN-v2 with NSF

つまり,1と2,2と3を比較することで,変更されたDiscriminatorとLossの有効性,SANの有効性を検証しようというものである.

実験結果

客観評価として,PESQ,UTMOSを見ることとした.
本来MCDとかPeriodicityとか見るべきと思ったが,とりあえずの指標を見た.

PESQ

v1 v2 v2-san
3.9970 3.5736 3.5876

UTMOS

GT v1 v2 v2-san
3.8329 3.8018 3.5833 3.5797

今回の結果から言うとv1が一番良く,v2とSANの効果は微妙で,学習条件との兼ね合いとかで駄目だったのかもしれない.
また,SANによる効果はあまり見られず,ほぼ誤差のような結果となった.
SANの適用により,若干学習が遅くなるため,現状は適用しなくて良いかもしれない.

以上の結果はあくまで今回の実験条件におけるものであるため,そこまで信用できないが得られた結果として投稿しておく.