更新时间:2024-08-31 GMT+08:00
分享

http接口

功能介绍

一句话识别接口,用于短语音的同步识别。一次性上传1min以内音频,能快速返回识别结果。该接口的使用限制请参见约束与限制,详细使用指导请参见SIS服务使用简介章节。

SIS服务控制台提供了一句话识别的在线使用页面,用户无需编程即可使用服务功能。

图1 在线使用

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/asr/short-audio

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目编号。获取方法,请参见获取项目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”。
表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参数。

响应参数

状态码: 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();
      }
    }

响应示例

状态码: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":"***" 
}

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档