接口文档
更新时间 2026-09-26 00:43:07
最近更新时间: 2026-09-26 00:43:07
接口信息
API Path
/aipaas/voice/v1/realtimeAsrMultiZk/asr
请求协议
WS
请求头部:
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | - | - | application/json | application/json |
| X-APP-ID | 是 | 系统管理--API Key,创建应用获取AppID 和AppKey,公网鉴权,公网调用时必传 | [string] | - | - | - | - |
| Device-Uuid | 否 | 设备管理-设备uuid | [string] | - | - | - | - |
| Authorization | 是 | 鉴权信息 | [string] | - | - | - | - |
请求参数
Json Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| req_id | 请求全局唯一ID,记录该值便于排查问题 | 是 | [string] | - | - | - |
| rec_status | 识别状态 0:开始识别;1:发送语音流;2:结束语音流; | 是 | [int] | - | - | - |
| option | 语音识别配置可选项,客户端发送开始识别请求时,根据具体需求,配置该字段 | 否 | [object] | - | - | - |
| option>>format | 音频格式,默认值:pcm,当前仅支持pcm,传入其它值会报错 | 否 | [string] | - | - | - |
| option>>sample_rate | 音频采样率,默认值16000Hz | 否 | [int] | - | - | - |
| option>>enable_punctuation | 是否加标点,默认:是,若开启,则在rec_status为3时给识别文本增加标点 | 否 | [boolean] | - | - | - |
| option>>enableinversetext_normalization | 是否开启 ITN,默认:是,若开启,则在rec_status为3时对识别文本进行逆文本规范化 | 否 | [boolean] | - | - | - |
| option>>enable_emendation | 是否开启校勘,默认:否,若开启,则在rec_status为3时对识别文本进行校准 | 否 | [boolean] | - | - | - |
| option>>enable_normalize | 是否开启文本规范化,默认值:否,若开启,则在rec_status为3时对识别文本进行规范化 | 否 | [boolean] | - | - | - |
| option>>enable_refine | 是否开启文本精炼,默认值:否,若开启,则在rec_status为3时对识别文本进行精炼,同时忽略option.enable_normalize的值 | 否 | [boolean] | - | - | - |
| option>>enable_standardize | 是否开启文本标准化,默认值:否,若开启,则在rec_status为3时返回原始ASR结果和标准化结果,同时忽略option.enable_normalize和option.enable_refine的值 | 否 | [boolean] | - | - | - |
| option>>context | 参考文本,默认值为空,仅在开启option.enable_normalize、option.enable_refine或option.enable_standardize时作为大模型参考上下文使用 | 否 | [string] | - | - | - |
| option>>enable_words | 是否开启返回词信息,默认:否,若开启,则同时返回字级别时间戳 | 否 | [boolean] | - | - | - |
| option>>enable_s2t | 是否返回繁体中文,默认值是 false | 否 | [boolean] | - | - | - |
| option>>province | (V3.2.0删除)仅对来自电信万号的业务开放(预留字段) | 否 | [string] | - | - | - |
| option>>hotwords | 热词列表,string数组 | 否 | [array] | - | - | - |
| option>>hotword_list_id | 热词列表查询ID(需要部署星河热词平台) | 否 | [string] | - | - | - |
| option>>bannedwordlist_id | 敏感词列表查询ID(需要部署星河敏感词平台) | 否 | [string] | - | - | - |
| audio_stream | 语音流,采用base64编码 | 否 | [int] | - | - | - |
返回结果
成功 (200) Json Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 返回码 | 是 | [int] | - | - | 10000 |
| message | 返回码描述 | 是 | [string] | - | - | success |
| sid | 会话全局唯一 id,用于记录本次会话 | 是 | [string] | - | - | aae36140-bc13-441f-81f9-6700fe7a5e96 |
| res_status | 响应状态 0:识别就绪; 1:识别到有效语音开始; 2:如果开启了返回中间结果, 则返回中间识别结果; 3:检测到一段有效语音结束,返回该段语音的识别结果; 4:处理完所有的音频数据,返回尚未返回的识别结果(如果有); | 是 | [int] | - | - | 2 |
| elps_time | 当前识别结果所对应的已处理的音频总时长,单位是毫秒 | 否 | [int] | - | - | - |
| data | 识别结果,服务端接收到语音流后返回 | 是 | [object] | - | - | - |
| data>>sn | 句子编号,从 0开始 | 否 | [int] | - | - | - |
| data>>results | 当前句子识别结果,如果开启 object.nbest ,则返回多个结果 | 否 | [array] | - | - | - |
| data>>results>>text | 句子识别结果 | 否 | [string] | - | - | - |
| data>>results>>begin_time | 句子开始时间,单位是毫秒 | 否 | [int] | - | - | - |
| data>>results>>end_time | 句子结束时间,单位是毫秒 | 否 | [int] | - | - | - |
| data>>results>>loudness | 句子音量,仅在一句话结束即res_status=3时返回 | 否 | [float] | - | - | - |
| data>>results>>speed | 句子语速,仅在一句话结束即res_status=3时返回 | 否 | [float] | - | - | - |
| data>>results>>pitch | 句子语调,仅在一句话结束即res_status=3时返回 | 否 | [float] | - | - | - |
| data>>results>>lang | 当前方言种类,仅在Sensevoice模型二刷时有效,仅在状态3有效 | 否 | [string] | - | - | - |
| data>>results>>words | 当前句子的词信息 | 否 | [array] | - | - | - |
| data>>results>>words>>text | 词信息 | 否 | [string] | - | - | - |
| data>>results>>words>>begin_time | 词开始时间,单位是毫秒 | 否 | [int] | - | - | - |
| data>>results>>words>>end_time | 词结束时间,单位是毫秒 | 否 | [int] | - | - | - |
注:如果开启option.enable_normalize或option.enable_refine,则在算法服务检测到一段有效语音结束时(即res_status=3),text为原始ASR结果,smart_text为大模型处理后的结果。
如果开启option.enable_standardize,则在算法服务检测到一段有效语音结束时(即res_status=3),data.results中会返回2个Result对象:第1个为原始ASR结果且带smart_text,第2个为标准化结果。
服务鉴权
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 签名认证方式。
鉴权状态码
| code | 说明 | 错误描述信息 | 解决方法 |
|---|---|---|---|
| 101 | 成功 | {"message":"success"} | 成功,开始语音识别 |
| 4002 | 并发超过限制 | {"message":"server overflow"} | 联系商务,增加并发 |
| 4003 | 推理资源不可用 | {"message":"inference resources unavailable"} | 联系运维人员 |
| 4004 | 授权失败 | {"message":"invalid license"} | 联系运维人员生成有效license |
| 4007 | 非实时音频数据 | {"message":"Non-real-time audio data"} | 调用方检测是否存在非实时发送音频的行为 |
请求示例
开始识别
客户端发送开始识别请求,需要通过请求body带语音识别过程中的可选配置参数,示例:
{
"option": {
"sample_rate": 8000,
"enable_punctuation": true,
"enable_inverse_text_normalization": true
},
"req_id": "aae36140-bc13-441f-81f9-6700fe7a5e96",
"rec_status": 0
}响应结果
{
"code": 10000,
"message": "success",
"sid": "aae36140-bc13-441f-81f9-6700fe7a5e96",
"res_status": 0
}发送语音流
客户端接收到服务端发送的确认识别请求有效的响应后,开始发送语音流数据,请求body各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
| rec_status | int | 是 | 识别状态 0:开始识别; 1:发送语音流; 2:结束语音流; |
| audio_stream | string | 是 | 语音流,采用 base64 编码 |
示例:
{
"rec_status": 1,
"audio_stream": "000asraae361406700fe7a5e9681f956210b5f1270"
}接收识别结果
客户端接收到服务端发送的确认检测请求有效的响应后,开始持续接收识别结果。
{
"code": 10000,
"message": "success",
"sid": "aae36140-bc13-441f-81f9-6700fe7a5e96",
"res_status": 2,
"data": {
"sn": 1,
"results": [{
"text": "你好今天",
"smart_text": "你好今天",
"begin_time": 1500,
"end_time": 2800,
"words": [
{
"text": "你",
"begin_time": 50,
"end_time": 70
},
{
"text": "好",
"begin_time": 50,
"end_time": 70
},
{
"text": "今",
"begin_time": 50,
"end_time": 70
},
{
"text": "天",
"begin_time": 50,
"end_time": 70
}
]
}]
}
}结束语音流
客户端语音流发送完成,结束语音流,请求body各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
| rec_status | int | 是 | 识别状态 0:开始识别; 1:发送语音流; 2:结束语音流; |
示例:
{
"rec_status": 2
}关闭连接
客户端如果不需要继续进行语音识别,则立即关闭websocket 连接(避免占用资源),如果需要继续进行语音识别(多轮对话场景),需要从开始识别状态开始,按照上述步骤依次执行
状态码说明
| 状态码 | 解释 | 说明 | 解决方法 |
|---|---|---|---|
| 10000 | success | 成功 | 执行下一步操作 |
| 20003 | Banned word(s) detected in input | 敏感词命中 | 成功,并检测到敏感词 |
| 10001 | parse request body fail | URL body 格式不对 | 查看请求的 URL body 格式是否正确,参考接口文档 |
| 10002 | session not found | 会话id查询失败 | 检查客户端发送的请求,通常是因为没有发送开始识别请求 |
| 10003 | required parameter miss | 参数缺失 | 检查接口文档,补全入参 |
| 10004 | duplicated session id | 会话id重复 | 检查客户端发送的请求,通常是因为重复发送开始识别请求 |
| 10005 | worker pool overflow | 超并发 | 联系研发人员进行排查 |
| 10006 | unknown error | 未知错误 | 联系研发人员进行排查 |
| 10007 | Non-real-time audio data | 非实时音频数据 | 检查发送的音频数据是否与每次发送间隔的时间一致,比如每200ms发送200ms的音频数据 |
| 10008 | Session not begun | 尚未发送开始识别标志 | 检查是否发送开始识别标志 |
| 10009 | Session is running | 重复发送开始识别标志 | 检查是否重复发送开始识别标志,若重复,请先发送结束识别标志 |
| 10010 | Hotword list load failed | 热词表查询失败 | 检查X-APP-ID,热词表ID是否有错误,检查热词查询服务是否有错误 |
| 10011 | Banned Word List Loads failed | 敏感词表查询失败 | 检查X-APP-ID,敏感词ID是否有错误,检查敏感词查询服务是否有错误 |
10012 | Hotword filter unavailable | 热词过滤不可用 | 启用热词过滤且当前请求需要热词过滤时,音素表初始化失败会返回该错误;该错误通常较难触发,请检查音素表目录和char_phoneme.tsv是否可用 |