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ディレクティブで提供される不透明なトークンです。 文字列