Amazon Polly を自分好みに喋らせる方法

Amazon Polly を自分好みに喋らせる方法

Amazon Polly

Amazon Polly は、テキストを人間の音声に変換してくれるサービスです。ディープラーニングにより、自然に聞こえるように人間の音声を合成します。また様々な国の言語に対応しているので、対象国に合わせた読み上げサービスを提供することも可能です。例えば、同じ英語でも国によってイントネーションなど様々ですが、英語だけでも 7 種類用意されています。
同じサービスとして Google Text To Speech などがありますが、両方試して感じたのは Amazon Polly の方が自由度が高いイメージでした。(個人の感想です)
今回は、 Amazon Polly で期待通りに喋ってもらう方法について紹介いたします。これは AWS のコンソールから試すことができる内容ですので、ぜひ試してください。

Amazon Polly の機能

これから Amazon Polly のイントネーションの変え方や発音の変更方法などを紹介しますが、Amazon Polly の機能に関連した大切なことをお伝えします。
今回紹介する方法は、必ず読み上げエンジンを「スタンダード」にしてください。
Amazon Polly にはエンジンとして「ニューラル」「スタンダード」の2種類があり、「ニューラル」の説明に「可能な限り自然で人間に似た音声を生成します。」と記載されているため、「ニューラル」を選択した方がいいと思われがちですが、この後紹介する SSMS に対応していない機能があります。全ての機能を利用するには「スタンダード」でなければいけません。

個人的に Amazon Polly が良いと思った一つに、ファイル形式として「ogg」が選択できることがあります。
私が未熟なだけかもしれないですが、例えば Python でこの音声を利用するとき一般的な方法で mp3 を再生しようと思うと ffmpeg を利用することになります。しかし ffmpeg は OS により異なっており、環境に左右されてしまいます。一方 ogg であれば、多くのモジュールで対応されており、好みのモジュールを利用することができます。

メイン画面

AWS コンソールの Amazon Polly の画面を見てみましょう。

先にも述べたようにエンジンは「スタンダード」を選択しておきましょう。好みに応じて音声から「女性」「男性」を選択します。入力テキストに喋らせたい文章を入力して「音声を聴く」をクリックすると、設定した内容で Amazon Polly が喋ってくれます。
非常に簡単に自然な言葉で話してくれることが判ります。しかし多くの文章を喋ってもらっていると、イントネーションや発音が異なったり、ワンテンポ遅らせたいなど細かな要望が出てきます。

イントネーション

まずはイントネーションを変える方法を見てみましょう。 Amazon Polly では日本語のデフォルトで入力テキストに「こんにちは、ミズキです。読みたいテキストをここに入力してください。」と入力されています。この文章の中で「ミズキ」は「ミ」が強く発音されます。これを「キ」を強く発音させたいとしましょう。その場合、「ミズ’キ」のように「キ」の前にシングルクォーテーションを入力します。そして「音声を聴く」をクリックすると「キ」が強く発音されることが判るでしょう。

発音

先ほどは名前が「ミズキ」とカタカナで入力されていました。しかしプログラムの都合上、漢字でしか入力できない場合、正しい読み方を教えてあげる必要があります。
例えば、同じ「ミズキ」でも「水樹」「瑞樹」「瑞希」など多数存在します。特に「瑞希」と入力すると Amazon Polly では「ミキ」と発音します。そのため、 Amazon Polly に発音方法を教えてあげましょう。
そのためには音声合成マークアップ言語 SSML (Speech Synthesis Markup Language) を使用します。画面上の「SSML」にチェックを入れ、入力テキストを次のように入力します。

<speak>こんにちは、<phoneme type="ruby" ph="ミズキ">瑞希</phoneme>です。</speak>

全体を speak タグで括っています。そして「ミズキ」と呼ばせたい箇所を phoneme タグで括り、 type 属性を「ruby」、 ph 属性を「ミズキ」としました。そして音声を再生してみると、「ミズキ」と発音してくれることが判ります。

遅延

通常であれば、句読点を入れることで文章を上手く区切ってくれます。しかし更にワンテンポ遅らせる方法があります。それが break タグです。「こんにちは、」と「ミズキです。」の間に、次のように break タグを入れてみましょう。

<speak>こんにちは、<break time="1s"/>ミズキです。</speak>

break タグの time 属性を「1s」としました。これで再生すると「こんにちは、」と「ミズキです。」の間に 1 秒のためがあります。 time 属性を「1s」としたため 1 秒ためてくれましたが、「500ms」とすると 0.5 秒ためてくれるように細かな調整が効きます。

かゆいところに手が届く機能

面白い機能として、息継ぎがあります。入力テキストに次のように入力して再生してみてください。今回は判りやすく息継ぎを強調した喋り方にしています。

<speak><amazon:auto-breaths volume="x-loud" frequency="x-high" duration="x-long">こんにちは、ミズキです。</amazon:auto-breaths></speak>


他にも次のように入力すると囁いてくれる話し方もあります。
<speak><amazon:effect name="whispered">こんにちは、ミズキです。</amazon:effect></speak>


まとめ

今回は、Amazon Polly を自分好みに喋らせる方法について紹介しました。今回紹介した以外にも下のURL にサポートされているタグが紹介されており、まだまだここでは紹介しきれない機能が多数あることが判ります。
https://docs.aws.amazon.com/ja_jp/polly/latest/dg/supportedtags.html

実際には、この記事を見ている方であればプログラムで喋らせることが多いと思いますが、今回紹介した内容がベースになりますので、どういうことができるのか知っておく必要はあるかと思います。ぜひ試してみてください。
» エンジニア登録はこちら