云服务器内容精选

  • 响应示例 状态码:200 成功响应示例 { "trace_id": "567e8537-a89c-13c3-a882-826321939651", "result":{ "text": "欢迎使用语音云服务。", "score": 0.9, "word_info": [ { "start_time": 150, "end_time": 570, "word": "欢迎" }, { "start_time": 570, "end_time": 990, "word": "使用" }, { "start_time": 990, "end_time": 1380, "word": "语音" }, { "start_time": 1380, "end_time": 1590, "word": "云" }, { "start_time": 1590, "end_time": 2070, "word": "服务" } ] } } 状态码:400 失败响应示例 { "error_code":"SIS.0001", "error_msg":"***" }
  • 响应参数 状态码: 200 表7 响应Body参数 参数 是否必选 参数类型 描述 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Result object 调用成功表示识别结果,调用失败时无此字段。 表8 Result 参数 是否必选 参数类型 描述 text 是 String 调用成功表示识别出的内容。 score 是 Float 调用成功表示识别出的置信度,取值范围:0~1。 word_info 否 Array of WordInfo objects 分词信息列表。 分词是指将识别出的文本进一步拆分成单独的词语。 表9 WordInfo 参数 是否必选 参数类型 描述 start_time 否 Integer 起始时间。 end_time 否 Integer 结束时间。 word 否 String 分词。 状态码: 400 表10 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 请求示例 “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点。 上传短音频,快速返回识别结果 POST https://{endpoint}/v1/{project_id}/asr/short-audio Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request body: { "config": { "audio_format": "wav", "property": "chinese_8k_common", "add_punc": "yes", "need_word_info": "yes" }, "data": "/+MgxAAUeHpMAUkQAANhuRAC..." } 使用Python3语言上传短音频,快速返回识别结果 # -*- coding: utf-8 -*- # 此demo仅供测试使用,强烈建议使用sdk。需提前安装requests,执行pip install requests import requests import base64 import json def sasr_demo(): url = 'https://{{endpoint}}/v1/{{project_id}}/asr/short-audio' # endpoint和project_id需替换 token = '用户对应region的token' file_path = '将要识别音频的路径' with open(file_path, 'rb') as f: data = f.read() base64_data = str(base64.b64encode(data), 'utf-8') header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = { 'data': base64_data, 'config': { 'property': 'chinese_8k_common', 'audio_format': 'pcm8k16bit' } } resp = requests.post(url, data=json.dumps(body), headers=header) print(resp.text) if __name__ == '__main__': sasr_demo() 使用Java语言上传短音频,快速返回识别结果 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * 此demo仅供测试使用,强烈建议使用SDK */ public class SasrDemo { public void sasrDemo() { try { // endpoint和projectId需要替换成实际信息。 URL url = new URL("https://{{endpoint}}/v1/{{project_id}}/asr/short-audio"); String token = "对应region的token"; String audioBody = "8k wav格式audio对应base64编码"; HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/json"); connection.addRequestProperty("X-Auth-Token", token); OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); String body = "{\"data\":\"" + audioBody + "\", \"config\": { \"audio_format\": \"wav\", " + "\"property\":\"chinese_8k_common\"}}"; osw.append(body); osw.flush(); InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while (br.ready()) { System.out.println(br.readLine()); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SasrDemo sasrDemo = new SasrDemo(); sasrDemo.sasrDemo(); } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。 Enterprise-Project-Id 否 String 企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 企业项目创建步骤请参见用户指南。 说明: 账户创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用SIS服务,账单归到企业ID对应的企业项目中。 携带错误的ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 不携带ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 表3 请求Body参数 参数 是否必选 参数类型 描述 config 是 Config object 配置信息。 data 是 String 语音数据,Base64编码,要求Base64编码后大小不超过4M,音频时长不超过1分钟。Base64编码示例如/+MgxAAUeHpMAUkQAANhuRAC...,如果携带data:audio/mp3;base64,类前缀,会产生报错。 表4 Config 参数 是否必选 参数类型 描述 audio_format 是 String 支持语音的格式,请参考表 audio_format取值范围。 property 是 String 所使用的模型特征串,通常是 “语种_采样率_领域”的形式,采样率需要与音频采样率保持一致,取值范围请参考表 property取值范围。 add_punc 否 String 表示是否在识别结果中添加标点,取值为“yes”和“no”,默认为“no”。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为“yes” 和 “no”,默认为“yes”。 vocabulary_id 否 String 热词表id,不使用则不填写。创建热词表信息请参考创建热词表。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。 表5 audio_format取值范围 audio_format取值 描述 pcm16k16bit 16k16bit单通道录音数据。 pcm8k16bit 8k16bit单通道录音数据。 ulaw16k8bit 16k8bit ulaw单通道录音数据。 ulaw8k8bit 8k8bit ulaw单通道录音数据。 alaw16k8bit 16k8bit alaw单通道录音数据。 alaw8k8bit 8k8bit alaw单通道录音数据。 mp3 mp3格式音频。目前仅支持单通道的音频。 aac aac格式音频。目前仅支持单通道的音频。 wav 带wav封装头的格式,从封装头中自动确定格式,目前仅支持8k/16k采样率、单通道、pcm, alaw, ulaw三种编码格式。 amr AMR窄带(8k) 压缩录音数据。目前仅支持单通道的音频。 amrwb AMR 宽带(16k) 压缩录音数据。目前仅支持单通道的音频。 auto 由引擎自动判断音频数据的格式并解码,支持自动判断amr,flac,m4a,mp3,ogg,webm,wav,aac,ac3,mov,wma、amrwb格式。 表6 property取值范围 property取值 描述 chinese_16k_general 支持采样率为16k的中文普通话 语音识别 ,采用新一代端到端识别算法,识别准确率更高。 区域支持cn-east-3和cn-north-4(强烈推荐使用)。 chinese_16k_travel 支持采样率为16k的中文普通话语音识别,采用新一代端到端识别算法,并针对网约车质检场景进行了优化。 区域支持cn-east-3和cn-north-4(强烈推荐使用)。 sichuan_16k_common 支持采样率为8k/16k的中文普通话与四川话方言识别。区域仅支持cn-north-4,暂不支持digit_norm,vocabulary_id参数。 cantonese_16k_common 支持采样率为8k/16k的粤语方言识别。区域仅支持cn-north-4,暂不支持digit_norm,vocabulary_id参数。 shanghai_16k_common 支持采样率为8k/16k的上海话方言识别,区域仅支持cn-north-4,暂不支持digit_norm,vocabulary_id参数。 chinese_8k_common 支持采样率为8k的中文普通话语音识别。 chinese_16k_common 支持采样率为16k的中文普通话语音识别。 english_16k_common 支持采样率为16k的英文语音识别,区域仅支持cn-east-3。格式仅支持wav,暂不支持add_punc, digit_norm,vocabulary_id,need_word_info参数。 english_8k_common 支持采样率为8k的英文语音识别,区域仅支持cn-east-3。格式仅支持wav,暂不支持add_punc, digit_norm,vocabulary_id,need_word_info参数。
  • 代码示例 import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; import okio.ByteString; /** * 此demo仅供测试使用,强烈建议使用SDK * 使用前需已配置okhttp、okio jar包。jar包可通过下载SDK获取。 */ public class SasrWebsocketDemo { public void sasrWebsocketDemo() { try { // endpoint和projectId需要替换成实际信息。 String url = "wss://{{endpoint}}/v1/{{project_id}}/asr/short-audio"; String token = "对应region的token"; byte[] data = null; // 存放将要发送音频的byte数组 OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url(url).header("X-Auth-Token", token).build(); WebSocket webSocket = okHttpClient.newWebSocket(request, new MyListener()); webSocket.send("{\"command\": \"START\", \"config\": {\"audio_format\": \"pcm8k16bit\", \"property\": \"chinese_8k_common\"}}"); webSocket.send(ByteString.of(data)); // audio太大注意要分片发送,否则会报错。建议分片大小3200 webSocket.send("{ \"command\": \"END\"}"); Thread.sleep(10000); webSocket.close(1000, null); } catch (Exception e) { e.printStackTrace(); } } class MyListener extends WebSocketListener { @Override public void onOpen(WebSocket webSocket, Response response) { System.out.println("conneected"); } @Override public void onClosed(WebSocket webSocket, int code, String reason) { System.out.println("closed"); } @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { t.printStackTrace(); } @Override public void onMessage(WebSocket webSocket, String text) { System.out.println(text); } } public static void main(String[] args) { SasrWebsocketDemo sasrWebsocketDemo = new SasrWebsocketDemo(); sasrWebsocketDemo.sasrWebsocketDemo(); } }
  • 结束识别 功能介绍 对于识别中的对话,需要在Websocket上发送“结束识别”的请求来取消或结束识别。 "结束识别"请求使用文本类型的数据帧(text message)发送,命令和参数以json字符串的形式提供。 请求消息 表7 参数说明 参数名 是否必选 参数类型 说明 command 是 String 表示客户端结束识别请求,参数值设置为END。 示例 { "command": "END" } 状态码 状态码请参见状态码。 错误码 错误码请参见错误码。
  • 响应结果 开始识别响应 由于WebSocket是全双工的,因此响应就是从服务器端发送给客户端的消息,但也并不是所有的请求信息都有一条对应的响应。服务器端收到“开始识别”请求时,会给出如下响应消息,以json字符串形式放置在text message中。 表8 响应参数 参数名 参数类型 说明 resp_type String 响应类型。参数值为START,表示开始识别响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 示例 { "resp_type": "START", "trace_id": "567e8537-a89c-13c3-a882-826321939651" } 事件响应 服务器端检测到某些事件时,会给出如下响应消息,以json字符串形式放置在text message中。 表9 响应参数 参数名 参数类型 说明 resp_type String 响应类型。参数值为EVENT,表示开始识别响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 event String 具体的事件, 一句话识别 中仅会出现"EXCEEDED_AUDIO”,当输入音频超过1min时,会返回该事件。 timestamp Integer 保留字段。将来会用于此事件发生的具体时间,以会话开始作为0点,单位为ms。 示例 { "resp_type": "EVENT", "trace_id": "567e8537-a89c-13c3-a882-826321939651", "event": "EXCEEDED_AUDIO", "timestamp": 1500 } 结果响应 服务端在收到客户端发送的连续音频数据后, 当服务端识别出结果后会实时向客户端按句推送识别结果响应消息, 以json字符串形式放置在text message中。 表10 响应参数 参数名 参数类型 说明 resp_type String 响应类型。参数值为RESULT,表示识别结果响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 segments Array of objects 多句结果。 请参考表 segment 数据结构。 表11 segment 数据结构 参数名 参数类型 说明 start_time Integer 一句的起始时间戳,单位为ms。 end_time Integer 一句的结束时间戳,单位为ms。 is_final Boolen true表示是最终结果, false表示为中间临时结果。 result Object 调用成功表示识别结果,调用失败时无此字段。 请参考表 result数据结构。 表12 result数据结构 参数名 参数类型 说明 text String 识别结果。 score Float 识别结果的置信度,取值范围:0~1。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 说明: 目前置信度作用不是太大,请勿过多依赖此值。 word_info Array of Object 分词输出列表。 表13 word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词 示例 { "resp_type": "RESULT", "trace_id": "567e8537-a89c-13c3-a882-826321939651", "segments": [ { "start_time": 100, "end_time": 1500, "is_final": false, "result": { "text": "第一句中间结果", "word_info": [ { "start_time": 100, "end_time": 800, "word": "第一" }, { "start_time": 800, "end_time": 1000, "word": "句" }, { "start_time": 1000, "end_time": 1500, "word": "结果" } ], "score": 0.0 }, }, ] } 错误响应 错误响应,包括如下情况: 配置串错误,包括存在不识别的配置串,或者配置串值的范围不合法。 时序不正确,比如连续发送两次“开始识别”指令。 识别过程中发生错误,比如音频解码发生错误。 表14 响应参数 参数名 参数类型 说明 resp_type String 参数值为ERROR,表示错误响应。 trace_id String 服务内部的跟踪令牌,可用于在日志中追溯具体流程。 在某些错误情况下,可能没有此字段。 error_code String 错误码列表。详细错误码解释,请参见错误码。 error_msg String 返回错误信息。 示例 { "resp_type": "ERROR", "trace_id": "567e8537-a89c-13c3-a882-826321939651", "error_code": "SIS.0002", "error_msg": "***" } 结束识别响应 服务器端收到“结束识别”请求时或语音识别过程中发生错误,服务端会向客户端推送如下响应消息,以json字符串形式放置在text message中。 表15 响应参数 参数名 参数类型 说明 resp_type String 参数值为END,表示结束识别响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 reason String 结束原因,详情请参见表 结束原因表。 表16 结束原因表 参数名 说明 NORMAL 正常结束。 ERROR 识别过程中发生错误。 示例 { "resp_type": "END", "trace_id": "567e8537-a89c-13c3-a882-826321939651", "reason": "NORMAL", }
  • wss-URI wss-URI格式 wss /v1/{project_id}/asr/short-audio 参数说明 表1 参数说明 参数名 是否必选 说明 project_id 是 项目编号。获取方法,请参见获取项目ID。 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。 Enterprise-Project-Id 否 String 企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 企业项目创建步骤请参见用户指南。 说明: 账户创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用SIS服务,账单归到企业ID对应的企业项目中。 携带错误的ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 不携带ID,正常使用SIS服务,账单的企业项目会被分类为“default”。
  • 开始识别 功能介绍 当wss握手请求收到成功响应后,客户端到服务端的通信协议会升级为Websocket协议。通过Websocket协议,客户端发送开始识别请求,用于配置一句话识别的配置信息。 请求消息 表3 参数说明 参数名 是否必选 参数类型 说明 command 是 String 表示客户端发送开始识别请求,参数值需设置为START。 config 是 Object 配置信息。结构信息请参见表 config数据结构。 表4 config数据结构 参数 是否必选 参数类型 说明 audio_format 是 String 支持语音的格式,请参见表 audio_format取值范围。 property 是 String 所使用的模型特征串。通常是 “语种_采样率_领域”的形式,例如chinese_8k_common。请参见表 property取值范围。 add_punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。识别结束后,会将数字识别为阿拉伯数字。 interim_results 否 String 是否输出中间结果,可以为yes或no。默认为no,表示不输出中间结果。 vocabulary_id 否 String 热词表id,不使用热词则不填写。 创建热词表信息请参考创建热词表。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。 表5 property取值范围 property取值 说明 chinese_8k_general 支持采样率为8k的中文普通话语音识别,采用新一代端到端识别算法,识别准确率更高。 格式支持pcm8k16bit/alaw8k8bit/ulaw8k8bit,区域支持cn-east-3和cn-north-4(强烈推荐使用)。 chinese_16k_general 支持采样率为16k的中文普通话语音识别,采用新一代端到端识别算法,识别准确率更高。 格式支持pcm16k16bit/alaw16k8bit/ulaw16k8bit,区域支持cn-east-3和cn-north-4(强烈推荐使用)。 chinese_8k_common 支持采样率为8k的中文普通话语音识别。 chinese_16k_common 支持采样率为16k的中文普通话语音识别。 sichuan_16k_common 支持采样率为16k的中文普通话与四川话方言语音识别。区域仅支持cn-north-4。max_seconds参数最短时长为10s,当设置低于10s,默认按照10s处理。 cantonese_16k_common 支持采样率为16k的粤语方言语音识别。区域仅支持cn-north-4。max_seconds参数最短时长为10s,当设置低于10s,默认按照10s处理。 shanghai_16k_common 支持采样率为16k的上海话方言语音识别。区域仅支持cn-north-4。max_seconds参数最短时长为10s,当设置低于10s,默认按照10s处理。 表6 audio_format取值范围 audio_format取值 说明 pcm16k16bit 16k16bit单通道录音数据。 pcm8k16bit 8k16bit单通道录音数据。 ulaw16k8bit 16k8bit ulaw单通道录音数据。 ulaw8k8bit 8k8bit ulaw单通道录音数据。 alaw16k8bit 16k8bit alaw单通道录音数据。 alaw8k8bit 8k8bit alaw单通道录音数据。 目前仅支持裸音频格式,仅支持pcm编码的wav格式,不支其他wav头或者arm格式的编码。 示例 { "command": "START", "config": { "audio_format": "pcm8k16bit", "property": "chinese_8k_common", "add_punc": "yes", "interim_results": "yes", "need_word_info": "yes" } } 状态码 状态码请参见状态码。 错误码 错误码请参见错误码。
  • 功能介绍 一句话识别websocket接口支持识别1min以内的音频,交互过程如图 客户端和服务端交互流程所示,主要分为开始识别、发送音频数据,结束识别、断开连接四个步骤。 websocket接口同http接口一致按次计费,只要建立连接成功,发送音频,服务开始识别,则本次调用计费生效。如果用户发送错误end请求或者持续20s未发送音频而产生了报错,该次调用依然认为生效。如果连接成功后未发送音频直接断开,或者请求字段不正确而产生异常,则认为本次调用无效,不会纳入计费次数。 图1 客户端和服务端交互流程