Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リアルタイムボイスチェンジャーMMVCとVITSの紹介

 リアルタイムボイスチェンジャーMMVCとVITSの紹介

MMVCというオープンソースのリアルタイムボイスチェンジャーと、そのエンジン部分であるVITSというディープラーニングを利用したTTS音声生成手法について、紹介と解説をしました。

NSEG + JAWS-UG 長野支部 合同勉強会 - connpass https://nseg.connpass.com/event/251366/

の勉強会で話した内容です。

A5f618dd37c9f9866423579247cb3fb0?s=128

SATOH Kiyoshi

June 25, 2022
Tweet

More Decks by SATOH Kiyoshi

Other Decks in Programming

Transcript

  1. リアルタイムボイスチェンジャーMMVCとVITSの紹介 NSEG #106 2022/6/25 さとうきよし @stealthinu

  2. MMVCとVITS ひとことで言うと 「MMVC」はオープンソースのリアルタイムボイスチェンジャー 「VITS」はディープラーニングを用いたTTS音声生成エンジン 2

  3. つまりMMVCを簡単に言うと 声の「バ美肉」 ができるツールなのです なので… 3

  4. 今日はリアルタイム音声変換でプレゼンします! 「すんだもん」の声でお届けします 4

  5. あらためて「MMVC」とは オープンソースのリアルタイム音声変換ツール 「簡単」「だれでも」「好きな声に」「リアルタイムで」 マイクからの音声をそれほど遅延なく好きな声に変換できる MMVC_Trainer https://github.com/isletennos/MMVC_Trainer 5

  6. システム構成 学習部分 (MMVC_Trainer) 主に Google Colab 上で動かすことを想定 クライアント部分 (MMVC_Client) 主に

    Windows PC 上で動かすことを想定 にわかれています 6
  7. 学習が必要 自分の音声と変換したい音声で学習が必要 ディープラーニングにより声質を学習する 学習済みデータをベースに追加で学習させる ディープラーニングではよく大量のデータと学習が必要になる 学習させるの大変では? 7

  8. 音声データ量と学習量 自分の音声と変換したい音声が100文程度必要 2時間くらいあれば十分作成できる 5000回程でもそこそこ変換できる 5000回だとColabで3時間もあれば学習できる 変換したい音声サンプルで「ずんだもん」が使える ずんだもんは324文 結構手軽にできる! 8

  9. リアルタイム音声変換 MMVCの最大のウリはやはり「リアルタイム音声変換」 現在代表的なリアルタイム音声変換ツールはない VOICEBOX / Seiren Voice リアルタイム性ではなく高音質のほうへ 今後リアルタイム変換も対応する? 七色ニーナ

    リアルタイム変換はたぶん現在開発中? Voidol 軽くて高速だが変換しにくい声とかあるらしい 9
  10. Colab上で動かすコンセプトが新しい Colabだけでワンストップでデータ作成から学習まで行える Colab上でWebアプリケーションを提供されている感覚 でかいGPU積んだPCなくても利用できる Colabで起きた「ディープラーニングの民主化」がアプリケーションまで下りてきた感 まさに「簡単」「だれでも」「好きな声に」 10

  11. 学習や音声変換にはVITSを利用 学習や音声変換のエンジンはほぼVITSのものを使用 下記がMMVCで提供されている部分 リアルタイム変換 Windows実行ファイル化 Colabのノート 日本語コーパス学習済みデータ提供 学習の日本語対応 Discordによるユーザグループ VITSはすごいがエンジンだけでは動けない

    11
  12. VITSとは 2021/6に発表された高速高品質の End to End Text to Speach (TTS) 手法

    Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text- to-Speech https://arxiv.org/abs/2106.06103 VITSの公式実装 https://github.com/jaywalnut310/vits 12
  13. VITSの特徴 テキストから音声を生成するものだが音声変換もできる 高品質で比較的高速に生成ができる 話者毎に特徴量を学習するため任意の音声で生成できる ディープラーニング以外はほぼつかわないE2Eモデルだがだいぶ複雑 VAE/GAN/Flowと3つの生成モデルを使っている 特にFlowの利用の仕方が頭いい! 13

  14. VITSの詳細説明 この後VITSにつて詳細内容します が、ほぼ下記zassou65535氏が書かれている内容を説明してるだけです 【機械学習】VITSでアニメ声へ変換できるボイスチェンジャー&読み上げ器を作った話 https://qiita.com/zassou65535/items/00d7d5562711b89689a8#stochastic-duration- predictor なので詳細気になった方は上記のページを読んでいただけるとわかりやすいです 14

  15. VITSの構成図 VAEのエンコーダーで音の特徴 量抽出 VAEとGANで音声生成の学習 VAEのデコーダーで特徴量から 音声生成 Flowで話者と音素ごとの特徴量 抽出と学習 Transformerで文の特徴量抽出 Monotonic

    Alignmentで音素長 を推定する だいぶ複雑… 15
  16. GAN / VAE / Flow の概念図 16

  17. VAEとは Auto Encoder Autoencoderとは入力と出力が同じになるように学習する Encoderで一旦小さい潜在変数Zへと変換される それを元にDecoderで復元 潜在変数Zは声を抽象化し圧縮されたものと考えられる VAE (Variational Auto

    Encoder) VAEでZを正規分布の平均と分散行列に変換して制約をつけている 17
  18. VITSのVAE VAEでスペクトログラムから直 接wavを生成 生成したwavを再度スペクトロ グラムにして誤差を算出 スペクトログラムのチャンネル を時間方向にconv1dしてる Zから最小時間単位でチャンネル 方向にtranspose_conv1dしてwav に戻す

    18
  19. GANとは Generative Adversarial Networks (敵対的生成ネットワーク) 生成器(Generator)と識別器(Discriminator)の独立した2ニューラルネットで構成 生成器が生成したものを識別器が本物(教師データ)か判別する 生成器は見破られないように、識別機は見破るように学習していく StyleGANでは生成器にスタイル情報を埋め込んで生成できる 19

  20. VITSのVAEとGANの学 習方法 VAEとGANの(だけじゃなくFlow やText Encoderなど)全部の誤差 を足す 全部のロスが減るように学習 20

  21. Flowとは 可逆変換ができるニューラルネットワーク VAEではエンコーダとデコーダの両方の学習が必要だがFlowは片方だけでよい 簡単な変換をする逆変換可能な関数Fnを準備する 変換を多数重ねることで複雑な変換が可能になる 逆変換可能なので逆変換を重ね合わせれば複雑な逆変換も可能 ここで関数Fnは逆変換可能なように工夫されたニューラルネットなどを使う 21

  22. VITSのFlowとText Encoder部がやってる こと 音声がどの音素にあたるものか を抽出する 音素の長さの持続時間の推定す る Flowは話者と音素毎の特徴を学 習する 22

  23. Flowで話者の特徴を学習している VITSはFlowで話者の特注を学習しているところがすごく面白い! 話者毎の音素毎の特徴量変換をFlowが学習してくれる Flowを通すと話者の特徴量をなるべく排した特徴量が得られる Flow逆変換することで変換したい音声の特徴量を「乗せる」ことができる つまりFlowで変換と逆変換すると自分の声を別の声に変換できる! 23

  24. VITSの音声変換概念図 特徴量Zを算出 FlowでZから話者の特徴を排除 Flow逆変換で変換先話者の特徴 を乗せる 変換先話者の乗ったZを得る Zから音声生成 24

  25. 今後の目標 無学習または小データと短い学習での変換を可能に たくさん学習データを作ったり学習時間がかかるのがハードル 無学習での変換ができるとだいぶ応用が広がる 変換の高品質化 VITSは元々TTSのために作られていて変換だけを目的に作られてるわけじゃない だから変換特化で高品質化できるのでは 低遅延化 VITSの場合音素情報まで落とし込まないので原理的に遅延は少ない 0.2秒以下の遅延にできたらよいが

    クライアントのネイティブ化 Nuitkaのexeはでかすぎる VOICEBOXではONNX使ってネイティブで動くようになってる 25
  26. まとめ MMVCのリアルタイム音声変換はたのしい MMVCは誰でもColab上で好きな音声を学習させれるのがすごい VITSはFlowの使い方が頭良くてとてもすばらしい 26

  27. ※参考資料 音声変換自体の概要については DeNA目線で見る 音声変換の最先端 - Qiita https://qiita.com/Kohki_Mametani/items/03d863486dd3d806c69c 音声変換についての技術が超まとまっててまずはこれを読むべき 27

  28. ※参考資料 VITSの詳細について理解するには 【機械学習】VITSでアニメ声へ変換できるボイスチェンジャー&読み上げ器を作った話 - Qiita https://qiita.com/zassou65535/items/00d7d5562711b89689a8#stochastic-duration- predictor 概要をつかむのにすごくよくて独自実装のソースは本家ソース読むよりわかりやすい VITSの紹介と解説 https://docs.google.com/presentation/d/19GNmEBcshf71ED5zRh8I8oIL5uAE0d-

    tJL1mlnR_4cw プレゼン資料だが内容の説明がめちゃくちゃ詳しくてよい 28
  29. ※参考資料 Flowについて理解するには 深層生成モデルを巡る旅(1): Flowベース生成モデル https://qiita.com/shionhonda/items/0fb7f91a150dff604cc5 Flowはあんまり情報なくてここのエントリがとてもわかりやすくてありがたかった 他のVAEやGANについての解説エントリもありこちらもとてもおすすめ 29

  30. 図の引用元 Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-

    to-Speech https://arxiv.org/abs/2106.06103 Flow-based Deep Generative Models | Lil'Log https://lilianweng.github.io/posts/2018-10-13-flow-models/ 【機械学習】VITSでアニメ声へ変換できるボイスチェンジャー&読み上げ器を作っ た話 - Qiita https://qiita.com/zassou65535/items/00d7d5562711b89689a8#stochastic- duration-predictor 30