sコマンドパケット/sコマンド応答パケット
s コマンドパケットと s コマンド応答パケットは、対になっています。 s コマンドで音声データ送信開始をサーバに通知すると、サーバは s コマンド応答パケットを返します。
s コマンド応答パケットが "s" 一文字の場合は成功です。続けて p コマンドパケットによる音声データの供給を始めることができます。音声データの送信がすべて終了したら e コマンドパケットで送信終了を通知しますが、その後も接続が維持されていれば、再び s コマンドパケットから再開できます。
s コマンドパケット
音声データ送信を開始します。 送信開始を通知することに加えて、送信する音声のフォーマットや使用したい音声認識エンジン(接続エンジン名)、認証情報(API キー)その他のパラメータを送信する必要があります。
形式
タイプ TEXT
s <audio_format> <grammar_file_names>
s <audio_format> <grammar_file_names> <key>=<value> ...
s および各パラメータブロックの区切り文字は、半角スペースです。 以下に各パラメータの詳細について説明します。
<audio_format>
送信する音声フォーマットを指定します。このパラメータは必須です。指定できるフォーマット名については、開発ガイドの音声フォーマットについてを参照してください。
<grammar_file_names>
接続エンジン名を指定します。このパラメータは必須です。
<key>
<key>=<value> の形式でリクエストパラメータを指定します。 <value> にスペースが含まれる場合は、value の前後を半角ダブルコーテーション「"」で囲みます。
<key> に指定できるパラメータは以下のとおりです。authorization(API キー)は必須です。各パラメータの詳細は、マニュアルのリクエストパラメータを参照してください。
- (*1)
authorizationパラメータは、リクエストパラメータでの指定に加え、WebSocket 接続時の HTTP リクエストヘッダーでも指定可能です。ヘッダーでの指定方法は、マニュアルのHTTP リクエストヘッダで認証情報を送る方法を参照してください。 - (*2)「音声入力_ルール」エンジン(
-a-rule-input-private)でのみ利用可能です。
設定例
セッション中だけ有効な単語登録(profileWords)を指定する例です。値にスペースが含まれるため、ダブルコーテーションで囲んでいます。
s MSB16K -a-general profileWords="AMI あみ|AmiVoice あみぼいす" authorization={APIキー}
ユーザー辞書のプロファイルを指定する例です。
s MSB16K -a-general profileId=:test authorization={APIキー}
ユーザー辞書の使い方の詳細は、マニュアルのユーザー辞書を参照してください。
s コマンド応答パケット
s コマンドに対する応答としてサーバからクライアントに送信されます。
形式
タイプ TEXT
開始要求成功時の応答パケット
送信開始要求が成功すると、s 一文字が返ります。
s
開始要求失敗時の応答パケット
送信開始要求が失敗すると、s の後ろに半角スペースを挟んでエラーメッセージが返ります。
s <error_message>
エラーメッセージ
クライアントエラー
sコマンドのリクエストパラメータや認証情報の誤りによるエラーです。修正してから再度リクエストを送信してください。
| エラーメッセージ | 内容 |
|---|---|
| s received unsupported audio format | 指定された音声フォーマットに誤りがありました。 |
| s can't verify service authorization | 認証に失敗しました。以下のいずれかの理由です。 - API キーが設定されていません - 設定された API キーに誤りがあります - API キーに付与された制限で指定されたIPアドレス外からアクセスしました |
| s can't validate service authorization | 認証に失敗しました。以下のいずれかの理由です。 - 設定された API キーに誤りがあります(アカウントが無効になっている場合も含む) - 指定された接続エンジン名に誤りがあります(例: -a-generalをa-generalなどと記述するタイプミス、AmiVoice API Private の契約をしていない状態で Private 専用のエンジンを指定する、など) |
| s service authorization has expired: <expirationTime> <expiresIn> | API キーで制限した有効期限がきれています。 |
| s can’t connect to recognizer server | 認証に失敗しました。API キーが不正です。 |
| s can’t connect to recognizer server (can’t find available servers) | 指定された接続エンジン名に対して音声フォーマットのサンプリングレートの組み合わせが正しくなく、適切なエンジンを見つけられないため、接続に失敗しました。 たとえば、8k のサンプリングレートに対応していないエンジンに対して、8k の音声フォーマットを指定した場合などが該当します。各音声認識エンジンが対応しているサンプリングレートについては、音声認識エンジンの一覧を参照してください。 |
| s can't start feeding audio data to recognizer server | 指定されたセグメンターのパラメータに誤りがあり、音声データの送信開始処理に失敗しました。 |
サーバーエラー
基盤システムの障害などによって稀に起きてしまう可能性のあるエラーです。しばらく待ってから再度リクエストを送信してください。
| エラーメッセージ | 内容 |
|---|---|
| s can't connect to recognizer server (can't connect to server)" | 音声認識サーバに接続できませんでした。 |
| s can’t connect to recognizer server (can’t find available servers because all requested servers are busy) | 指定された接続エンジン名や音声フォーマットに対する適切な音声認識サーバの全て混雑しているために接続できませんでした。 |
| s can't connect to recognizer server (can't find available servers because maximum allowed clients has reached) | 接続可能なクライアント数の上限に達しているため、音声認識サーバに接続できませんでした。 |
| s can't connect to recognizer server (can't send data) | 基盤システム内のサーバ間の通信エラーにより接続に失敗しました。 |
| s can't connect to recognizer server (can't receive data) | 基盤システム内のサーバ間の通信エラーにより接続に失敗しました。 |
| s can't connect to recognizer server (disconnected by force) | 基盤システム内のサーバ間の通信エラーにより接続に失敗しました。 |
制限事項によるエラー
制限事項に抵触した場合に発生します。sコマンドのリクエストからやり直してください。
| エラーメッセージ | 内容 |
|---|---|
| s session timeout occurred | セッションタイムアウトが発生しました。制限事項のセッションの最大時間を超えた場合に発生します。サーバ側から切断処理を行いました。 |