logo
电话400 898 2016
预约试用
开放平台
En
尊敬的开发者,您好! 标贝科技的开发文档已更换新的地址,旧版文档地址将会在2023年12月31日下线, 给您带来不便,敬请谅解! 立即查看
产品简介 产品简介
基本概念 基本概念
平台新手指引 平台新手指引
计价模式 计价模式
开发者文档下拉
开放平台计价
定制服务计价
获取访问令牌 获取访问令牌
语音合成 语音合成
开发者文档下拉
接口说明
发音人列表
短文本合成 开发者文档下拉
Android SDK
iOS SDK
C++(Linux) SDK
RESTful API
Websocket API
长文本合成 开发者文档下拉
长文本合成RESTful API
长文本合成Websocket API
离线合成 开发者文档下拉
模型文件说明
离线合成(普通版) Android SDK
离线合成(普通版) iOS SDK
离线合成(精品版) Android SDK
离线合成(精品版) iOS SDK
XML标签
SSML标签
语音合成时间戳功能
语音识别 语音识别
开发者文档下拉
音频格式说明
一句话识别 开发者文档下拉
RESTful API
Websocket API
Android SDK
iOS SDK
实时长语音识别 开发者文档下拉
Websocket API
Android SDK
iOS SDK
录音文件识别 开发者文档下拉
RESTful API
自学习工具 开发者文档下拉
热词
个性化模型
声音复刻 声音复刻
开发者文档下拉
定制模型 开发者文档下拉
RESTful API
Android SDK
iOS SDK
定制声音合成 开发者文档下拉
短文本合成RESTful API
长文本合成Websocket API
声音转换 声音转换
开发者文档下拉
发音人列表
Websocket API
Android SDK
iOS SDK
离线声音转换 离线声音转换
开发者文档下拉
发音人列表
Android SDK
iOS SDK
声纹识别 声纹识别
开发者文档下拉
RESTful API
声音理解 声音理解
开发者文档下拉
RESTful API
协议规则 协议规则
开发者文档下拉
平台服务协议
平台通用规则
法律声明及隐私政策
服务等级协议SLA
常见问题 常见问题
开发者文档下拉
语音合成
语音识别

语音识别Android SDK

下载安装

SDK及示例demo下载地址: https://github.com/data-baker/BakerAndroidSdks

Android Studio集成SDK(参考demo)

  • 将以下3个aar包添加至工程主module下,lib文件夹里。
    basecomponent-release.aar
    bakerasr-release.aar
    bakerhttp-release.aar
  • 在主module的build.gradle文件里,添加以下代码。
  • dependencies {
        implementation fileTree(dir: 'libs', include: ['*.aar'])
        implementation 'com.squareup.okhttp3:okhttp:4.2.2'
        implementation 'com.google.code.gson:gson:2.8.6'
    }

    2021年6月,标贝计划开源sdk源码,所以也可以直接集成源码model。

    注意:SDK内使用了okhttp、gson所以需要开发者添加以这两个库,若工程内已存在,无需重复添加。okhttp请使用4.x版本,以免出现版本兼容bug。

  • 在主Module的AndroidManifest.xml文件中添加权限。6.0以上需要动态申请READ_PHONE_STATE、RECORD_AUDIO等权限
  • <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
  • 在主Module的AndroidManifest.xml文件中的application节点添加以下属性
  • android:usesCleartextTraffic="true"
  • 关于混淆

    SDK中用到了okhttp和gson,所以需要将这两个包的混淆代码添加上。具体混淆代码可以去官方文档上查阅。如果项目中已经有这两个包的混淆代码,不必重复添加。请加上我们SDK其他类的混淆代码,如下:

    -keep class com.baker.speech.asr.basic.**{*;}
    -keep class com.baker.speech.asr.bean.**{*;}
    -keep class com.baker.speech.asr.utils.**{*;}
    -keep public class com.baker.speech.asr.AsrConstants{*;}
    -keep public class com.baker.speech.asr.AsrErrorConstants{*;}
    -keep public class com.baker.speech.asr.BakerRecognizer{
        		public <methods>;
    }
    -keep public class com.baker.speech.asr.vadJni{*;}
    -keep public class com.baker.speech.asr.event.EventManagerMultiNet$BakerWebSocketListener{*;}

