音声ボットにおけるSSML活用方法

SSML標準タグの定義: Speech Synthesis Markup Language (SSML) Version 1.1
標準タグについてのサポートは、各ベンダーに依存します。Google、MicrosoftそれぞれのSSMLタグ説明サイトをご覧ください。

  1. Microsoft Azure SSML: Speech Synthesis Markup Language (SSML) overview - Speech service - Azure AI services | Microsoft Learn

Microsoftにおいては、以下ページからペイロードを作成することができます。
https://azure.microsoft.com/en-us/services/cognitive-services/text-to-speech/#features

このページにある通り、現在日本語においては男声、女声が一つずつ選べ、会話スタイルはGeneral、Chat、CustomerService、Cheerfulのみが選べます。ちなみにEnglish (United States)においてはさらに多くのStyleがサポートされています。

このページで作成したペイロードが無事に再生されれば、それをSmartAssistで読み上げるメッセージノードのPlain Textに貼り付けると、無事再生が行われます。ボットビルダーにて、メッセージノードの詳細画面にてSmartAssist Gatewayを追加し、そちらに作成します。
なお、この場合はSmartAssist側のTTSはAzureを選択している必要があります。

  1. Google:Speech Synthesis Markup Language (SSML)  |  Cloud Text-to-Speech API  |  Google Cloud
    日本語ページがありますので参照してください。SmartAssist側への設定は#1と同様ですが、TTSとしてGoogleを選択してください。
    注意事項:このページのスニペットには…などと記載がありますが、ヘッダーについては以下のように記載する必要があります。
<speak xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" version="1.0" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<prosody pitch="-1%" rate ="0.99" contour= "(80%,+20%)">Hello, I work at <phoneme alphabet="ipa" ph="kor"> Kore </phoneme> AI </prosody>
</voice>
</speak>
  1. Tips
  • 要件に依存するが、AzureによるSSML制御はエミュレーターが存在するため、先にスニペットを作成した上でKore側へ実装すると効率が良い。また制御内容も直感的であるため、Azureからトライすると良いと考える。
  • SSMLによる制御の前に、数字をひらがなにする、句読点をつけるなどで抑揚やアクセントなど、音声合成のアウトプットが変わるため、そちらからトライするほうが望ましい。SSMLにおいては、間を数秒置く、などのときなど利用を限定するのも方針として良いかもしれない