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文件夹里。
    bakerlongtimeasr-release.aar
    basecomponent-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以上需要动态申请RECORD_AUDIO权限。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
  • 在主Module的AndroidManifest.xml文件中的application节点添加以下属性。
    android:usesCleartextTraffic="true"
  • 关于混淆

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

    -keep class com.baker.sdk.longtime.asr.bean.** { *; }
    -keep public class com.baker.sdk.longtime.asr.LongTimeAsr{*;}
    -keep public class com.baker.sdk.longtime.asr.listener.LongTimeAsrCallBack{*;}
    -keep public class com.baker.sdk.longtime.asr.base.BakerLongTimeAsrConstants{*;}
    -keep class com.baker.sdk.http.**{*;}
    -keep class com.baker.sdk.basecomponent.**{*;}

SDK关键类

  • LongTimeAsr:长语音识别关键业务处理类,全局只需一个实例即可。
  • LongTimeAsrCallBack:实时识别结果源数据回调类。您可以在这些个回调方法中获取到当前识别的各类结果和状态,或者错误信息。注意回调方法是运行在子线程的。初始化SDK时 请将此callback提交给LongTimeAsr实例。

调用说明

  • 实例化LongTimeAsr类,得到LongTimeAsr的实例。
    LongTimeAsr longTimeAsr = new LongTimeAsr();
  • 初始化SDK

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

    longTimeAsr.initSdk(context, clientId, clientSecret, LongTimeAsrCallBack);

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

    longTimeAsr.initSdk(context, LongTimeAsrCallBack);
    longTimeAsr.setUrl("ws://xxxx"); //设置私有化部署的识别服务器地址
  • 长语音识别支持2种识别场景,第一种是SDK内调用手机麦克风录音、上传完成识别返回识别结果。此种方式需要接入方提前获取应用的录音权限。第二种场景是接收字节流,SDK收到数据后,上传服务器完成识别,返回识别结果。

    第一种场景:

    • 需要应用取得录音权限。
    • 通过LongTimeAsr实例,设置各类参数。
    • longTimeAsr.startAsr(); 开启识别。
    • 在LongTimeAsrCallBack回调中接收状态、识别结果,或错误信息等。
    • 通过longTimeAsr.stopAsr(); 此方法结束识别。

    第二种场景:

    • 通过LongTimeAsr实例,设置各类参数。
    • longTimeAsr.start(); 通知SDK准备识别。
    • 在LongTimeAsrCallBack的onReady() 回调方法中得到SDK已准备好后。
    • 多次调用longTimeAsr.send(byte[] data);方法向SDK输入待识别语音字节 流。此方法单次接收固定长度(5120)字节数组。最后一片数据可以是 其他长度字节数组。
    • 在LongTimeAsrCallBack回调中接收状态、识别结果,或错误信息等。
    • longTimeAsr.end();结束识别。
    • 此种方式,每次在调用longTimeAsr.send(byte[] data)时,前后2次间隔时 间不能超过60秒,私有化部署根据服务器设定具体时间为准。
  • 在确定不再使用识别后,调用longTimeAsr.release()释放SDK资源。
  • 如果需要发起新的识别请求,可以重复第3步。
  • 长语音识别限制时长不超过3小时。

参数说明

参数 参数名称 是否必填 说明
initSdk 初始化SDK 必须调用此方法初始化SDK,祥见3.2
setUrl 识别服务器地址 仅私有化部署,需要设置服务器URL。
setSampleRate 设置语音录音采样率 采样率支持16000/8000,默认16000。
setAddPct 设置是否返回标点 是否在短静音处添加标点,默认true
setDomain 模型名称 模型名称,必须填写公司购买的语言模型,默认为common
setAudioFormat 音频编码格式 输入字节流方式识别时,支持设置音频编码格式pcm或wav
setHotwordid 热词组的id 配置的热词组的id
setDiylmid 个性化模型的id asr个性化模型的id

LongTimeAsrCallBack回调类方法说明