SDK关键类

  • BakerRecognizer:语音识别关键业务处理类,全局只需一个实例即可。
  • BakerRecognizerCallback:实时识别结果源数据回调类。您可以在这些个回调方法中获取到当前识别的各类结果和状态,或者错误信息。您可以在回调方法中处理识别结果。设置参数时请将此callback提交给BakerRecognizer实例。

调用说明

  • 初始化BakerRecognizer类,得到BakerRecognizer的实例。
  • 如果是调用我们公有云公共识别接口,请采用以下示例代码初始化BakerRecognizer类,传入由我们授权邮件里面给到的账户相关的clientId和clientSecret。

    BakerRecognizer bakerRecognizer = new BakerRecognizer();
    bakerRecognizer.initSdk(Context, clientId, clientSecret, BakerRecognizerCallback);

    如果是私有化部署请采用以下示例代码初始化BakerRecognizer类。并注意需要在参数中设置私有化部署的识别服务器地址,仅私有化部署时需要设置该参数。

    BakerRecognizer bakerRecognizer = new BakerRecognizer();
    bakerRecognizer.initSdk(Context, BakerRecognizerCallback);
    bakerRecognizer.setUrl("ws://xxxx"); //设置私有化部署的识别服务器地址
  • 设置BakerRecognizer识别所需参数,包括必填参数和非必填参数。请参考demo和注释信息。
  • 调用BakerRecognizer. startAsr()方法开启语音识别。识别结果反馈在callback类的各个回调方法中,各回调方法的介绍请参考以下BakerRecognizerCallback回调类方法说明。Asr服务器端支持vad功能,若开启vad检测,音频输入后,可等待vad判定识别结束。若未开启vad功能,也可主动调用BakerRecognizer. stopAsr()方法结束识别。
  • 如果需要发起新的识别请求,可以重复第2-3步。
  • 针对文件识别或字节流识别功能,1-2步不变,第3步中将做出调整,BakerRecognizer.start();方法开启识别,BakerRecognizer.send(byte[] data)方法发送数据,需要固定大小为5120,最后一包可以小于5120,或者是追加一片空数据,表示完成传输,具体参考demo实现。接口也支持vad设置,也可调用BakerRecognizer.end();主动结束识别。

参数说明

参数 参数名称 是否必填 说明
initSdk 初始化 设置授权相关信息及回调信息
setUrl 识别服务器地址 仅私有化部署,需要设置服务器URL。
setSampleRate 音频采样率 音频采样率8000/16000(默认)
setAudioFormat 音频编码格式 音频编码格式wav/pcm(默认)
setDomain 设置识别场景 默认是common。
setAddPct 添加标点 true: 加标点,默认值
false:不添加标点
setHotwordid 配置热词组 配置的热词组的id
setDiylmid 配置个性化模型 asr个性化模型的id
setEnable_vad 开启静音检测 False: 关闭静音检测(默认)
True:开启静音检测
setMax_begin_silence 最大开始静音时长 允许的最大开始静音时长
单位:毫秒,取值范围[200,60000]
setMax_end_silence 最大结束静音时长 允许的最大结束静音时长
单位:毫秒,取值范围[200, 5000]
startAsr 开启识别 开启识别时调用
stopAsr 结束识别 结束识别时调用
Start() 开启数据流识别 开启数据流识别
send(byte[] data) 发送数据 每包必须5120字节大小,最后一包可以小于5120,或者是空包。
end() 结束数据流识别 主动结束数据流识别

BakerRecognizerCallback回调类方法说明

参数 参数名称 说明
onReadyOfSpeech 准备就绪 网络准备就绪后回调
onResult(BakerResponse response) 流式识别持续返回数据的接口回调 此回调方法会被多次唤起。持续返回实时的识别数据信息。List<String> nbest参数是一个识别结果集合,最优识别结果理论上是nbest(0),List<String> uncertain参数是一个预测的可能出现的语音识别内容的结果集,供选择使用。boolean isLast 当前结果是否是最终识别数据,false:否,true:是。
onBeginOfSpeech() 用户开始输入声音 sdk内部录音,识别到用户开始输入声音时回调。
onEndOfSpeech 识别正常结束 正常识别结束时,会唤起此回调方法。正常识别结束时,会唤起此回调方法。
onVolumeChanged (int volume) 识别音量信息 volume是取值0-100之间的整数,代表声音的分贝值。
onError 识别出现错误 int code是错误码,错误码具体请参考以下错误码对照表。String message是具体的错误信息日志。识别过程中出现各种错误情况都会回调此方法。

