SpeechRecognizer インターフェース
ユーザーの発話はすべてSpeechRecognizerを利用します。これは、Alexa Voice Service (AVS)のコアインターフェースです。Alexaがユーザーの発話をキャプチャしたり、追加の情報が必要な場合にユーザーに質問したりするためのディレクティブやイベントを提供します。
また、クライアントは、このインターフェースを使ってAVSにAlexaとの対話がどのように開始されたか(ボタンの長押し、タップしてリリース、音声/ウェイクワードによる起動など)を伝え、製品に適した自動音声認識(ASR)プロファイルを選択することでAlexaが正確にユーザーの発話を理解して応答できるようにすることができます。
バージョンによる変更点
ExpectSpeech
のinitiator
の型が、不透明な文字列からオブジェクトに変更されました。詳細は、ExpectSpeech
を参照してください。この変更には下位互換性がありません。
状態ダイアグラム
以下のダイアグラムは、SpeechRecognizerコンポーネントによって制御される状態の変化を表しています。ボックスはSpeechRecognizerの状態、コネクターは状態の遷移を表します。
SpeechRecognizerには以下の状態があります。
IDLE:ユーザー発話のキャプチャを行う前、SpeechRecognizerはidle状態です。また、AVSとの音声対話が完了した後も、SpeechRecognizerはidle状態に戻る必要があります。これは、音声リクエストが正常に処理されたとき、またはExpectSpeechTimedOut
イベントに指定された時間を過ぎたときに発生する可能性があります。
さらに、SpeechRecognizerは、マルチターンの対話中にidle状態に戻ることもあります。その時点で、ユーザーからの追加の発話が必要な場合は、ユーザーが新規で対話を開始しなくてもidle状態からexpecting speech状態に戻ります。
RECOGNIZING:ユーザーがクライアントとの対話を開始するとき、具体的には、キャプチャされたオーディオがAVSにストリーミングされたとき、SpeechRecognizerはidle状態からrecognizing stateに遷移する必要があります。SpeechRecognizerコンポーネントは、クライアントが音声の録音を停止する(またはストリーミングが完了する)までrecognizing状態を保ち、その時点でrecognizing状態からbusy状態に遷移します。
BUSY:音声リクエストの処理中、SpeechRecognizerはbusy状態になります。コンポーネントがbusy状態を抜けるまで、別の音声リクエストを開始することはできません。busy状態からは、リクエストが正常に処理(完了)した場合にidle状態、Alexaがユーザーから追加の発話を必要とする場合はexpecting speech状態に、それぞれ遷移します。
EXPECTING SPEECH:SpeechRecognizerは、ユーザーからの追加のオーディオ入力が必要な場合にexpecting speech状態になります。expecting speech状態からは、ユーザーの対話が発生するか、ユーザーに代わって対話が自動的に開始されたときにrecognizing state状態に遷移します。ユーザーの発話が指定したタイムアウト期間内に検出されなかった場合、idle状態に遷移する必要があります。

