BigVGANの性能を見る
概要
BigVGANは以下の公式リポジトリで実装されているが,自身の都合上BigVGAN以外のVocoderモデルとも性能比較を行いたかったため,自身のリポジトリを作成した.
以下のrepoに色々比較したいモデルを実装している.
現状はWaveNeXt以外のモデルは安定して学習できている状況である.
特に学習済みモデルは提供していないが,了承願いたい.
本題に入るが,公式リポジトリには最近BigVGAN v2なるものが追加された.
主な変更点としては,
- MultiScaleMelSpectrogramLossの使用
- MultiScaleSubbandCQTDiscriminatorの使用
というように,Mel spectrogram lossをMulti scaleのものにして,UnivNetのMultiResolutionDiscriminatorだったところをMultiScaleSubbandCQTDiscriminatorに変更しているといった具合である.
一方で,BigVSANというモデルがSONYから発表されている
実装も公開されており,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
比較対象
- BigVGAN with NSF
- BigVGAN-v2 with NSF
- 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の適用により,若干学習が遅くなるため,現状は適用しなくて良いかもしれない.
以上の結果はあくまで今回の実験条件におけるものであるため,そこまで信用できないが得られた結果として投稿しておく.