响应代码和消息
本节说明处理失败时的响应。
HTTP 接口
同步 HTTP 和异步 HTTP 的语音识别Job创建请求
当语音识别请求失败时,语音识别结果顶层的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,当Job创建请求成功时,不会返回code
和message
。
示例:
{"sessionid":"017ac8786c5b0a0504399999","text":"..."}
异步 HTTP 的结果和状态获取
对于异步 HTTP,即使语音识别请求成功,语音识别Job处理过程中也可能因某些原因中断处理。此时,获取结果和状态时,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 进行文字转写时,会进行语音检测和语音识别两个阶段的流水线处理。如果没有进行语音检测,就不会进行语音识别。在语音检测阶段,不仅会考虑音量,还会使用深度学习模型来判断是否为人声,但在进行语音识别处理后,最终可能会被推测为噪音。
对策
发生此错误时,请检查以下事项:
发送的音频数据中是否包含语音
请检查发送的音频数据。例如,以下类型的音频数据无法检测到语音。可能是程序错误或录音系统存在问题。
- 无声
- 只包含噪音
- 立体声音频中只有第二声道包含语音(对于多声道音频,只有第一声道会被识别。请参阅音频格式的立体声部分)
此外,如果在离音源非常远的地方录音,也可能无法从不清晰且音量较小的音频中检测到语音。
是否在请求时指定了错误的音频格式
如果发送的音频没有 header,在请求时指定错误的音频格式可能会导致语音检测或语音识别处理不正确。请确认请求中的音频格式是否正确设置为与发送的音频数据相匹配。
使用规则语法并正确发音的情况
(如果不使用规则语法,则无需考虑此情况) 如果正确发音但仍收到此错误,可以降低置信度阈值。但是,降低置信度阈值可能会增加接受错误发音的可能性。
在实际发送的音频不包含语音等情况下,可能不需要将o
视为错误。
响应代码和消息详细信息
code | message | 说明 |
---|---|---|
+ | received unsupported audio format | 接收到不支持的音频数据格式 |
- | received illegal service authorization | 接收到非法的 APPKEY(service 认证密钥字符串) |
! | 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 | 由于整体识别结果的置信度低于置信度阈值而识别失败。 当无法从整个接收到的音频数据中检测到任何语音,或所有结果都是填充词时,也会返回此错误,因为没有可响应的识别结果。另请参阅拒绝。 |
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 接口时出现。 |