インテージテクノスフィア技術ブログ

株式会社インテージテクノスフィアの社員達がシステム開発や仕事に関する技術情報を随時掲載いたします

アイダさん音声AIを作ろうとした(Tacotron2 + Wavenet)

こんにちは、アイダです。プロフィール欄に表示されております私アイダの顔はブログの第1回投稿にて頂いた架空の顔です。

今回はそんな現在顔だけの私に声を付けてみよう!と考えてくれたAI・データビジネス本部Sさんによる音声AIについての投稿です。ではSさん宜しくお願い致します。

※第1回投稿については以下をご参照ください。

www.intage-ts.com


きっかけ

こんにちは、AI・データビジネス本部所属のSです。技術探究委員会での活動は久しぶりで、新しく何か面白いネタが無いかを考えていました。

そこで思いついたのが、インテージテクノスフィア技術ブログのプロフィール欄にアイダさんいらっしゃいますよね。

f:id:intage-tech:20200623161045p:plain ←アイダさん

この人を喋らせることができたら面白いんじゃないかと思いました。

そこで今回は、2017年にGoogleが公開したTacotron2 と Wavenetを使用し、任意のテキスト文から、限りなく肉声に近い声をしゃべるAIの作成に挑戦しました。

なお、在宅勤務の影響でアイダさんボイスの学習に必要なAI・データビジネス本部ボイスを集めることが出来なかったので、今回は、合成音声AIの導入まで挑戦したいと思います。→モチベーションがあれば今後アイダボイスも作ってみたいです。

記事の最後に、私が作った合成音声を載せているのでよかったら聞いてみてください。

※アイダ注:当社は在宅勤務を最大限活用した勤務ルールを制定しております。

テキスト音声合成とは?

テキスト音声合成とは、テキストから人工的な音声を作り出す技術です。

任意の文章を任意の声色で喋らせることができます。

音声合成は、入力がテキストで出力が音声です。

テキストを入力してから音声を出力するまでに必要な工程は3工程あります。

1.テキスト解析器の作成

入力したテキストをAIに理解してもらうには、テキストの読みやアクセントなどの言語的な情報を抽出する必要があります。

例えば「私はAIグループのアイダです。」という文章を言語解析すると

タシハ / ーアイ/ グープノ/ イダデス.」のような表現に変換されます。(多分)

ここではアクセント(赤字)、句の切れ目( / )などの情報が含まれます。

2.言語特徴量を音響特徴量に変換する音響モデルの作成

音響特徴量とは音声の波形を生成するために必要な特徴量です。

この音響モデルは、言語を音声に変換する役割を持っています。

なお、この音響モデルを作成する際、学習するデータをドラえもん声(vc. 大山 のぶ代)にすれば、ドラえもんの声を学習することが出来ますし、学習するデータをAI・データビジネス本部メンバーボイスの平均声にすればアイダボイスとして学習することが出来ます。

(※声を平均化する方法は要検討事項)

3.ボーコーダーの作成

3つ目に必要なのがボーコーダーと呼ばれるものです。

ボーコーダーは、音響特徴量を実際に人が聞こえる音声波形に変換することです。

ここで重要なのが、音響モデルが十分に一般化されていれば、台本にないテキストを入れても高品質な音響特徴量を生成できるようになっていることです。

このように学習時に与えていないデータに対しても正確な予測ができるようにすることを機械学習では汎化といい、音声合成においてもとても重要な評価軸になります。汎化が十分にできていないと入力するテキストによって品質が悪化します。

概要図

上記①②③を簡単にまとめると以下の図のようになります。

上記図の各ステップに基づき、学習から音声出力までしていきます。

各Step作業内容

Step①,②:音声・テキストを取得

今回はネットで公開されていた「The LJ Speech Dataset」を使用します。

https://keithito.com/LJ-Speech-Dataset/

こちらは、音声とテキストデータが一式揃っているので今回の学習に最適なデータセットです。しかし、音声がすべて英語なので、日本語の学習は難しいです。

Step③,④ : 人工知能の学習

今回はpythonのtensorflowを使って学習を行いました。

ローカル環境で学習を走らせたのですが、私が持っているGPUは安物の為、学習にかかる計算時間は1週間以上かかりました。

※GPU: GeForce GTX 1070 メモリ8G

tensorboardを使って学習が進んでいるか確認するとlossが小さくなっており学習が進んでいることが分かります。

Step⑤,⑥,⑦ 完成したモデルの紹介

学習が終わりモデルが完成したので、実際に任意のテキストを入力し喋ってもらいました。

折角なので、学習途中のモデルも出力し、比較も行いました。

(アイダ注:全ての音声ファイルはブログ用にmp3に変換してます)

  • サンプル入力文①↓

My name is AIDA. I was finally able to speak. Hello everyone.

①学習不足にさせた結果:epoch_0002.mp3

→ホラーゲーム音声になりました。何を言っているかは全くわかりません。(女性が喋っていることはわかります)

②学習をまあまあした結果:epoch_0024.mp3

→外人の発音に近づきましたが、まだ単語が学習できていないのか、入力文とは全然違う言葉を喋っている

③しっかり学習した結果:epoch_0500.mp3

→言葉に抑揚が付き、本当に人が喋っているかのような口調になりました!

  • サンプル入力文②↓

Congratulations on joining the INTAGE Group. Good luck to all new employees.

①学習不足にさせた結果:goodluck_2000.mp3

②学習をまあまあした結果:goodluck_24000.mp3

③しっかり学習した結果:goodluck_500000.mp3

また、今回はすべて英語のデータで学習させましたが、無理やり日本語を喋らせるとどうなるかも検証しました。

・入力文↓

私の名前はアイダ。皆さんよろしくね。

しっかり学習した結果:sample1.mp3

→外国の方が喋るときによく耳にする日本語の口調になりました。

→常に英語を喋ってる(学習してる)方は、このような口調になってしまうのですね!

今後アイダボイスで喋ってもらうのに必要なこと

  1. 学習用のボイスを収集する
  2. 現在言語辞書が英語のみなので、言語辞書を日本語辞書にし、日本語対応の形態素解析器に改造する

とりあえずここからでしょうか。

参考文献

以下参考にさせていただきましたサイトのURLとなります。

qiita.com

tosaka-mn.hatenablog.com

tosaka-mn.hatenablog.com

akifukka.hatenablog.com

github.com

以上、ありがとうございました。