文档中心
文档中心 / 语音识别

语音识别

在线语音识别 Java SDK

简介

Hi,您好,欢迎使用百度自动语音识别服务。

本文档主要针对Java语言的开发者,描述百度语音识别服务的相关技术内容。如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

  • 在语音官网问答社区内新建提问,标签选择“识别-RESTAPI”;
  • 加入开发者QQ群:648968704;

接口能力

接口名称 接口能力简要描述
语音识别 将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列

版本更新记录

上线日期 版本号 更新内容
2017.6.30 1.0.0 新增语音识别Java SDK

快速入门

安装语音合成 Java SDK

Speech Java SDK目录结构

  1. com.baidu.aip
  2. ├── auth //签名相关类
  3. ├── http //Http通信相关类
  4. ├── client //公用类
  5. ├── exception //exception类
  6. ├── speech
  7. └── AipSpeech //AipSpeech 类
  8. └── util //工具类

支持 JAVA版本 1.7+

直接使用JAR包步骤如下:

1.在官方网站下载Java SDK压缩工具包。

2.将下载的aip-speech-java-sdk-version.zip解压后,复制到工程文件夹中。

3.在Eclipse右键“工程 -> Properties -> Java Build Path -> Add JARs”。

4.添加SDK工具包speech_sdk-version.jar和第三方依赖工具包json-20160810.jar

其中,version为版本号,添加完成后,用户就可以在工程中使用KG Java SDK。

新建Client

1.初始化一个Client。

  1. public class Sample {
  2. //设置APPID/AK/SK
  3. public static final String APP_ID = "你的 App ID";
  4. public static final String API_KEY = "你的 Api ID";
  5. public static final String SECRET_KEY = "你的 Secret Key";
  6. public static void main(String[] args) {
  7. // 初始化一个FaceClient
  8. AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
  9. // 可选:设置网络连接参数
  10. client.setConnectionTimeoutInMillis(2000);
  11. client.setSocketTimeoutInMillis(60000);
  12. // 调用API
  13. JSONObject res = client.asr("test.pcm", "pcm", 16000, null);
  14. System.out.println(res.toString(2));
  15. }
  16. }

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

接口调用

语音识别

接口描述

向远程服务上传整段语音进行识别

请求说明

  • 原始语音的录音格式目前只支持评测 8k/16k 采样率 16bit 位深的单声道语音
  • 压缩格式支持:pcm(不压缩)、wav、amr
  • 系统支持语言种类:中文(zh)、粤语(ct)、英文(en)。

举例:

  1. public void synthesis(AipSpeech client)
  2. {
  3. // 对本地语音文件进行识别
  4. String path = "D:\\code\\java-sdk\\speech_sdk\\src\\test\\resources\\16k_test.pcm";
  5. JSONObject asrRes = client.asr(path, "pcm", 16000, null);
  6. System.out.println(asrRes);
  7. // 对语音二进制数据进行识别
  8. byte[] data = Util.readFileByBytes(path); //readFileByBytes仅为获取二进制数据示例
  9. JSONObject asrRes2 = client.asr(data, "pcm", 16000, null);
  10. System.out.println(asrRes);
  11. // 对网络上音频进行识别
  12. String url = "http://somehost/res/16k_test.pcm";
  13. String callback = "http://callbackhost/aip/dump";
  14. JSONObject res = client.asr(url, callback, "pcm", 16000, null);
  15. System.out.println(res);
  16. }

接口函数说明:

  1. // 语音识别
  2. JSONObject asr(String path, String format, int rate, HashMap<String, Object> options);
  3. JSONObject asr(byte[] data, String format, int rate, HashMap<String, Object> options);
  4. JSONObject asr(String url, String callback, String format, int rate, HashMap<String, Object> options);
参数 类型 描述 是否必须
path/data String/byte[] 语音文件所在路径或二进制数据
url String 语音下载地址
callback String 识别结果回调地址
format String 包括pcm(不压缩)、wav、amr
rate int 采样率,支持 8000 或者 16000
cuid String 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内
lan String 语种选择,中文=zh、粤语=ct、英文=en,不区分大小写,默认中文

语音识别 返回数据参数详情

参数 类型 是否一定输出 描述
err_no int 错误码
err_msg int 错误码描述
sn int 语音数据唯一标识,系统内部产生,用于 debug
result string 识别结果数组,提供1-5 个候选结果,string 类型为识别的字符串, utf-8 编码

返回样例:

  1. // 成功返回
  2. {
  3. "err_no": 0,
  4. "err_msg": "success.",
  5. "corpus_no": "15984125203285346378",
  6. "sn": "481D633F-73BA-726F-49EF-8659ACCC2F3D",
  7. "result": ["北京天气"]
  8. }
  9. // 失败返回
  10. {
  11. "err_no": 2000,
  12. "err_msg": "data empty.",
  13. "sn": null
  14. }

错误码

错误码 含义
3300 输入参数不正确
3301 识别错误
3302 验证失败
3303 语音服务器后端问题
3304 请求 GPS 过大,超过限额
3305 产品线当前日请求数超过