Amazon Polly はじめての SSML入門

記事タイトルとURLをコピーする

今年の re:Invent もたくさんのサービスが発表されましたね。
2日間キーノートを日本からリアルタイムで聞いていましたが、自動運転ミニカー「AWS DeepRacer」の登場にはびっくりしました。
そしてre:InventでまさかCOBOLという単語が出てくるとは…。

さて、今日はそんな re:Invent で発表されたサービスではなく Amazon Polly で使えるSSMLについて初心者向けに説明します。
Amazon Polly は新しいサービスではないけれど、これからいろんなところで活用が期待できるサービスなのでこの機会に再確認しておきましょう。

Amazon Polly とは

高度な深層学習技術を使用したテキスト読み上げサービスです。
「テキストの読み上げ」というと聞くほうが疲れてしまう不自然な出来栄えのものが少し前までは多かったですよね。
最近は日本語でもナチュラルな発音をする読み上げサービスが増えてきました。
Amazon Polly もテキストを用意するだけで、とても流暢に日本語を読み上げてくれます。

Amazon Polly で作成した音声はダンロードして利用したり、S3に格納しあらゆるシステムから利用することが可能です。
Alexaスキルから Amazon Polly を使用し、おしゃべりさせちゃうこともできます。

また、クラウド型コンタクトセンター Amazon Connect でも問い合わせフローの中で Amazon Polly を使うことができます。
録音した音声データを用意しなくていいのは便利ですよね。
ちょっとだけ音声のメッセージを変更したい。なんていう場面でも、全文章の再録音ではなくテキストの部分修正だけで変更対応ができてしまいます。

そんな自然な読み上げをしてくれる Amazon Polly ですが、場面によっては発音、声量、声の高さ、速度など気になるときも出てきます。
そんなときはSSMLで調整ができるんです。

音声マークアップ言語SSMLとは

テキスト読み上げ (TTS) 音声の音色を変更できるようにするのが、音声合成マークアップ言語 (SSML) 機能です。
超雑にまとめると、HTMLタグの音声版って思っておけば雰囲気よさそうです。

サポートされているタグは以下ドキュメントに記載があります。
本エントリでは非常にざっくりとした説明にしぼりますので、詳細はドキュメントを参照してください。
Amazon Polly でサポートされている SSML タグ - Amazon Polly

この中から頻度の高そうな3つのタグだけをピックアップして、SSMLを知らなかった人でも「SSML?オレつかえるぜ」って思わせるのが本日のゴールです。

よく使いそうな3つのSSML

<break> 一時停止の追加

区切りを入れるタグは<p>や<s>もあります。こちらは長文で便利そうです。
ちょっとだけ読み上げる音声を調整する場合はとりあえず<break>だけでものりきれそうです。

ちょっとだけ区切りを入れたい場合は以下のタグを入れればOK。

<break time=“1s"/>

これで1秒の間が空きます。秒(s)の他にミリ秒(ms)も使えます。

Amazon Connect で音声読み上げをすると冒頭部分が欠けて聞こえることがあります。
そんなときは冒頭部分に<break>をいれておくとよさそうです。

<say-as> 特殊なタイプの単語の発声方法を制御する

特定の文字、単語、および数字を発声する方法を Amazon Polly に指示します。
例えば「12345」というテキストは「いちまん にせん さんびゃく よんじゅう ご」と読まれます。
これを「いち に さん し ご」と読ませたい場合は以下のように記述します。

<say-as interpret-as="digits">12345</say-as>

interpret-as で利用できる値はたくさんありますが、日本語の場合は使えるものが限定されます。
初心者は以下2つを覚えておくと使えそうな予感がします。

digits: 各桁を個別 (例: 1-2-3-4) にスペルアウトします
spell-out: a-b-c のようにテキストの各文字をスペルアウトします

<prosody> 音量、話す速度、ピッチを制御する

強調するタグ <emphasis> もありますが、いまいち自然な感じの強調になる気がします。
<prosody>でお好みにあわせてコントロールした方がよさそうです。
音量:volume/速度:rate/ピッチ:pitch の3つが制御できます。
それぞれmedium といった定義値または相対数値で指定ができます。
同じタグの中で複数の属性を含めることもできます。

<speak> Each morning when I wake up, <prosody volume="loud" rate="x-slow">I speak quite slowly and deliberately until I have my coffee.</prosody> </speak>

実際に聞いてみよう

上記の3つのタグを使った音声を準備しました。

[audio mp3="http://blog.serverworks.co.jp/tech/wp-content/uploads/2018/12/speech_20181206045941680.mp3"][/audio]

読み上げている原稿


こんにちは、ミズキです。
PollyでSSMLの動作確認をします。

数字そのままだと12345。
スペルアウトすると1234512345とゆっくり読むこともできます

AWS マネジメントコンソールの Amazon Polly 画面で簡単に読み上げとSSMLを試すことができます。


ここまで読んだあなたはSSML初心者卒業です。やったね!