TTSの発話品質の向上
はじめに
音声合成マークアップ言語(SSML)は、音声合成のさまざまな側面をコントロール・調整するために使用される、標準化されたXMLベースのマークアップ言語です。コンタクトセンターの環境において、SSMLを活用することで、より自然で、聞き手を引きつけ、プロフェッショナルな印象を与える自動音声体験を作成できます。SSMLタグを使用することで、発音、話し方のテンポ、ピッチ、音量などの属性をコントロールし、日付、通貨、参照番号などの動的な情報を、顧客に対して明確かつ正確に読み上げることができます。
前提条件
シナリオでSSMLを使用するには、Google CloudまたはIBM Watsonのテキスト読み上げ(TTS)連携アカウントが設定されている必要があります。
SSMLは標準化されたマークアップ言語ですが、ご利用のTTSプロバイダーが提供するSSMLのドキュメントを確認することをお勧めします:
音声シナリオにおけるSSMLの例
顧客が今後のサービス予約を確認するために電話をかけてくるシナリオを想定します。予約日とコールバック用の電話番号が、自然かつ明確に伝えられるようにしたいとします。
シナリオの作成
まず、新規の音声シナリオを作成するか、既存のシナリオを開きます。本番環境では、通常、Fetch URLブロック、DB Executeブロック、あるいはCRM連携を使用して、発信者の今後のアポイントメントの詳細を取得します。
以下の例では、2つの変数の設定ブロックを使用しています:
- 予約日は「2024-09-10」であり、
appointment_dateという名前の変数に格納されています。
- お客様に読み上げる電話番号は「18005551212」で、
callback_numberという変数に格納されています。
「プロンプトの再生」ブロックでのSSMLの使用
シナリオ内で、お客様に予約の詳細を伝えたい箇所にプロンプトの再生ブロックを追加してください。「プロンプトの再生」ブロック内では、変数を使用し、プロンプトに「音声」セグメントを追加することで、ユーザーにメッセージを再生します:
Your appointment date of $(appointment_date) is confirmed. If you would like to contact the provider directly, please call $(callback_number).

日付のフォーマット
既定では、TTSエンジンが日付変数を誤って読み上げる場合があります。たとえば、$(appointment_date) に「2024-09-10」という値が含まれている場合、エンジンはこの値を「ツー・ゼロ・ツー・フォー・ダッシュ・ゼロ・ナイン・ダッシュ・ワン・ゼロ」と読み上げる可能性が高いです。
日付が自然に読み上げられるようにするには、interpret-as="date" を指定した <say-as> タグを使用してください。このタグにより、エンジンは値を「{年}年{月}月{序数}日」という形式で読み上げるよう指示されます。format属性には、変数内の年(y)、月(m)、日(d)のフォーマットを正しく指定する必要があります。日付テキスト内の各フィールドは、句読点やスペースで区切られていても構いませんが、format属性で定義する必要はありません。
<say-as interpret-as="date" format="yyyymmdd">$(appointment_date)</say-as>
電話番号のフォーマット
同様に、連続した数字の文字列として保存された電話番号も、誤って解釈される可能性があります。
番号を正しく読み上げさせるには、interpret-as="telephone" を指定した <say-as> タグを使用してください。これにより、TTSエンジンが、聞き手にとって理解しやすく、書き留めやすい方法で番号を読み上げるようになります。
<say-as interpret-as="telephone">$(callback_number)</say-as>
プロンプトの更新とTTS音声の選択
「プロンプトの再生」ブロック内のテキストコンテンツを更新し、前述のフォーマットタグを含めてください。TTSエンジンが指示を正しく処理するようにするには、メッセージ全体を <speak> タグで囲む必要があります。
最終的なテキストは、以下のようになります:
<speak>
Your appointment date of <say-as interpret-as="date" format="yyyy-mm-dd">$(appointment_date)</say-as> is confirmed. If you would like to contact the provider directly, please call <say-as interpret-as="telephone">$(callback_number)</say-as>.
</speak>

SSMLタグが機能するためには、ブロックが互換性のあるTTSエンジンを利用している必要があります。ブロック設定内の「言語」タブに移動してください。「既定のTTS音声」で、ご利用のTTS連携サービス(例:Google Cloud TTSやIBM Watson)からご希望の音声を選択してください。

その他の一般的なSSMLの使用例
SSMLには、基本的な日付や数値のフォーマット設定以外にも、幅広いタグが用意されています。サポートされているタグの完全なリストについては、ご利用のTTSプロバイダーのドキュメントをご参照いただく必要がありますが、以下の例では、文字の読み上げ、強調の追加、再生速度のコントロールなど、コンタクトセンターでよく見られるユースケースをいくつかご紹介します:
<speak>
<!-- Spelling out Reference Numbers -->
Your confirmation code is <say-as interpret-as="characters">XYZ09</say-as>.
<!-- Adding Emphasis -->
Please be aware that this change is <emphasis level="strong">permanent</emphasis>.
<break time="500ms"/>
<!-- Adjusting Speech Rate -->
<prosody rate="slow">Please write down the following security PIN: 5 9 2 1.</prosody>
<!-- Playing Pre-recorded Audio -->
<audio src="https://www.example.com/sounds/brand_jingle.mp3">
(Brand Jingle)
</audio>
<!-- Reading Currency Correctly -->
Your total due is <say-as interpret-as="currency">$45.50</say-as>.
<!-- Structuring with Paragraphs and Sentences -->
<p>
<s>First, verify the green light is on.</s>
<s>Then, press the reset button.</s>
</p>
</speak>