chomeyama / SiFiGAN

Official implementation of the source-filter HiFiGAN vocoder
MIT License
234 stars 34 forks source link

SignalGeneratorでのノイズについて #12

Closed nakasako closed 1 year ago

nakasako commented 1 year ago

SignalGeneratorで生成したf0についてエイリアシングノイズが気になったのでnoise_ampを0にして出力した結果、生成時間が長くなればなるほど後半のエイリアシングノイズとそれに付随するノイズが増えいていくことに気づきました。 生成や学習の品質にも関わってくる問題である可能性が高いためご報告致します。 image

nakasako commented 1 year ago

根本解決ではありませんが、常識的な範囲での解決方法として以下を試し解決しました。

https://github.com/chomeyama/SiFiGAN/blob/dfeffa41a0eb9aba9c3d5635310a3ebea8e4b276/sifigan/utils/features.py#L151C9-L151C78 付近について、 f0の型がtorch.float32だった場合、torch.cumsumでの累積和がfloatの演算誤差でノコギリ状になっていることによりsinが不連続になり上記のノイズが発生します。 f0かradiousをtorch.float64にキャストしてやると、一般的な楽曲の長さ程度では問題無いことを確認しました。 image

chomeyama commented 1 year ago

有意義な情報ありがとうございます! もしよろしければ,修正箇所のPRを作成していただけますでしょうか?

nakasako commented 1 year ago

作成したのでクローズします!