記憶:Tactron2+WaveGlowによる音声合成(1)

そもそもこの記事について

以下の書籍の6-1の音声合成に挑戦したときの記憶です。
www.borndigital.co.jp
2022/5/20より長いことやったりやらなかったりしているため、記憶が薄れつつある箇所もございます。

なお、あくまでも私の環境で発生したことしか記憶していないのでご容赦ください。

また、この「そもそもこの記事について」は271108.hatenablog.comとほぼ同じものですが、対象の章が違うものになっています。

そもそも

Tacotron2とWaveGlowを用いて行っている。
Tacotron2に関してはTactron2とかで検索するのが早いはず。この記事を書いている時点での私では、「音声合成でよく使われているNVIDIAフレームワーク」程度の認識。
なお、WaveGlowに関しては名前を聞いたことがある程度でよく分かっていない*1

でもって、何をやっているかというと、The LJ Speech Datasetで事前学習したモデルをJSUTで転移学習させて日本語の音声合成作るよ!ってことをやる。

苦戦点

pyopenjtalkのインストール

詳しくは過去の記事
271108.hatenablog.com

apexのインストール

271108.hatenablog.com
これ、この記事を書いているときに公開していないことを発見したんだけど、どうやってapexをインストールしたのかよく覚えていない。
なお、GoogleColabで学習させたときには何にも問題なかったことは覚えているのでそっちで学習させて満足したか。

Tensorboard開きたいけど403エラーが出る。

これはGoogleColabの話。
stackoverflow.com
これで解決できる。

TensorBoard「No dashboards are active for the current data set. 」

どうして。
これは、logファイルが見つからなかったときに出るやつ(のはず)。なぜか出たことがあった。

記憶

学習関連

hparams.pyは参考元に則りepochs=100に変更。変更前は500だったか。
train.pyで学習させた。学習時間は覚えていないが、参考元は4000なのに対しなぜか5000*2ステップ学習した。なんで?

loss

大丈夫かこれ。まあ5100くらいまでは減ってると言い張れそうだったので5000で実行した。

成果物確認関連

06テキストを音素に変換とあったが、テキストを入力してそれを音声に変換したかった。
そのため、pyopenjtalkを用いて音素に変換し、それを入力した。
その際、スペースの除去、ポーズを示す"pau"を","に置換、文末に"."の追加が必要だった。

音声ファイル未アップロード
あとでTwitterにあげとこう




次やるなら……

学習データの均等化

同じJSUTを使って学習させるだけでも、transcripをうまく設定させればもう少しだけ良くなるかもしれない。basicから4000文、utparaphraseから410文、……といった感じに均等に学習データ・バリデーションデータと分けてみるのもよさそう。

epochs=500

500に戻して学習させてみようか

*1:まあこの書籍に書いてあったのでそれを読んで雰囲気を知った感じ。P225-Tactron2+WaveGlowとは で書かれていることを覚えているくらい?

*2:正確にはgoogleColabに止められる5280程度