Google Cloud PlatformのAIサービスの1つとして提供されている「Cloud Text to Speech」は、日本語の音声読み上げにも対応しています。
しかし、「~だった」や「~しました」という過去形の日本語文章を読み上げると、疑問文のように語尾が上がる音声合成になります。
無料で利用できるText to Speech
Googleが提供する音声合成サービス「Cloud Text to Speech」は、非常に滑らかにテキストを読み上げる音声データを生成してくれます。
「Cloud Text to Speech」は、以下の文字数であれば無料で利用できます。
- 標準音声:0~400万文字
- WaveNet音声:0~100万文字
WaveNet音声というのは標準音声よりも高性能な音声で、よりなめらかに読み上げてくれます。
高性能なWaveNet音声でも、400字詰め原稿用紙250枚分が無料で利用できるので、個人利用では無料で十分です。
Cloud Text SpeechをGASで利用する
無料で利用できるCloud Text to Speechは、ブラウザ上ではお試しとして短い文章しかできません。
そのため、長文を利用するには、Google Cloud PlatformからText to SpeechのAPIを有効化して利用する必要があります。
お手軽にCloud Text to Speechを利用できる方法として、以下の記事でGoogle Apps Script(GAS)での利用方法を解説しています。
Text to Speech APIの発行方法から、GASで実行するためのサンプルコードを紹介しています。
「~だった」など過去形の文章を読み上げると、語尾が上がる?
ただ、Cloud Text to Speechはまだまだ完璧な読み上げが実現できていません。
ひらがなと漢字、カタカナを適切に組み合わせないと、想定しない読み上げをすることがあります。
さらに、問題が発覚したのは、「~だった」や「~しました」といった過去形の文章です。
- 今日は朝ごはんを作りました。
- 暖かい陽気な1日だった。
このような文章をText to Speechに読み上げると、語尾が疑問文のように上がってしまうのです。
- 今日は朝ごはんを作りました。↑
- 暖かい陽気な1日だった。↑
句読点などを工夫したり、エクスクラメーションマーク!を使ってみたのですが、語尾が上がる事象は解消されませんでした。
音声マークアップSSMLでも語尾のイントネーションは対応不可
Text to Speechには、音声読み上げで利用される音声用マークアップ言語SSMLが利用できます。
しかし、Text to Speechに対応しているSSMLのタグを調べたところ、休止をコントロールするbreakタグや、ピッチや速度を調整するprosodyタグで、語尾のイントネーションを調整するものはありませんでした。
そのため、過去形の文章を読み上げた音声データの語尾を上げないようにするのは調べたところ、困難でした。
「です」、「ます」で防ぐ対処法のみ
残念ながら、Text to Speechで語尾が上がらないように対処するには、「です」や「ます」といった現在形の文章に変換することです。
おそらく、もう少しText to Speechの性能が高まれば、語尾が上がる事象も解消すると思われますが、2021年3月時点ではまだまだです。
1文単位の音声読み上げのアプリなどを作る場合は、この仕様に注意して、文章をうまく書き換えるなどの対応しましょう。