見出し画像

生成AIを使ったサービスに新機能を追加しました

どうもえいやです

ここ最近は、前回の記事 で開発したAIを使って作った英語学習サービスの新機能開発などに取り組んでいます

欲しいな、と思った機能を広く浅く、60点出来くらいにしていくのが一旦の目標です

というわけで、今回は音声クローン技術を用いた読み上げ機能をリリースしました

音声クローン技術とは、元のボイスを用意して、その声色そっくりの合成音声を作る技術です

今回の機能のために、ナレーターや出題者、会話文に出てくるキャラクターそれぞれが声色を使い分けての読み上げができるようにクローン音声モデルを作成しました

音声読み上げ機能がついたことで、こちらのサービスをリスニングの勉強にも使うことができるようになりました

音声つきなのは、まだ一部のデータだけとなります。全データの音声を作るとなると容量の問題などで色々と不都合が出るので、生成された問題がある程度良さそうな時に生成することにします

AI技術の解説

実装のコードなどは僕の Github を確認してみてください

使用技術

今回の音声クローンに用いたのは OpenVoice V2 です

NVIDIAのGPU向けに作成されているためCUDAが使えないマシンではエラーがおきてしまうので、今回は M1 MBA で動くようにプログラム全体をCPUでも動くように書き換えて使用します。一部の機能については、M1 GPU向けのMPSでも動くようにできると思いますが、今回はCPUで計算します

以下にフォークしてCPUで動くように調整したリポジトリを置いておきますね

音声データセットには、moe-speech を用います

moe-speech は日本のプロの声優の声を大量に集めたデータセットです。質の高い学習元データとして重宝します

また、透明性の高いライセンスに従って安心して利用ができるので、生成された声がやたら萌え声だったりイケボだったりしても困らない場合にはこちらを使っていれば問題はおきません

ただし、データセットが膨大すぎるがゆえに、声選びは面倒くさいです

今回のサービスでも、出題者の音声のモデルを適当に選んでしまったので、出題者はやたら可愛い女の子の声になってしまっています

出題だと長尺の喋りがないので、試しに出題者のボイスモデルに長台詞をしゃべらせてみましょう

女性声優をクローンしたものなので、がっつり萌え声ですね

TTS

TTS(テキスト to スピーチ)ライブラリは、有名どころで Mozilla TTS の後継である coqui TTS がありますが、今回は OpenVoice V2 向けに調整されている音声モデルが使用できる Melo-TTS を使うことになります

こちらは、OpenVoice V2 の方に解説があるとおりに導入すれば使えますが、たまにおかしくなるのでその場合は pip から削除して入れ直すと上手く動くことが多いようです

なお、音声が入ったWavファイルがあればクローン音声で変換できるので、他のTTSで作成しても良いのですが、調整されていない音声だとやや変換結果のクローンっぷりが悪くなります

とくにそっくりにしゃべる必要がなければ何を使っても構わないでしょう

TTS調教

TTS を使った読み上げでは

  • ”A”を”エー”と発音させたり

  • ”WW I”を”ワールドウォーワン”と発音してくれなかったり

  • ”AI”を”アイ”と発音してしまう

など困った感じになってしまうので、調整が必要ですがMelo-TTSはTTSとしての機能はあまり豊富ではないので、テキストの綴りを頑張っていじって調整する必要があります

また、長すぎるテキストを話させるとメモリ不足になったりストレージが圧迫されてしまったりするので、適度に分割してしゃべらせて後で結合しましょう

そのあたりのスクリプトも僕の Github の実装に同梱されています

生成結果

さて、そのように色々と調整を掛けたりかけなかったりで、以下のような感じに出来上がります。違和感が小さいところは放っておいてます

わりと自然に読み上げができていると思いますので、今回はこれでいくことにします

学習サイトの方では、Youtubeの再生リストから勝手に引っ張って音声再生機能を提供するようにしてあります

テキストを確認しながら音声を再生することができますので、リスニングと発音の確認に役立ててみてください


いいなと思ったら応援しよう!