レスポンスコードとメッセージ
ここでは処理に失敗したときのレスポンスについて説明します。
HTTP インタフェース
同期 HTTP・非同期 HTTP の音声認識ジョブの作成リクエスト
音声認識のリクエストに失敗すると、音声認識結果のトップレベルにあるcode
とmessage
に、音声認識に失敗した原因を表すレスポンスコードとエラーメッセージが設定されます。詳細は後述の表を参照してください。
例:
{
"results": [
{
"tokens": [],
"tags": [],
"rulename": "",
"text": ""
}
],
"text": "",
"code": "-",
"message": "received illegal service authorization"
}
同期 HTTP の場合、認識処理に成功したときは、code
とmessage
は空文字("")になります。
例:
...
"utteranceid": "20220602/14/018122d65d370a30116494c8_20220602_141442",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。",
"code": "",
"message": ""
...
非同期 HTTP の場合、ジョブの作成リクエストに成功したときは、code
とmessage
を返しません。
例:
{"sessionid":"017ac8786c5b0a0504399999","text":"..."}
非同期 HTTP の結果・状態取得
非同期 HTTP の場合、音声認識のリクエストが成功しても、音声認識ジョブの処理中に何らかの原因で処理を中断することがあります。このとき結果・状態取得を行うとstate
がerror
になり、error_messsage
には失敗の原因を表すエラーメッセージが設定されます。error_message
には、音声認識プロセスの失敗原因を表すレスポンスコード(dsrh_code
)と出力メッセージ(amineth_message
)が含まれている場合があります。レスポンスコードとメッセージの意味は、レスポンスコードとメッセージの詳細にある表を参照してください。
例:
{
"status": "error",
"audio_md5":"40f59fe5fc7745c33b33af44be43f6ad",
"audio_size":306980,
"service_id":"{YOUR_SERVICE_ID}",
"session_id":"017c25ec12c00a304474a999",
"error_message": "ERROR: Failed to transcribe in recognition process - amineth_result=0, amineth_code='o', amineth_message='recognition result is rejected because confidence is below the threshold'"
}
クライアントエラー
レスポンスコードとメッセージの詳細の表にあるレスポンスコードが>
、o
、+
、-
、%
のときはクライアントエラーです。エラーの原因が解決されない場合、リトライしても同じ結果になりますので注意してください。
その他のエラーは基盤の問題の可能性が高いため、しばらく待ってからリトライしてください。
音声データ送信失敗 (レスポンスコード >
)
原因
このエラーが起きるのは以下の場合です。
- 同期/非同期 HTTP インタフェース で送信した音声データに音声データが含まれていないとき
対策
このエラーが発生した場合、以下のことを確認してください。
- 音声データを送信しているかどうか
- 送信した音声が空のファイル(ゼロバイトのファイル)ではないか
- 送信したコンテナフォーマットのボディに音声データが含まれているかどうか
データは送信していても、音声が含まれない場合は、後述のo
を返します。
リジェクト (レスポンスコード o
)
原因
このレスポンスを返すのは以下の場合です。
- 音声から発話を検出できなかった。
- 音声から発話を検出でき、音声認識を行った結果、信頼度が信頼度しきい値を下回った。
- 音声から発話を検出でき、音声認識を行った結果、出力できる文字が存在しなかった。(以下で補足)
上記のどの原因であってもエラーメッセージは常にrecognition result is rejected because confidence is below the threshold
です。
音声認識の結果に、出力できる文字が存在しないのは以下の場合です。
- すべての音声が「あー」や「えーと」などのフィラーとして認識されて自動的に削除された
- すべての音声がノイズと推定された
ただし、keepFillerToken
が1に設定されているときはフィラーが出力されます。
AmiVoice APIで文字起こしをする際、発話検出と音声認識の2段階のパイプライン処理を行っています。発話検出が行われないと音声認識は行いません。発話検出フェーズでも、音量だけではなく、人の声かどうかを深層学習を使ったモデルによって判断していますが、音声認識処理を行った結果、最終的にノイズに推定されることがあります。
対策
このエラーが発生した場合、以下のことを確認してください。
送信した音声データに発話が含まれているかどうか
送信した音声データを確認してください。例えば、以下のような音声データからは発話が検出できません。プログラムの不具合や、録音システムに問題がある可能性があります。
- 無音
- ノイズしか含まれない
- ステレオ音声で発話が2チャンネル目にしか含まれていない(複数チャネルの音声は1チャネル目のみが認識対象になります。音声フォーマットのステレオを参照してください)
また、音源から非常に遠いところで録音している場合など、不明瞭で音量が小さい音声からも発話が検出できないことがあります。
誤った音声フォーマットを指定してリクエストしていないか
ヘッダのない音声を送信している場合、リクエスト時に誤った音声フォーマットを指定すると、発話検出や音声認識の処理が正しく行われません。リクエストの音声フォーマットが、送信した音声データに対して正しく設定されているかどうかを確認してください。
ルールグラマーを使用して正しく発話している場合
(ルールグラマーを利用していない場合、このケースは考慮する必要はありません) 正しく発話しているのにこのエラーを受け取ってしまう場合は、信頼度のしきい値を下げることができます。ただし、信頼度のしきい値を下げると、誤った発話を受け入れてしまう可能性が上がります。
実際に送信した音声に発話が含まれていない場合など、o
をエラーと見なす必要がない場合もあります。
レスポンスコードとメッセージの詳細
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 | 認識処理中断要求がなされたために認識に失敗 |
? | recognition result is rejected because fatal error occurred in recognizer server | 音声認識サーバで認識中に致命的エラーが発生したために認識に失敗 |
^ | invalid parameter (...) | 不正なパラメータが指定されました。非同期HTTPインタフェースのときのみ。 |