参数 参数名称 说明
onReady() 准备就绪 授权验证通过,且与服务器连接成功,准备就绪回调
onRecording(LongTimeAsrResponse response) 实时识别持续返回数据的接口回调 当识别有效,且识别到内容后,会唤起此回调方法,多次回调。回调内容是当前句的实时识别内容,回调中的字符串结果会持续变化至最新校正后的结果。祥见下表LongTimeAsrResponse参数说明。
onRecording(String result, boolean sentenceEnd, boolean endFlag) 实时识别持续返回数据的接口回调 当识别有效,且识别到内容后,会唤起此回调方法,多次回调。回调内容是当前句的实时识别内容,回调中的字符串结果会持续变化至最新校正后的结果。第一个布尔值sentenceEnd代表当前句识别是否结束,为true时代表当前句识别最终结果,下一次回调是下一句的识别内容。第二个布尔值endFlag为true时代表识别全部结束。注意:需要开发者根据此回调逐句追加显示或处理识别结果。
onVolume(int volume) 音量分贝回调 对识别数据进行音量分贝计算后的回调,数值范围0-100
onError(String code, String errorMessage) 识别出现错误 String code是错误码,错误码具体请参考以下错误码对照表。String message是具体的错误信息日志。识别过程中出现各种错误情况都会回调此方法。一旦出现错误,此次识别任务中断。

LongTimeAsrResponse参数说明

参数 类型 描述
code int 错误码
4xxxx表示客户端参数错误
5xxxx表示服务端内部错误
message string 错误描述
trace_id string 任务id
asr_text string 识别结果
code为9000时包含有效数据
sentence_id int 句子id,从1递增
sentence_end string 句子结束标志
false:当前句子识别未结束,后续还有识别内容
true:当前句子识别已结束,后续识别内容为下一句的识别结果
end_flag int 是否是最后一个数据块,0:否,1:是
sos string 句子起始时间(只有在sentence_end为“true"时存在
eos string 句子结束时间(只有在sentence_end为“true"时存在)
confidence string 整句置信度[0-100]
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

响应结果示例

成功时:识别文本消息json结构如下:
{
	"asr_text": "欢迎使用标贝科技开放平台。",
	"code": 90000,
	"confidence": "73.63",
	"end_flag": 1,
	"eos": "2.96",
	"message": "Success",
	"sentence_end": "true",
	"sentence_id": 1,
	"sos": "0.08",
	"speed": 23,
	"speed_label": "MEDIUM",
	"trace_id": "1652342025479837",
	"volume": 44,
	"volume_label": "SOFT",
	"words": [{
		"confidence": "0.42",
		"eos": "0.51",
		"sos": "0.08",
		"word": "欢迎"
	}, {
		"confidence": "0.92",
		"eos": "1.05",
		"sos": "0.51",
		"word": "使用"
	}, {
		"confidence": "0.58",
		"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.13",
		"sos": "2.40",
		"word": "平台"
	}]
}

失败时:json示例:
{
      "code":40001,
      "message":"Invalid json data",
      "trace_id":" 1572234229176271",
      "sid":"b311d1cd-f7a7-4378-9730-0c12d194231f",//可能不存在
}

错误码说明

错误码 含义
14180001 缺少ClientId
14180002 缺少Secret
14180003 token获取失败
14180004 没有录音权限
14180005 本地网络不可用
14180006 网络未准备好,没有调用start方法
14180007 录音尚未初始化
14180008 正在录音
14180009 发送的数据为空
14180010 response is null
14180011 gson to object error
14180012 websocket发送消息出错
14180013 websocket onFailure error
14180014 录音意外中断
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错误
40013 音频包长度错误
40014 access_token与当前服务不匹配
40015 音频大小错误
40016 错误的音频格式
40017 错误的采样率
40018 错误的req_idx
40019 错误的version
40020 错误的access_token
40021 错误的domain
50001 处理超时
50002 内部 rpc 调用失败
50003 服务端繁忙
50004 其他内部错误