---
slug: /amivoice-api/manual/response-code-and-message
---

本节说明处理失败时的响应。

## HTTP 接口

### 同步 HTTP 和异步 HTTP 的语音识别Job创建请求 {#http-request}

当语音识别请求失败时，语音识别结果顶层的`code`和`message`字段会设置表示语音识别失败原因的**响应代码**和**错误消息**。详情请参阅后面的[表格](#table)。

示例:

```json {11,12}
{
  "results": [
    {
      "tokens": [],
      "tags": [],
      "rulename": "",
      "text": ""
    }
  ],
  "text": "",
  "code": "-",
  "message": "received illegal service authorization"
}
```

对于同步 HTTP，当识别处理成功时，`code`和`message`为空字符串("")。

示例:

```json {4,5}
...
  "utteranceid": "20220602/14/018122d65d370a30116494c8_20220602_141442",
  "text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実现し、豊かな未来を创造していくことを目指します。",
  "code": "",
  "message": ""
...
```

对于异步 HTTP，当Job创建请求成功时，不会返回`code`和`message`。

示例:

```json
{"sessionid":"017ac8786c5b0a0504399999","text":"..."}
```

### 异步 HTTP 的结果和状态获取 {#async-result}

对于异步 HTTP，即使语音识别请求成功，语音识别Job处理过程中也可能因某些原因中断处理。此时，获取结果和状态时，`state`将变为`error`，`error_messsage`将设置表示失败原因的错误消息。`error_message`可能包含表示语音识别进程失败原因的响应代码(`dsrh_code`)和输出消息(`amineth_message`)。有关响应代码和消息的含义，请参阅[响应代码和消息详细信息](/amivoice-api/manual/response-code-and-message#table)中的表格。

示例:

```json {7}
{
    "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'"
}
```

### 客户端错误 {#frequent-error}

当[响应代码和消息详细信息](/amivoice-api/manual/response-code-and-message#table)表中的响应代码为`>`、`o`、`+`、`-`、`%`时，表示客户端错误。请注意，如果错误原因未解决，重试也会得到相同的结果。

其他错误可能是由于基础设施问题引起的，请稍等片刻后重试。

#### 音频数据发送失败 (响应代码 `>`) {#sending-audio-failure}

##### 原因

此错误发生在以下情况：

- 通过同步/异步 HTTP 接口发送的音频数据不包含音频数据时

##### 对策

发生此错误时，请检查以下事项：

- 是否正在发送音频数据
- 发送的音频是否为空文件(零字节文件)
- 发送的容器格式的主体中是否包含音频数据

即使数据已发送，如果不包含音频，也会返回后面提到的`o`。

#### 拒绝 (响应代码 `o`) {#rejected}

##### 原因

在以下情况下会返回此响应：

- 无法从音频中检测到语音。
- 能够从音频中检测到语音并进行语音识别，但结果的置信度低于置信度阈值。
- 能够从音频中检测到语音并进行语音识别，但没有可输出的字符。(下面会补充说明)

**Note**
无论是哪种原因，错误消息始终为`recognition result is rejected because confidence is below the threshold`。

**Note**
在以下情况下，语音识别结果中不存在可输出的字符：

- 所有音频都被识别为"あー"或"えーと"等填充词，并自动删除
- 所有音频都被推测为噪音

但是，当`keepFillerToken`设置为1时，会输出填充词。

在使用 AmiVoice API 进行文字转写时，会进行语音检测和语音识别两个阶段的流水线处理。如果没有进行语音检测，就不会进行语音识别。在语音检测阶段，不仅会考虑音量，还会使用深度学习模型来判断是否为人声，但在进行语音识别处理后，最终可能会被推测为噪音。

##### 对策

发生此错误时，请检查以下事项：

###### 发送的音频数据中是否包含语音

请检查发送的音频数据。例如，以下类型的音频数据无法检测到语音。可能是程序错误或录音系统存在问题。

- 无声
- 只包含噪音
- 立体声音频中只有第二声道包含语音(对于多声道音频，只有第一声道会被识别。请参阅音频格式的[立体声](/amivoice-api/manual/audio-format#channels)部分)

此外，如果在离音源非常远的地方录音，也可能无法从不清晰且音量较小的音频中检测到语音。

###### 是否在请求时指定了错误的音频格式

如果发送的音频没有 header，在请求时指定错误的音频格式可能会导致语音检测或语音识别处理不正确。请确认请求中的[音频格式](/amivoice-api/manual/audio-format)是否正确设置为与发送的音频数据相匹配。

###### 在请求参数中指定了`confidenceLevel`的情况

如果在请求参数中指定了[confidenceLevel](/amivoice-api/manual/request-parameters#confidencelevel)，值过大可能会导致识别结果更容易被拒绝。通过调整指定的值，可能会更容易获得识别结果。

###### 使用规则语法并正确发音的情况

(**如果不使用规则语法，则无需考虑此情况**)
如果正确发音但仍收到此错误，可以降低置信度阈值。但是，降低置信度阈值可能会增加接受错误发音的可能性。

**Tip**
在实际发送的音频不包含语音等情况下，可能不需要将`o`视为错误。

### 响应代码和消息详细信息 {#table}

| code  | message                                                                          | 说明                                                                                                                                                                                               |
| :---: | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   +   | received unsupported audio format                                                | 接收到不支持的音频数据格式                                                                                                                                                                         |
|   -   | received illegal service authorization                                           | 接收到非法的 API key （服务认证密钥字符串），或者连接引擎名称未正确指定                                                                                                                                                                                                                                                     |
|   !   | failed to connect to recognizer server                                           | 语音识别服务器内部通信失败（连接语音识别服务器或负载均衡服务器失败）                                                                                                                                                                                                                                |
|  \>   | failed to send audio data to recognizer server                                   | 语音识别服务器内部通信失败（向语音识别服务器发送音频数据失败）。另请参阅[音频数据发送失败](#sending-audio-failure)。                                                                                                                                                               |
|  \<   | failed to receive recognition result from recognizer server                      | 语音识别服务器内部通信失败（从语音识别服务器接收识别结果失败）                                                                                                                                                                                                                                |
|   #   | received invalid recognition result from recognizer server                       | 语音识别服务器内部通信失败（从语音识别服务器接收的识别结果格式无效）                                                                                                                                                                                                                          |
|   $   | timeout occurred while receiving audio data from client                          | 从客户端接收音频数据时发生[无通信超时](/amivoice-api/manual/limitations#%E6%97%A0%E9%80%9A%E4%BF%A1%E5%BC%BA%E5%88%B6%E6%96%AD%E5%BC%80%E6%97%B6%E9%97%B460-%E7%A7%92)  |
|   %   | received too large audio data from client                                        | 从客户端接收的音频数据字节数过大(WebSocket 接口不会发生此情况)                                                                                                                                   |
|   o   | recognition result is rejected because confidence is below the threshold         | 由于整体识别结果的置信度低于置信度阈值而识别失败。<br/>当无法从整个接收到的音频数据中检测到任何语音，或所有结果都是填充词时，也会返回此错误，因为没有可响应的识别结果。另请参阅[拒绝](#rejected)。 |
|   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 接口](/amivoice-api/manual/async-http-interface)时出现。                                                                                                            |
