備忘録
RVC 向けボイスモデル
自分の声を学習させてRVC 向け学習済みモデル yukyuを作成した。
このボイスモデルを使うことで、誰かの声を自分の声に変換できる。
ボイスモデルをつくったところで自分の声を自分に変換させても面白くないので、音声合成ソフトで出力した音声を自分の声に変換していた。AITuber と組み合わせればもっと面白くなりそうと思って作り始めた。
動作したものはこれ
実装
Python で開発を始めた。langchain を使うために Python にした。Live2d モデルも動かすためデスクトップの Window PC で開発をした。
簡単な AITuber は基本の動作は以下の繰り返しになる。
- コメントを取得する
- コメントから返信を考える(ChatGPT)
- 返信を音声として出力する(VOICE VOX)
今回は音声変換を行うので、最後に音声を VC Client というボイスチェンジャーソフトで自分の声へ変換するという処理を付け加えた。
いろいろ複雑になりそうなので一旦まとめた pic.twitter.com/Z8d6e89pXr
— yukyu (a.k.a ugo) (@yukyu30) April 22, 2023
コメントを取得する
Youtub のコメント 10 秒間に一回取得することにした。
前回取得してないコメントから最新のコメントが一気に取得できるので、一件一件に返信を行っていたら、時間がかかるので、ChatGPT を使って複数のコメントから一件コメントを抽出するようにした。
より内容があるコメントが抽出されるので結構使えそうだった。
コメントから返信を考える
これはコメントと AITuber の設定を渡して、返信を ChatGPT に生成してもらった。
返信を音声として出力する
VOICE VOX を起動して、API を叩くと音声合成できる。
ここまでは Python で実装した。
声を変換する処理はゴリ押し
合成音声を受け取って、音声変換する機能をコードで実装するのが大変そうだったので、仮想オーディオデバイスで無理やり実現した。
仮想オーディオデバイスで合成音声(PC 音)をマイク入力として扱い、VC Client に入力するようにした。出力先も仮想オーディオデバイスにして、OBS で変換後の音声だけを取り込むようにした。
VC Client だけは Mac で動かして、Windows からネットワーク越しで利用した。
課題
返信を考えて、音声合成したのちに、音声変換をしてるのでコメントしてから返答するまで時間がかかる。
高速化しないと無言の時間が多くなってしまうのでどうにかしたい。