2022年5月 SeirenVoiceシリーズの製品化に伴いデモページは終了しました。
著者の声を録画・録音して声を変換し元の映像と組み合わせてみた映像です。 このときの変換元の音声は撮影用のスマートフォンで録音しており、部屋の残響が含まれるなど声が少し不鮮明になる収録環境ですが、それでもしっかり声変換できていることがわかると思います。
Dwango Media Villageの廣芝です。誰の声でも狙った複数の人の声に変えることができる声変換システムを開発し、実際に声を変えることができるデモページを公開しました。この記事では、声変換技術を研究開発する際に取り組んだ課題について紹介します。
声の変換技術には、リアルタイム性と品質のトレードオフがあります。既存の声変換システムはリアルタイム性を重視する傾向がある一方、品質を重視したものはあまり見かけません。品質を優先した声変換システムがあると応用の幅が広がると思い、研究開発に挑戦しました。
声変換を含む音声合成の品質は、ここ数年の深層学習技術の進歩により大きく向上しました。中でも、音声サンプルを少しずつ生成していく自己回帰という手法を取り入れた深層学習モデルWaveNet [1]により、実際の音声とほぼ変わらない品質の音声を生成できるようになりました。WaveNetは生成する品質が高い一方、生成する速度が遅いという弱点があり、この点を改善したWaveRNN [2] などのモデルも登場しました。今回の声変換システムではWaveRNNを用いて、品質を重視する声変換に取り組むことにしました。
しかし、品質を重視する声変換には課題がありました。「誰の声からでも声変換できるようにする」ことと、「様々な人の声に変換できるようにする」ことです。
深層学習を用いた声変換の手法の1つに、変換元の人と変換先の人に同じ文章を読んでもらって音声のペアデータを用意し、それらのペアデータを学習データにして声変換を行う方法があります。以前行った研究 「変換と高精細化の2段階に分けた声質変換」 [3] でもこの方法を用いました。しかしこの方法には、変換元の人に複数の文章を読んでもらって音声を録音し、さらにその音声データで深層学習を行う必要があるため、とても手間がかかるという弱点があります。そこで、変換元の音声データと学習のやり直しを必要としないような声変換の方法を考えることにしました。
声変換の深層学習に変換元の音声データが必要になってしまうのは、声変換を直接的(End-to-End)に深層学習で解決しようとしているためです。そこで、音声データを話者に依存しない要素に分解することで、変換元の声と変換先の声に対する処理を分離し、変換元の音声データを不要にする手法を考えました。今回は分解する要素として、言語情報を表現するために音素を、非言語情報のために音高と発音タイミングを選びました。まず学習時には、既存の技術を用いて変換先となる音声データからこれらの要素を抽出し、それらから抽出元の音声を合成する深層学習モデルを作ります。実際に声を変換するときは、変換元の声から音素と音高を抽出し、深層学習モデルを使って変換先の声に音声合成します。変換元と変換先の音高に差があるため、音高を合わせるために線形変換を施しています。この方法により、音素と音高から音声合成する部分だけを学習するだけで、変換元の音声データを一切用いずに、誰の声からでも声を変換できるようになりました。音素の抽出には OpenJTalk を、音高の抽出には WORLD を用いました。
深層学習を使って様々な人の声で音声合成する方法はいくつかあります。この課題の難しさには、技術的な問題の他に、日本語の大規模で高品質な音声データが手に入りにくいという問題がありました。このような状況の中、100人のプロフェッショナル話者による高音質な音声データ「JVSコーパス」 [4] が登場して状況は一変し、日本語の音声データを100人の声に変換する実験が可能になりました。JVSコーパスを活用することで音声データの問題は解決しましたが、ここから様々な人の声に変換できる深層学習を実現するために、様々な調整を行いました。
まずはデータクレンジングを行いました。JVSコーパスには音声が約1万データあります。これらの音声データの波形を20時間ほどかけてすべて眺め、不完全なデータを省いたり、テキストラベルを修正したり、句読点の位置を合わせたりしました。
次に、深層学習がうまくいくようなパラメータを探索しました。自動最適化フレームワーク Optuna を用いて、GPUを12枚使った実験を3ヶ月(GPU稼働時間は合計約26,000時間)行うことで、満足のいく結果を出すパラメータを見つけました。探索したパラメータは学習率、音声長、層の数、チャンネル数、重みの初期化関数などの10種類を対象にしました。パラメータ探索のための試行回数は1,280回でした。1回あたりの学習時間は1週間ほどかかる計算でしたが、枝刈り機能を用いたため効率よく探索できました。
このような試行錯誤をした結果、誰の声でも100人の声に変えられる声変換システムを作ることができました。
作成した声変換システムを使って、著者の声を変換したサンプル音声を用意しました。変換前の声と変換後の声を比較できます。
入力音声 | 変換後音声1(女声 JVS010) | 変換後音声2(男声 JVS041) | 変換後音声3(女声 JVS058) | 変換後音声4(男声 JVS021) |
---|---|---|---|---|
更に、この声変換システムのデモページを公開しました。パソコンでもスマートフォンでも、音声を録音できるブラウザであれば実際に声を変換できます。ぜひお試しください。
リアルタイム性を度外視して品質を重視した声変換に興味を持ち、挑戦し、実際に声を変換できるデモを完成させることができました。今回の声変換システムはまだ完璧ではなく、例えば、今回用いた音素では表現できない声(笑い声など)はうまく変換できません。これからは、エンタメでどういう応用が可能なのかを考えつつ、できることを増やしていければと考えています。
高道慎之介先生が公開してくださったJVSコーパスのおかげで、今回の声変換システムの開発に挑戦できました。楽しく夢のある音声データの公開、本当にありがとうございます。
[1] Oord, A. V. D., Dieleman, S., Zen, H., Simonyan, K., Vinyals, O., Graves, A., ... and Kavukcuoglu, K.: Wavenet: A generative model for raw audio. arXiv preprint, 2016. arXiv:1609.03499
[2] Kalchbrenner, N., Elsen, E., Simonyan, K., Noury, S., Casagrande, N., Lockhart, E., ... and Kavukcuoglu, K.: Efficient Neural Audio Synthesis, ICML, 2018.
[3] Miyamoto, S., Nose, T., Hiroshiba, K., Odagiri, Y., and Ito, A.: Two-Stage Sequence-to-Sequence Neural Voice Conversion with Low-to-High Definition Spectrogram Mapping, IIH-MSP, 2018. DOI:10.1007/978-3-030-03748-2_16
[4] Takamichi, S., Mitsui, K., Saito, Y., Koriyama, T., Tanji, N., and Saruwatari, H.: JVS corpus: free Japanese multi-speaker voice corpus. arXiv preprint, 2019. arXiv:1908.06248