Monthly Hacker's Blog

プログラミングや機械学習の記事を中心に書きます。

声優統計コーパスを使ったWaveNet音声合成/歌声合成に挑戦します

はじめに

こんにちは、dhgrsです。3月に研究室の先生の退官パーティがあったのですが、現役時代に代が被っていない先輩(つまりほぼ初対面の先輩)に「声優統計コーパス使った音声合成楽しみにしているよ」と言われてびっくりしました。詳しくお話を聞いてみるとどうやら声優統計コーパスを作成した声優統計学会というサークルの関係者だったようで、改めて色々なことをやっている人がいる面白い研究室だったなと思ったりしていました。

そのあと声優統計コーパスを使ったVQ-VAEを結構試したのですが、話者の違いはまだしも、感情付与がかなり難しいようで思うような成果がでなかったです。もっと粘って色々試してみてもいいのですが、費用対効果も悪いので、別の方向で声優統計コーパスを使ってみることにしました。本記事では、声優統計コーパスが音声合成屋の視点から見てどういうデータセットかの簡単なまとめと、今後僕がやろうとしていることを紹介します。

声優統計コーパスとは

日本声優統計学会が公開している音素バランス文と、その読み上げ音声からなるコーパスです。以下、基本的な情報です。

  • 音素バランス文数: 100
  • 音声ファイル数/音素バランス文: 9 (3話者 x 3感情)
  • 録音音質: 48kHz / 16bit
  • 総録音時間: 約2時間

このコーパスの一番の売り(だと個人的に思う点)は、3人のプロ声優が通常/喜び/怒りの3パターンで録音しているという点です。他にも個人での研究・分析目的であれば無償で利用可能など、他にも良いところはたくさんあります。

VTuberが流行っていて、(音声変換も含めた広義の)音声合成の需要は急激に増えているはずです。それではここで、Qiitaの検索結果をご覧ください。
Search result of “声優統計コーパス” - Qiita
本記事の執筆時、ヒット数1件です。こんな貴重なデータセットなのに、もったいない、もっと多くの人に使ってもらいたいと思いました。

そこで、僕が個人的にやってみたいことだけでなく、多くの人が声優統計コーパスを使いやすくなるようなプロジェクトを始めることにしました。

声優統計コーパスに足りないもの

音素アライメントだと思っています。分野外の方向けに簡単に説明すると、何秒から何秒は「あ」と話していて、次の何秒から何秒は「い」と話しているといった情報を、アライメントと言います。文字を音素という単位に分割して、時間と対応付ければ音素アライメントと言います。これがあると、例えば音素アライメントを特徴量としてWaveNetを学習することで、任意の音素に従って発話する音声合成ができます。

現状の声優統計コーパスには、音素アライメントはなく、この音声ファイルはこの文章の読み上げであるという非常に荒い情報しかありません。(補足ですが、Tacotronなど最新の音声合成手法では、この情報だけでTTS; Text to Speechを学習させることができます)これだと、入門のハードルが少し上がってしまうと思っています。そして何より、僕のやってみたいと思っていること、すなわちWaveNet 歌声合成ができません。

WaveNet音声合成/歌声合成プロジェクト

WaveNetは音高や音素などを特徴量として与えることで、合成される音声をある程度制御できることが知られています。これはつまり、歌声合成ができる可能性があるということだと思っています。歌声合成では、何秒から何秒はA3の音高で「こ」、何秒から何秒はB3の音高で「え」のように、指定した時間に指定した音高の指定した文字で歌声を合成できることが必要最低条件だと思います。そこで、音高と文字を局所特徴量として与えたWaveNetを学習することで、歌声合成器として使えるのではないかという発想です。この過程として、文字アライメントおよび音高アライメントが必要になります。まずは文字アライメントを学習しようということで、リポジトリを作りました。

github.com

CTCロスを使うことで、アライメントを学習しようという発想です。現状では1D conv ResNetベースでロスがなんとか200を切るくらいで、正直精度はかなり悪いです。スペクトログラムを入力にして、UNet風にするのも良いかもしれません。また、普通の音声で学習させて歌声を合成できるのか、かなり疑問ではありますが、やるだけやってみようと思います。日本語でも構いませんので、GitHubでissueをいただけると、助かります。もちろんtwitterやブログコメントなどでも大丈夫です。GWあたりにメインの議論をするようなissueを立てるなどして、多くの人が参加しやすいように整備する予定です。

さいごに

声優統計コーパスの紹介と、それを使って僕がやろうとしていることを紹介してきました。声優統計コーパスがきっかけになって、Qiitaに音声合成やってみた記事がたくさん投稿されるくらい一般的な技術になることを期待しています。