A イベントパケット
認識処理が完了し、認識結果が受容されたときに、サーバからクライアントに送信されます。
形式
タイプ JSON
A <result>
<result>には、以下の JSON が格納されています。
説明 | |||
---|---|---|---|
results | 「発話区間の認識結果」の配列 ※配列形式ですが要素数は常に 1 個です。 | ||
confidence | 信頼度(0 ~ 1 の値。 0:信頼度低, 1:信頼度高) | ||
starttime | 発話開始時間 (音声データの先頭が 0) | ||
endtime | 発話終了時間 (音声データの先頭が 0) | ||
tags | 未使用(空配列) | ||
rulename | 未使用(空文字) | ||
text | 認識結果テキスト | ||
tokens | 認識結果テキストの形態素の配列 | ||
written | 形態素(単語)の表記 | ||
confidence | 形態素の信頼度(認識結果の尤度) | ||
starttime | 形態素の開始時間 (音声データの先頭が 0) | ||
endtime | 形態素の終了時間(音声データの先頭が 0) | ||
spoken | 形態素の読み *3 | ||
utteranceid | 認識結果情報 ID *1 | ||
text | 「発話区間の認識結果」の全てを結合した全体の認識結果テキスト。*2 | ||
code | 結果を表す 1 文字のコード。レスポンスコードとメッセージを参照してください。*2 | ||
message | エラー内容を表す文字列。レスポンスコードとメッセージを参照してください。*2 |
*1
認識結果情報 ID は、WebSocket 音声認識プロトコルの場合は、発話区間毎の認識結果情報に付与された ID となります。HTTP 音声認識プロトコルの場合は、1 セッションでアップロードされた(複数の発話区間を含む可能性のある)音声データ全体の認識結果情報に付与された ID となります。
*2
認識成功時は
body.code == "" かつ body.message == "" かつ body.text != ""
認識失敗時は
body.code != "" かつ body.message != "" かつ body.text == ""
となります。
*3
日本語エンジンの認識結果の spoken は平仮名です。 英語エンジンの認識結果の spoken は読みではありません(無視してください)。 中国語エンジンの認識結果の spoken はピンイン(pinyin)です。
JSON に含まれる code と message の一覧
code | message | 説明 |
---|---|---|
“+” | “received unsupported audio format” | サポート対象外の音声データ形式の音声データを受信 |
“-“ | “received illegal service authorization” | 不正なサービス認証キー文字列を受信 |
“!” | “failed to connect to recognizer server” | 音声認識サーバ内での通信に失敗(DSRM または DSRS への接続に失敗) |
“>” | “failed to send audio data to recognizer server” | 音声認識サーバ内での通信に失敗(DSRS への音声データの送信に失敗) |
“<“ | “failed to receive recognition result from recognizer server” | 音声認識サーバ内での通信に失敗(DSRS からの認識結果の受信に失敗) |
“#” | “received invalid recognition result from recognizer server” | 音声認識サーバ内での通信に失敗(DSRS から受信した認識結果の形式が不正) |
“$” | “timeout occurred while receiving audio data from client” | クライアントからの音声データ受信中に無通信タイムアウトが発生した |
“%” | “received too large audio data from client” | クライアントから受信した音声データバイト数が大きすぎる(WebSocket インタフェース では発生しない) |
“o” | “recognition result is rejected because confidence is below the threshold” | 認識結果全体の信頼度が信頼度しきい値を下回ったために認識に失敗 ※ 受け取った音声データ全体から発話が 1 個も検出できなかったため認識結果を返却できない場合にも、このエラーが返却されます。発話検出に失敗する原因としては、音声データの欠損や音声データフォーマットの指定間違いが考えられます。 |
“b” | “recognition result is rejected because recognizer server is busy” | 音声認識サーバが混んでいるために認識に失敗 |
“x” | “recognition result is rejected because grammar files are not loaded” | 辞書が読み込まれていないために認識に失敗 |
“c” | “recognition result is rejected because the recognition process is cancelled” | 認識処理中断要求がなされたために認識に失敗 |
“t” | “recognition result is rejected because timeout occurred during recognition process” | 認識処理がタイムアウトするなどして認識処理が中断されたために認識に失敗 |
“?” | “recognition result is rejected because fatal error occurred in recognizer server” | 音声認識サーバで認識中に致命的エラーが発生したために認識に失敗 |
“s” | “recognition result is rejected because recognition process was not started before timeout occurred” | クライアントから受信した音声データが音声データキューに入れられてからある一定時間以内に認識処理が開始しなかったために認識失敗 |
“e” | “recognition result is rejected because recognition process was not finished before timeout occurred” | クライアントから受信した音声データが音声データキューに入れられてからある一定時間以内に認識処理が完了しなかったために認識失敗 |
“” | “” | 認識成功 |
レスポンス例
{
"results": [
{
"tokens": [
{
"written": "www",
"confidence": 1.0,
"starttime": 16020,
"endtime": 16916,
"spoken": "\u3068\u308a\u3077\u308b\u3060\u3076\u308b"
}
],
"confidence": 0.997,
"starttime": 15700,
"endtime": 17188,
"tags": [],
"rulename": "",
"text": "www"
}
],
"utteranceid": "20191127/ja_ja-amivoicecloud-16k-user@016ead249db00a3011a68536-1127_225504",
"text": "www",
"code": "",
"message": ""
}