BakerResponse内部结构

参数 类型 说明
res_idx int 数据块序列号,请求内容会以流式的数据块方式返回给客户端。服务器端生成,从1递增
nbest stringArray 此回调方法会被多次唤起。持续返回实时的识别数据信息。List<String> nbest参数是一个识别结果集合,最优识别结果理论上是nbest(0),
end_flag int 是否是最后一个数据块,0:否,1:是
text string 正常识别结束时,会唤起此回调方法。
confidence string 语音识别结果,失败时为空
speed int 语速,取值[0-2000]
speed_label string 语速标签:
15以下:FAST 快
15-30 : MEDIUM 适中
30-2000:SLOW 慢
volume int 音量,取值[0-100]
volume_label string 音量标签:
SILENT:0-15 静音
XSOFT:15-30 音量很小
SOFT:30-50 音量小
MEDIUM:50-70 音量适中
LOAD:70-85 音量大
XLOUD:85-100 音量很大
words array 词级别识别结果

words内部结构

参数 类型 说明
confidence string 词置信度,置信度取值[0-100]
sos string 词在音频中的绝对开始时间点 单位:秒
eos string 词在音频中的绝对结束时间点 单位:秒
word string

响应结果示例

{
	"code": 90000,
	"data": {
		"confidence": "68.31",
		"end_flag": 1,
		"nbest": ["欢迎使用标贝科技开放平台。"],
		"res_idx": 20,
		"speed": 26,
		"speed_label": "MEDIUM",
		"text": "欢迎使用标贝科技开放平台。",
		"volume": 45,
		"volume_label": "SOFT",
		"words": [{
			"confidence": "0.40",
			"eos": "0.51",
			"sos": "0.06",
			"word": "欢迎"
		}, {
			"confidence": "0.80",
			"eos": "1.05",
			"sos": "0.51",
			"word": "使用"
		}, {
			"confidence": "0.40",
			"eos": "1.52",
			"sos": "1.05",
			"word": "标贝"
		}, {
			"confidence": "1.00",
			"eos": "1.95",
			"sos": "1.52",
			"word": "科技"
		}, {
			"confidence": "0.50",
			"eos": "2.40",
			"sos": "1.95",
			"word": "开放"
		}, {
			"confidence": "1.00",
			"eos": "3.12",
			"sos": "2.40",
			"word": "平台"
		}]
	},
	"message": "Success",
	"trace_id": "1652148314904999"
}

错误码说明

错误码 含义
13180001 缺少ClientId
13180002 缺少Secret
13180003 token获取失败
13180004 没有录音权限
13180005 本地网络不可用
13180006 网络未准备好,没有调用start方法
13180007 录音尚未初始化
13180008 正在录音
13180009 发送的数据为空
13180010 response is null
13180011 gson to object error
13180012 websocket发送消息出错
13180013 websocket onFailure error
13180014 录音意外中断
90000 文本数据
30001 HTTP请求参数错误
30002 服务内部错误
30003 识别结果解析出错
30004 应用包名未知
30005 语音质量问题
30006 输入语音过长
30007 连接识别引擎失败
30008 会话id不存在
30009 Rpc调用非法
30010 redis rpop操作返回空
30011 redis rpop值不合法
30012 rpc调用识别引擎失败
30013 Redis rpop操作失败
30014 redis lpush操作失败
30015 单个语音分片过长
30016 回调url失败
40001 json解析失败
40002 json字段不全
40003 版本错误
40004 json字段值类型错误
40005 参数错误
40006 idx超时
40007 idx顺序错误
40008 token校验失败
40009 token处于未激活状态
40010 token已过期
40011 使用量已超过购买量
40012 qps错误
50001 处理超时
50002 内部 rpc 调用失败
50003 服务端繁忙
50004 其他内部错误