Hiho's Blog

ディープラーニングの力で誰でもゆかりさんの声になれる声変換技術を作ってみた

2020-12-28

 2年ほど前に、自分の声を結月ゆかりにする声質変換技術を作り、動画を投稿しました。この技術には利用者の音声データが大量に必要であるという欠点があり、ゆかりさんになりたいというみなさんの願いを叶えるのが難しい状態でした。そこで、この技術を利用者の音声データが不要になるように改良し、誰でも簡単に使えるようにしました。ここではその技術について解説します。

手法

 音声を直接変換しようとすると、利用者の音声データが必要になってしまいます。そこで、音声を直接変換するのをやめて、①音声を構成する要素である音素と音高に分解し、②音素と音高を目標の声(ゆかりさん)に再合成することを考えました。

 ①は、音素の抽出に音声認識とOpenJTalkJuliusを、音高の抽出にWORLDを用いれば簡単に実現できます。そのため、②さえ実現できれば、利用者の声のデータを用意することなく、誰でもゆかりさんの声に変換することができるようになります。

 音素と音高からゆかりさんの声を再合成する部分は、入出力データを大量に用意してから、ディープラーニング技術を用いて実現します。

 まず、VOICEROID2結月ゆかりを用いて、ゆかりさんの音声データを大量に用意します。ゆかりさんの音声から先程の方法を使って音素と音高を抽出します。音声データは約15,000ほど用意しました。今回はゆかりさんの音声データのみを用いたので1万超えの大量のデータが必要でしたが、Seiren Voiceのように色んな人の声を用いれば、1人あたりのデータ量はもっと少なくできると思います。

 音素と音高を入力データに、音声データを出力データとして、ディープラーニングを行います。今回はディープラーニングモデルとしてWaveRNNを用いました。

結果

「ということで、結月ゆかり実況でした。ばいばい!」

入力話者: 著者

入力音声
変換結果

「初見さんいらっしゃい、ゆっくりしていってね」

入力話者: AquesTalk 女性1

入力音声
変換結果

「トースト2枚と、オレンジジュースをお願いします。」

入力話者: JVS001

入力音声
変換結果

「ゼロをダイヤルして、オペレーターを呼んでください。」

入力話者: JVS010

入力音声
変換結果

デモ動画

終わりに

 この技術はエンタメ分野などでいろんな面白いことに使えるかもしれません。なにかお手伝い・ご協力できることがあれば、ツイッター(@hiho_karuta)等でぜひお気軽にお声掛けください。