LoginSignup
0
1

More than 1 year has passed since last update.

Tacotronを高速化させるためにVocederについて少し調べてみた。

Last updated at Posted at 2021-06-19

PitchTacotron高速化

学習メモがてらに記事を投稿しております。適切な表現がなされていないかもしてないですが、ご了承ください。(これは2021年1月ごろに書いた内容となっています。)

目的

Pitch推論から音声合成するTacotron(PitchTacotron)によるtext2speech(TTS)をCPUでも低レイテンシで行いたい!そのためTTSパイプラインの高速化が目的となります。

ボトルネック

プロファイラーでPitchTacotronの実行時間を調べたところ、vocoder部分がボトルネックになっていました。

vocoderとはメルスペクトログラムから機械的に音声を再合成するものです。(voice + encoder)

vocederにはweveglowを使っていたが、RTF(Real Time Factor:実時間係数)を小さくするために、他のvocoderと処理速度を比較してみました。

音声分析合成システム WORLD

実際にGPUで音声合成する(waveglow)のに約6秒かかるのテキスト量で実行時間を調べてみた。

CPU world synthsize: 0.243225 s

CPU waveglow synthsize : 23.801406 s

合成にかかる速度はWORLDのほうが圧倒的に早いですね。

ただし、WORLDはf0、スペクトル包絡、非周期性指標から合成されるため、メルからwavを生成できませんでした。

World vocoderの特徴
- World vocoderはオープンソースプロジェクトであるため、誰でもすべての人に使用可能
- 3つの特徴量(lf0 [1]、mgc [60]、ap [5])には振幅スペクトログラムだけでなく位相情報も含まれているため、そのボコーダーから再合成した音声のクオリティはGriffin-Limよりも優れている。
- Tacotronモデルにポストネットは必要ない。トレーニングのパフォーマンスは、ステップごとに0.7秒に減らすことができる。アクセント推論は、CPUでのみ機能する場合でも、十分に高速。

以下Tacotron + World でTTS する案をまとめる。

手法1: worldの入力に合わせるように、tacotronを再学習する。

現在、Pitchからメルを生成しているが、f0やスペクトル包絡などを出力するように再学習する。

手法2: Pitchを使わないtacotron + worldのTTS

[Tacoton-2 plus World vocoder] https://github.com/begeekmyfriend/tacotron/tree/mandarin-world-vocoder

woveglowWORLDに置き換えて同じことをしてました。
学習済みモデルで実行速度を測りたかったが、モデルを取得できなかったです。

日本語での学習の仕方は以下を参考。

[Training Data] https://github.com/begeekmyfriend/tacotron/blob/mandarin-world-vocoder/TRAINING_DATA.md

手法3: メルスペクトログラムからworldで音声合成。

かなり調べたけど、Worldはメルだけの入力で直接合成することはできなそうでした。

手法4: メルスペクトログラムからworldの入力になる特徴量を抽出

メルスペクトログラムからf0やスペクトル包絡などを取得できないか調べました。

スペクトル包絡は抽出できそうだったが、f0値などを抽出する方法はわからなかったです。

[LibROSA で MFCC(メル周波数ケプストラム係数)を算出して楽器の音色を分析] https://www.wizard-notes.com/entry/music-analysis/insts-timbre-with-mfcc

[畳込みニューラルネットワークを用いた音響特徴量変換とスペクトログラム高精細化による声質変換] https://dmv.nico/assets/img/casestudy/2stack_voice_conversion/paper.pdf

worldVocederの実効速度が速いのって入力データの情報量がWaveglowと比べて多いからじゃ、、

他のvocoderの実行速度

  • WaveRNN

試してみたが、合成速度はwaveglowに劣る。

  • WaveNet

かなり遅い

  • LPCNet, Parallel WaveGAN

CPUでもかなりRTFを小さくできる可能性がある。(まだ調査できていない。)

[リアルタイムニューラルボコーダにおける学習データ量の影響の調査 ] http://www.me.cs.scitec.kobe-u.ac.jp/~takigu/pdf/2020/0104_1-2-3.pdf

なんかただのWorldボコーダーの紹介になっちゃいました。

0
1
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
0
1