SpeechSynthesizerインターフェース(v1.0)
ユーザーが製品に質問やリクエストをすると、Alexaが音声応答を返す際にSpeechSynthesizerインターフェースが使用されます。たとえば、ユーザーがAlexaに「シアトルの天気は?」と尋ねると、Alexa Voice Serviceから、Speak
ディレクティブとバイナリオーディオ添付ファイルがクライアントに返されます。クライアントは、このオーディオを処理し、再生します。このページでは、SpeechSynthesizerディレクティブおよびイベントについて説明します。
状態
SpeechSynthesizerには以下の状態があります。
PLAYING:Alexaが話しているとき、SpeechSynthesizerは「playing」状態になります。Alexaの音声再生が完了すると、SpeechSynthesizerはfinished状態に遷移します。
FINISHED:Alexaの音声再生が完了すると、SpeechFinishedイベントに続いてSpeechSynthesizerは「finished」状態に遷移します。
機能API
SpeechSynthesizerインターフェースのバージョン1.0を使用するには、機能APIの呼び出し内で宣言する必要があります。詳細については、機能APIを参照してください。
オブジェクトのサンプル
{ "type": "AlexaInterface", "interface": "SpeechSynthesizer", "version": "1.0" }
SpeechSynthesizerのコンテキスト
Alexaは、コンテキストが必要な各イベントで、playerActivity
(状態)と現在再生中のTTSのoffsetInMilliseconds
がクライアントからレポートされることを想定しています。
コンテキストのレポートの詳細については、コンテキストの概要を参照してください。
サンプルメッセージ
{ "header": { "namespace": "SpeechSynthesizer", "name": "SpeechState" }, "payload": { "token": "{{STRING}}", "offsetInMilliseconds": {{LONG}}, "playerActivity": "{{STRING}}" } }
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
token | Speak ディレクティブで提供される不透明なトークンです。 |
文字列 |
offsetInMilliseconds | TTSの現在のオフセットをミリ秒で示します。 | long |
playerActivity | SpeechSynthesizer のコンポーネントの状態を示します。
有効な値:PLAYINGまたはFINISHED |
文字列 |
プレーヤーのアクティビティ | 説明 |
---|---|
PLAYING | 音声が再生中でした。 |
FINISHED | 音声の再生が終了していました。 |
Speakディレクティブ
このディレクティブは、Alexaからの音声応答が必要なときには必ず、AVSからクライアントに送信されます。ほとんどの場合、Speak
ディレクティブは、Recognize
イベントなど、ユーザーリクエストへの応答として送信されます。ただし、実行されるアクションの前処理としてSpeak
ディレクティブがクライアントに送信される場合もあります。たとえば、ユーザーがタイマーをセットするリクエストをした場合、クライアントにアラームをセットするよう指示するSetAlert
ディレクティブに加えて、ユーザーにタイマーが正常にセットされたことを通知するSpeak
ディレクティブも受信します。
このディレクティブは、JSON形式のディレクティブとバイナリオーディオ添付ファイルで構成される、マルチパートメッセージとしてクライアントに送信されます。
サンプルメッセージ
{ "directive": { "header": { "namespace": "SpeechSynthesizer", "name": "Speak", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "url": "{{STRING}}", "format": "{{STRING}}", "token": "{{STRING}}" } } }
バイナリオーディオ添付ファイル
各Speak
ディレクティブには、マルチパートのメッセージの一部として、対応するバイナリオーディオ添付ファイルが存在します。バイナリオーディオ添付ファイルの前には、以下のマルチパートヘッダーが含まれます。
Content-Type: application/octet-stream Content-ID: {{Audio Item CID}} {{BINARY AUDIO ATTACHMENT}}
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブの関連付けに使用する一意のIDです。 |
文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
url | オーディオコンテンツの一意の識別子です。URLは常にcid: プレフィックスに続いて記述されます。
例: cid: |
文字列 |
format | 返されたオーディオの形式を示します。
有効な値:"AUDIO_MPEG" |
文字列 |
token | 現在のテキスト読み上げ(TTS)オブジェクトを表す不透明なトークンです。 | 文字列 |
SpeechStartedイベント
SpeechStarted
イベントは、 クライアントがSpeak
ディレクティブを処理して合成音声の再生を開始した後、AVSに対して送信される必要があります。
サンプルメッセージ
{ "event": { "header": { "namespace": "SpeechSynthesizer", "name": "SpeechStarted", "messageId": "{{STRING}}" }, "payload": { "token": "{{STRING}}" } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
token | Speak ディレクティブで提供される不透明なトークンです。 |
文字列 |
SpeechFinishedイベント
SpeechFinished
イベントは、クライアントがSpeak
ディレクティブを処理してAlexa TTSがすべてユーザーにレンダリングされた後に送信される必要があります。ユーザーが「アレクサ、止めて」などと発話してAlexa TTSに割り込むなど、再生が完了していない場合は、SpeechFinished
は送信されません。
サンプルメッセージ
{ "event": { "header": { "namespace": "SpeechSynthesizer", "name": "SpeechFinished", "messageId": "{{STRING}}" }, "payload": { "token": "{{STRING}}" } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
token | Speak ディレクティブで提供される不透明なトークンです。 |
文字列 |