機能API
SpeechRecognizerインターフェースのバージョン2.0を使用するには、機能APIの呼び出し内で宣言する必要があります。詳細については、機能APIを参照してください。
オブジェクトのサンプル
{ "type": "AlexaInterface", "interface": "SpeechRecognizer", "version": "2.0" }
SpeechRecognizerのコンテキスト
ウェイクワードが有効な場合、Alexaはすべてのクライアントから現在設定されているウェイクワードについてレポートされることを想定しています。
コンテキストのレポートの詳細については、コンテキストの概要を参照してください。
サンプルメッセージ
{ "header": { "namespace": "SpeechRecognizer", "name": "RecognizerState" }, "payload": { "wakeword": "ALEXA" } }
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
wakeword | 現在のウェイクワードを識別します。
有効な値:"ALEXA" |
文字列 |
Recognizeイベント
Recognize
イベントは、ユーザー音声をAVSに送信し、その音声を1つ以上のディレクティブに翻訳するために使用します。このイベントは、マルチパートのメッセージとして送信する必要があります。このマルチパートのメッセージは、最初のパートにJSON形式のオブジェクト、2番目のパートに製品のマイクでキャプチャされたオーディオが格納されます。レイテンシーを低減するにはキャプチャしたオーディオをAVSにストリーミング(チャンクに分割して送信)することをお勧めします。この場合、ストリームにはチャンクあたり10ミリ秒のキャプチャオーディオ(320バイト)を含める必要があります。
Alexaとの対話が開始されると、マイクは以下の条件に当てはまるまでオープンのままになります。
StopCapture
ディレクティブを受信した- Alexaサービスによってストリームがクローズされた
- ユーザーが手動でマイクをクローズした(ボタンの長押しなど)
profile
パラメーターとinitiator
オブジェクトは、AlexaにどのASRプロファイルを使うとキャプチャされたオーディオを最もよく理解できるか、およびAlexaとの対話がどのように開始されたかを伝えます。
音声によって起動する製品の場合、クラウドベースのウェイクワード検証の要件に従う必要があります。
AVSに送信されるすべてのキャプチャされたオーディオは、以下の仕様でエンコードする必要があります。
- 16ビットのリニアPCM (LPCM16)
- 16kHzのサンプルレート
- シングルチャンネル
- リトルエンディアンのバイトオーダー
プロトコル固有の例については、HTTP/2リクエストの構成を参照してください。
サンプルメッセージ
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa.See Context for details. ], "event": { "header": { "namespace": "SpeechRecognizer", "name": "Recognize", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "profile": "{{STRING}}", "format": "{{STRING}}", "initiator": { "type": "{{STRING}}", "payload": { "wakeWordIndices": { "startIndexInSamples": {{LONG}}, "endIndexInSamples": {{LONG}} }, "token": "{{STRING}}" } } } } }
バイナリオーディオ添付ファイル
各Recognize
イベントには、マルチパートメッセージの一部として対応するバイナリオーディオ添付ファイルが必要です。以下のヘッダーは、各バイナリオーディオ添付ファイルに必須です。
Content-Disposition: form-data; name="audio" Content-Type: application/octet-stream {{BINARY AUDIO ATTACHMENT}}
コンテキスト
このイベントでは、製品がAlexaに対して、すべてのクライアントコンポーネントのステータスをコンテキストオブジェクトに格納して報告しなければならない。その他の情報については、コンテキストを参照してください。
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | Alexaに送信されるRecognize イベントに対して、クライアントが作成する必要のある一意のIDです。このパラメーターは、特定のRecognize イベントへの応答として送信されるディレクティブの関連付けに使用する一意のIDです。 |
文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
profile | 製品に関連付けられた自動音声認識(ASR)プロファイルを識別します。AVSは、それぞれ異なる距離からのユーザー音声に最適化された3つのASRプロファイルをサポートしています。
有効な値: CLOSE_TALK 、NEAR_FIELD 、FAR_FIELD です。 |
文字列 |
format | キャプチャされたオーディオのフォーマットを識別します。
有効な値: AUDIO_L16_RATE_16000_CHANNELS_1 。 |
文字列 |
initiator | Alexaに対話がどのように開始されたかを伝えます。 このオブジェクトは、対話がエンドユーザーによって開始された(ウェイクワード、タップ、長押し)場合に必須です。 initiator がExpectSpeech ディレクティブに存在する場合、後続のRecognize イベントで返される必要があります。initiator がExpectSpeech ディレクティブにない場合、後続のRecognize イベントに含めるべきではありません。 |
オブジェクト |
initiator.type | Alexaとの対話を開始するためにユーザーが行ったアクションを表します。
有効な値: PRESS_AND_HOLD 、TAP 、WAKEWORD 。initiator.type はExpectSpeech ディレクティブで提供され、その文字列が後続のRecognize イベントでinitiator.type として返される必要があります。 |
文字列 |
initiator.payload | initiatorに関する情報を含みます。 | オブジェクト |
initiator.payload.wakeWordIndices | このオブジェクトは、initiator.type がWAKEWORD に設定されている場合には必須です。 wakeWordIndices には、startIndexInSamples とendIndexInSamples を含みます。その他の詳細については、クラウドベースのウェイクワード検証の要件を参照してください。 |
オブジェクト |
initiator.payload.wakeWordIndices.startIndexInSamples | オーディオストリーム内のウェイクワードが開始するインデックスを表します(サンプル数)。開始インデックスのウェイクワード検出との誤差は、50ミリ秒以内である必要があります。 | long |
initiator.payload.wakeWordIndices.endIndexInSamples | オーディオストリーム内のウェイクワードが終了するインデックスを表します(サンプル数)。終了インデックスと検出されたウェイクワード終了との誤差は、150ミリ秒以内である必要があります。 | long |
initiator.payload.token | 不透明な文字列です。この値は、先行するExpectSpeech ディレクティブのペイロードに存在する場合にのみ必須です。 |
文字列 |
プロファイル
ASRプロファイルは、異なる製品、フォームファクター、音響環境、利用用途に合わせて調整されます。profile
パラメーターの有効な値についての詳細を、以下の表に示します。
値 | 最適な聞き取り距離 |
---|---|
CLOSE_TALK | 0~2.5フィート(0~0.76m) |
NEAR_FIELD | 0~5フィート(0~1.5m) |
FAR_FIELD | 0~20+フィート(0~6.1m以上) |
initiator
initiator
パラメーターはAVSにAlexaとの対話がどのように開始されたかを伝え、以下の2つのことを決定します。
- クラウドで発話の終了が検出されたときに
StopCapture
をクライアントに送信するかどうか - ストリームでクラウドベースのウェイクワード検証を実施するかどうか
initiator
は、各SpeechRecognizer.Recognize
イベントのペイロードに含まれる必要があります。有効な値は以下のとおりです。
値 | 説明 | サポートされるプロファイル(複数可) | StopCaptureは有効か | ウェイクワード検証は有効か | ウェイクワードのインデックスは必要か |
---|---|---|---|---|---|
PRESS_AND_HOLD | ボタン(物理またはGUI)を押すことで開始し、離すことで終了するオーディオストリームです。 | CLOSE_TALK |
N | N | N |
TAP | ボタン(物理またはGUI)をタップして離すことで開始し、StopCapture ディレクティブを受信したときに終了するオーディオストリームです。 |
NEAR_FIELD 、 FAR_FIELD |
Y | N | N |
WAKEWORD | ウェイクワードの使用により開始し、StopCapture ディレクティブを受信したときに終了するオーディオストリームです。 |
NEAR_FIELD 、 FAR_FIELD |
Y | Y | Y |
StopCaptureディレクティブ
このディレクティブは、AVSがユーザーのインテントを特定したとき、または発話の終了が検出されたときにキャプチャを停止するようクライアントに指示します。このディレクティブを受信すると、クライアントは直ちにマイクをクローズし、ユーザー発話の聞き取りを停止する必要があります。
StopCapture
はダウンチャンネル上でクライアントに送信され、発話がまだAVSにストリーミングされている間に受信することがあります。StopCapture
ディレクティブを受信するには、クラウドエンドポイント(NEAR_FIELD
、FAR_FIELD
など)をサポートするRecognize
イベントでprofile
を使用する必要があります。サンプルメッセージ
{ "directive": { "header": { "namespace": "SpeechRecognizer", "name": "StopCapture", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブの関連付けに使用する一意のID |
文字列 |
ExpectSpeechディレクティブ
ExpectSpeech
は、Alexaがユーザーリクエストを満たすために追加の情報を必要としているときに送信されます。このディレクティブは、マイクをオープンしてユーザー発話のストリーミングを開始するようクライアントに指示します。指定したタイムアウト期間内にマイクがオープンされない場合、ExpectSpeechTimedOut
イベントをクライアントからAVSに送信する必要があります。
Alexaとのマルチターンの対話中、デバイスは、クライアントにユーザー発話の聞き取りを開始するよう指示するExpectSpeech
ディレクティブを少なくとも1つ受信します。ExpectSpeech
ディレクティブのペイロードにinitiator
オブジェクトが存在する場合、後続のRecognize
イベントでinitiator
オブジェクトとして返す必要があります。ペイロードにinitiator
がない場合、後続のRecognize
イベントにinitiator
を含めるべきではありません。
オーディオの優先順位付けを管理するルールの詳細は、対話モデルをご確認ください。
サンプルメッセージ
{ "directive": { "header": { "namespace": "SpeechRecognizer", "name": "ExpectSpeech", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "timeoutInMilliseconds": {{LONG}}, "initiator": { "type": "{{STRING}}", "payload": { "token": "{{STRING}}" } } } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブの関連付けに使用する一意のID |
文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
timeoutInMilliseconds | クライアントがマイクのオープンとAVSへのユーザー発話のストリーミング開始をどのくらい待機するべきかをミリ秒で指定します。指定したタイムアウト期間内にマイクがオープンされない場合、ExpectSpeechTimedOutイベントを送信する必要があります。この動作の主な利用用途は、PRESS_AND_HOLDの実装環境です。 | long |
initiator | 対話に関する情報を含みます。このパラメーターが存在する場合、後続のRecognize イベントでAlexaに返す必要があります。 |
オブジェクト |
initiator.type | 不透明な文字列です。このパラメーターが存在する場合、後続のRecognize イベントでAlexaに返す必要があります。 |
文字列 |
initiator.payload | initiatorに関する情報を含みます。 | オブジェクト |
initiator.payload.token | 不透明な文字列です。このパラメーターが存在する場合、後続のRecognize イベントでAlexaに返す必要があります。 |
文字列 |
ExpectSpeechTimedOutイベント
このイベントは、ExpectSpeech
ディレクティブを受信したが、指定したタイムアウト期間内にユーザー発話を聞き取れなかった場合、AVSに送信する必要があります。
サンプルメッセージ
{ "event": { "header": { "namespace": "SpeechRecognizer", "name": "ExpectSpeechTimedOut", "messageId": "{{STRING}}", }, "payload": { } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
ペイロードのパラメーター
空のペイロードを送信する必要があります。
ユーザーの発話はすべてSpeechRecognizerを利用します。これは、Alexa Voice Service (AVS)のコアインターフェースです。Alexaがユーザーの発話をキャプチャしたり、追加の情報が必要な場合にユーザーに質問したりするためのディレクティブやイベントを提供します。
また、クライアントは、このインターフェースを使ってAVSにAlexaとの対話がどのように開始されたか(ボタンの長押し、タップしてリリース、音声/ウェイクワードによる起動など)を伝え、製品に適した自動音声認識(ASR)プロファイルを選択することでAlexaが正確にユーザーの発話を理解して応答できるようにすることができます。
状態ダイアグラム
以下のダイアグラムは、SpeechRecognizerコンポーネントによって制御される状態の変化を表しています。ボックスはSpeechRecognizerの状態、コネクターは状態の遷移を表します。
SpeechRecognizerには以下の状態があります。
IDLE:ユーザー発話のキャプチャを行う前、SpeechRecognizerはidle状態です。また、AVSとの音声対話が完了した後も、SpeechRecognizerはidle状態に戻る必要があります。これは、音声リクエストが正常に処理されたとき、またはExpectSpeechTimedOut
イベントに指定された時間を過ぎたときに発生する可能性があります。
さらに、SpeechRecognizerは、マルチターンの対話中にidle状態に戻ることもあります。その時点で、ユーザーからの追加の発話が必要な場合は、ユーザーが新規で対話を開始しなくてもidle状態からexpecting speech状態に戻ります。
RECOGNIZING:ユーザーがクライアントとの対話を開始するとき、具体的には、キャプチャされたオーディオがAVSにストリーミングされたとき、SpeechRecognizerはidle状態からrecognizing stateに遷移する必要があります。SpeechRecognizerコンポーネントは、クライアントが音声の録音を停止する(またはストリーミングが完了する)までrecognizing状態を保ち、その時点でrecognizing状態からbusy状態に遷移します。
BUSY:音声リクエストの処理中、SpeechRecognizerはbusy状態になります。コンポーネントがbusy状態を抜けるまで、別の音声リクエストを開始することはできません。busy状態からは、リクエストが正常に処理(完了)した場合にidle状態、Alexaがユーザーから追加の発話を必要とする場合はexpecting speech状態に、それぞれ遷移します。
EXPECTING SPEECH:SpeechRecognizerは、ユーザーからの追加のオーディオ入力が必要な場合にexpecting speech状態になります。expecting speech状態からは、ユーザーの対話が発生するか、ユーザーに代わって対話が自動的に開始されたときにrecognizing state状態に遷移します。ユーザーの発話が指定したタイムアウト期間内に検出されなかった場合、idle状態に遷移する必要があります。

機能API
SpeechRecognizerインターフェースのバージョン1.0を使用するには、機能APIの呼び出し内で宣言する必要があります。詳細については、機能APIを参照してください。
オブジェクトのサンプル
{ "type": "AlexaInterface", "interface": "SpeechRecognizer", "version": "1.0" }
SpeechRecognizerのコンテキスト
ウェイクワードが有効な場合、Alexaはすべてのクライアントから現在設定されているウェイクワードについてレポートされることを想定しています。
コンテキストのレポートの詳細については、コンテキストの概要を参照してください。
サンプルメッセージ
{ "header": { "namespace": "SpeechRecognizer", "name": "RecognizerState" }, "payload": { "wakeword": "ALEXA" } }
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
wakeword | 現在のウェイクワードを識別します。
有効な値:"ALEXA" |
文字列 |
Recognizeイベント
Recognize
イベントは、ユーザー音声をAVSに送信し、その音声を1つ以上のディレクティブに翻訳するために使用します。このイベントは、マルチパートのメッセージとして送信する必要があります。このマルチパートのメッセージは、最初のパートにJSON形式のオブジェクト、2番めのパートに製品のマイクでキャプチャされたオーディオが格納されます。レイテンシーを低減するにはキャプチャしたオーディオをAVSにストリーミング(チャンクに分割して送信)することをお勧めします。この場合、ストリームにはチャンクあたり10ミリ秒のキャプチャオーディオ(320バイト)を含める必要があります。
Alexaとの対話が開始されると、マイクは以下の条件に当てはまるまでオープンのままになります。
StopCapture
ディレクティブを受信した- Alexaサービスによってストリームがクローズされた
- ユーザーが手動でマイクをクローズした(ボタンの長押しなど)
profile
パラメーターとinitiator
オブジェクトは、AlexaにどのASRプロファイルを使うとキャプチャされたオーディオを最もよく理解できるか、およびAlexaとの対話がどのように開始されたかを伝えます。
音声によって起動する製品の場合、クラウドベースのウェイクワード検証の要件に従う必要があります。
AVSに送信されるすべてのキャプチャされたオーディオは、以下の仕様でエンコードする必要があります。
- 16ビットのリニアPCM (LPCM16)
- 16kHzのサンプルレート
- シングルチャンネル
- リトルエンディアンのバイトオーダー
プロトコル固有の例については、HTTP/2リクエストの構成を参照してください。
サンプルメッセージ
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa.See Context for details. ], "event": { "header": { "namespace": "SpeechRecognizer", "name": "Recognize", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "profile": "{{STRING}}", "format": "{{STRING}}", "initiator": { "type": "{{STRING}}", "payload": { "wakeWordIndices": { "startIndexInSamples": {{LONG}}, "endIndexInSamples": {{LONG}} }, "token": "{{STRING}}" } } } } }
バイナリオーディオ添付ファイル
各Recognize
イベントには、マルチパートメッセージの一部として対応するバイナリオーディオ添付ファイルが必要です。以下のヘッダーは、各バイナリオーディオ添付ファイルに必須です。
Content-Disposition: form-data; name="audio" Content-Type: application/octet-stream {{BINARY AUDIO ATTACHMENT}}
コンテキスト
このイベントでは、製品がAlexaに対して、すべてのクライアントコンポーネントのステータスをコンテキストオブジェクトに格納して報告しなければならない。その他の情報については、コンテキストを参照してください。
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | Alexaに送信されるRecognize イベントに対して、クライアントが作成する必要のある一意のIDです。このパラメーターは、特定のRecognize イベントへの応答として送信されるディレクティブの関連付けに使用する一意のIDです。 |
文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
profile | 製品に関連付けられた自動音声認識(ASR)プロファイルを識別します。AVSは、それぞれ異なる距離からのユーザー音声に最適化された3つのASRプロファイルをサポートしています。
有効な値: CLOSE_TALK 、NEAR_FIELD 、FAR_FIELD です。 |
文字列 |
format | キャプチャされたオーディオのフォーマットを識別します。
有効な値: AUDIO_L16_RATE_16000_CHANNELS_1 。 |
文字列 |
initiator | Alexaに対話がどのように開始されたかを伝えます。 このオブジェクトは、対話がエンドユーザーによって開始された(ウェイクワード、タップ、長押し)場合に必須です。 initiator がExpectSpeech ディレクティブに存在する場合、後続のRecognize イベントで返される必要があります。initiator がExpectSpeech ディレクティブにない場合、後続のRecognize イベントに含めるべきではありません。 |
オブジェクト |
initiator.type | Alexaとの対話を開始するためにユーザーが行ったアクションを表します。
有効な値: PRESS_AND_HOLD 、TAP 、WAKEWORD 。initiator.type はExpectSpeech ディレクティブで提供され、その文字列が後続のRecognize イベントでinitiator.type として返される必要があります。 |
文字列 |
initiator.payload | initiatorに関する情報を含みます。 | オブジェクト |
initiator.payload.wakeWordIndices | このオブジェクトは、initiator.type がWAKEWORD に設定されている場合には必須です。 wakeWordIndices には、startIndexInSamples とendIndexInSamples を含みます。その他の詳細については、クラウドベースのウェイクワード検証の要件を参照してください。 |
オブジェクト |
initiator.payload.wakeWordIndices.startIndexInSamples | オーディオストリーム内のウェイクワードが開始するインデックスを表します(サンプル数)。開始インデックスのウェイクワード検出との誤差は、50ミリ秒以内である必要があります。 | long |
initiator.payload.wakeWordIndices.endIndexInSamples | オーディオストリーム内のウェイクワードが終了するインデックスを表します(サンプル数)。終了インデックスと検出されたウェイクワード終了との誤差は、150ミリ秒以内である必要があります。 | long |
initiator.payload.token | 不透明な文字列です。この値は、先行するExpectSpeech ディレクティブのペイロードに存在する場合にのみ必須です。 |
文字列 |
プロファイル
ASRプロファイルは、異なる製品、フォームファクター、音響環境、利用用途に合わせて調整されます。profile
パラメーターの有効な値についての詳細を、以下の表に示します。
値 | 最適な聞き取り距離 |
---|---|
CLOSE_TALK | 0~2.5フィート(0~0.76m) |
NEAR_FIELD | 0~5フィート(0~1.5m) |
FAR_FIELD | 0~20+フィート(0~6.1m以上) |
initiator
initiator
パラメーターはAVSにAlexaとの対話がどのように開始されたかを伝え、以下の2つのことを決定します。
- クラウドで発話の終了が検出されたときに
StopCapture
をクライアントに送信するかどうか - ストリームでクラウドベースのウェイクワード検証を実施するかどうか
initiator
は、各SpeechRecognizer.Recognize
イベントのペイロードに含まれる必要があります。有効な値は以下のとおりです。
値 | 説明 | サポートされるプロファイル(複数可) | StopCaptureは有効か | ウェイクワード検証は有効か | ウェイクワードのインデックスは必要か |
---|---|---|---|---|---|
PRESS_AND_HOLD | ボタン(物理またはGUI)を押すことで開始し、離すことで終了するオーディオストリームです。 | CLOSE_TALK |
N | N | N |
TAP | ボタン(物理またはGUI)をタップして離すことで開始し、StopCapture ディレクティブを受信したときに終了するオーディオストリームです。 |
NEAR_FIELD 、 FAR_FIELD |
Y | N | N |
WAKEWORD | ウェイクワードの使用により開始し、StopCapture ディレクティブを受信したときに終了するオーディオストリーム |
NEAR_FIELD 、 FAR_FIELD |
Y | Y | Y |
StopCaptureディレクティブ
このディレクティブは、AVSがユーザーのインテントを特定したとき、または発話の終了が検出されたときにキャプチャを停止するようクライアントに指示します。このディレクティブを受信すると、クライアントは直ちにマイクをクローズし、ユーザー発話の聞き取りを停止する必要があります。
StopCapture
はダウンチャンネル上でクライアントに送信され、発話がまだAVSにストリーミングされている間に受信することがあります。StopCapture
ディレクティブを受信するには、クラウドエンドポイント(NEAR_FIELD
、FAR_FIELD
など)をサポートするRecognize
イベントでprofile
を使用する必要があります。サンプルメッセージ
{ "directive": { "header": { "namespace": "SpeechRecognizer", "name": "StopCapture", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブの関連付けに使用する一意のID |
文字列 |
ExpectSpeechディレクティブ
ExpectSpeech
は、Alexaがユーザーリクエストを満たすために追加の情報を必要としているときに送信されます。このディレクティブは、マイクをオープンしてユーザー発話のストリーミングを開始するようクライアントに指示します。指定したタイムアウト期間内にマイクがオープンされない場合、ExpectSpeechTimedOut
イベントをクライアントからAVSに送信する必要があります。
Alexaとのマルチターンの対話中、デバイスは、クライアントにユーザー発話の聞き取りを開始するよう指示するExpectSpeech
ディレクティブを少なくとも1つ受信します。ExpectSpeech
ディレクティブのペイロードにinitiator
オブジェクトが存在する場合、後続のRecognize
イベントでinitiator
オブジェクトとして返す必要があります。ペイロードにinitiator
がない場合、後続のRecognize
イベントにinitiator
を含めるべきではありません。
オーディオの優先順位付けを管理するルールの詳細は、対話モデルをご確認ください。
サンプルメッセージ
{ "directive": { "header": { "namespace": "SpeechRecognizer", "name": "ExpectSpeech", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "timeoutInMilliseconds": {{LONG}}, "initiator": {{STRING}} } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブの関連付けに使用する一意のID |
文字列 |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
timeoutInMilliseconds | クライアントがマイクのオープンとAVSへのユーザー発話のストリーミング開始をどのくらい待機するべきかをミリ秒で指定します。指定したタイムアウト期間内にマイクがオープンされない場合、ExpectSpeechTimedOutイベントを送信する必要があります。この動作の主な利用用途は、PRESS_AND_HOLDの実装環境です。 | long |
initiator | 不透明な文字列です。このパラメーターが存在する場合、後続のRecognize イベントでAlexaに返す必要があります。 |
文字列 |
ExpectSpeechTimedOutイベント
このイベントは、ExpectSpeech
ディレクティブを受信したが、指定したタイムアウト期間内にユーザー発話を聞き取れなかった場合、AVSに送信する必要があります。
サンプルメッセージ
{ "event": { "header": { "namespace": "SpeechRecognizer", "name": "ExpectSpeechTimedOut", "messageId": "{{STRING}}", }, "payload": { } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用する一意のIDです。 | 文字列 |
ペイロードのパラメーター
空のペイロードを送信する必要があります。