logo
产品简介 产品简介
基本概念 基本概念
平台新手指引 平台新手指引
计价模式 计价模式
开发者文档下拉
开放平台计价
定制服务计价
获取访问令牌 获取访问令牌
语音合成 语音合成
开发者文档下拉
接口说明
发音人列表
在线合成 开发者文档下拉
Android SDK
iOS SDK
C++(Linux) SDK
RESTful API
Websocket API
长文本语音合成API
离线合成 开发者文档下拉
离线合成 Android SDK
离线合成 iOS SDK
语音识别 语音识别
开发者文档下拉
一句话识别 开发者文档下拉
RESTful API
Websocket API
实时长语音识别 开发者文档下拉
Websocket API
录音文件识别 开发者文档下拉
RESTful API
SDK文档 开发者文档下拉
Android SDK
iOS SDK
声音复刻 声音复刻
开发者文档下拉
定制模型 开发者文档下拉
RESTful API
Android SDK
iOS SDK
语音合成 开发者文档下拉
RESTful API
声音转换 声音转换
开发者文档下拉
Websocket API
Android SDK
iOS SDK
协议规则 协议规则
开发者文档下拉
平台服务协议
平台通用规则
法律声明及隐私政策
服务等级协议SLA
常见问题 常见问题
开发者文档下拉
语音合成
语音识别

语音识别Android SDK

下载安装

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

Android Studio集成aar(参考demo)

  • 在工程model下build.gradle文件中添加以下代码。建议使用此方式
  • dependencies{
    //识别库
    implementation'com.baker.speech.asr:bakerasr:1.2.+'
    //识别库会依赖下面两个库
    implementation'com.squareup.okhttp3:okhttp:4.2.2'
    implementation'com.google.code.gson:gson:2.8.6'
    } 

    或者将.jar/.aar包添加至工程module下,lib文件夹里。

    集成.jar/.aar包有多种方式,本文提供一种作为参考,采用其他正确集成方式都可行。注意:SDK内使用了okhttp、gson所以需要开发者添加以下两个库。若工程内已存在,无需重复添加。okhttp请使用4.x版本,以免出现版本兼容bug。

  • 在主Module的AndroidManifest.xml文件中添加网络权限。
  • <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" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 在主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 = BakerRecognizer.getInstance
    (VoiceSpeechActivity.this, clientId, clientSecret);

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

    BakerRecognizer bakerRecognizer = BakerRecognizer.getInstance
    (VoiceSpeechActivity.this);
    bakerRecognizer.setUrl("ws://xxxx"); //设置私有化部署的识别服务器地址
  • 设置BakerRecognizer识别所需参数,包括必填参数和非必填参数。请参考demo和注释信息。
  • 调用BakerRecognizer.startRecognize()方法开启语音识别,该方法返回int值,返回0代表启动成功。识别结果反馈在callback类的各个回调方法中,各回调方法的介绍请参考以下BakerRecognizerCallback回调类方法说明。正常识别一般无需调用BakerRecognizer.stopRecognition()方法结束识别,SDK中的VAD会自动检测,当符合条件时会自动结束识别,比如声音停顿时间超过设置的语音后端点静音检测时间。

    文件识别功能:BakerRecognizer.startRecognize(String filePath)在此方法中的参数传入文件路径即可,支持原始PCM文件。

    开发者提供识别数据源:BakerRecognizer.startRecognizeWithByte()使用此方法开启语音识别。

    多次调用BakerRecognizer.sendPcmBuffer(buffer)方法发送数据。

    当BakerRecognizer.startRecognizeWithByte()方法开启识别的时候sendPcmBuffer() 方法有效。buffer的大小务必固定1024(最后一包除外);传递完数据后可以自行调用BakerRecognizer.stopRecognition()结束识别或者当识别过程中静音段超时会自动结束识别。

    sendPcmBuffer();返回结果说明;0=正常,1=buffer是空,2=buffer超过1024

  • 如果需要发起新的识别请求,可以重复第2-3步

参数说明

参数 参数名称 是否必填 说明
setCallback 设置识别回调 设置识别回调类
setUrl 识别服务器地址 仅私有化部署,需要设置服务器URL。
setVadSos 设置语音前端点 静音超时时间,即用户多长时间不说话则当做超时处理,参数请勿随意设置,因为此处设置的参数是按照帧计算的。
setVadEos 设置语音后端点 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音,参数请勿随意设置,因为此处设置的参数是按照帧计算的。
setVadWait 设置语音最大识别时长 设置语音最大识别时长,最长60s=1800,参数请勿随意设置,因为此处设置的参数是按照帧计算的。
setVadPause 设置语句间停顿间隔 设置语句间停顿间隔,默认2s=45,参数请勿随意设置,因为此处设置的参数是按照帧计算的。
setSample 设置识别声音的采样率 设置采样率 目前支持16000 默认16000
addPct 是否添加标点 是否添加标点 true=返回标点,false=不返回标点,默认false
enableItn 是否执行归一化处理 是否执行归一化处理,true=需要处理,false=不需要处理,默认=false。
setRecognizeType 识别类型 识别模式, 0= 一句话识别,sdk端做vad 1=长语音识别,服务端做vad, 默认为0。

BakerRecognizerCallback回调类方法说明

参数 参数名称 说明
onReadyOfSpeech 准备就绪 准备就绪回调
onBeginOfSpeech 识别开始 当识别到有声音时,会唤起此回调方法。即mic输出声音流时。
onResult 流式识别持续返回数据的接口回调 此回调方法会被多次唤起。持续返回实时的识别数据信息。List<String> nbest参数是一个识别结果集合,最优识别结果理论上是nbest(0),List<String> uncertain参数是一个预测的可能出现的语音识别内容的结果集,供选择使用。boolean isLast 当前结果是否是最终识别数据,false:否,true:是。
onEndOfSpeech 识别正常结束。 正常识别结束时,会唤起此回调方法。
onVolumeChanged 识别音量信息 float volume是取值0-1之间的浮点数,代表声音的量能。byte[] data是声音的二进制信息,也可以自己根据源数据流计算处理声音量能信息。
onError 识别出现错误 int code是错误码,错误码具体请参考以下错误码对照表。String message是具体的错误信息日志。识别过程中出现各种错误情况都会回调此方法。

错误码说明

错误码 含义
13180001 缺少ClientId
13180002 缺少Secret
13180003 token获取失败
13180004 没有录音权限
13180005 录音出现未知错误
13180006 本地网络不可用
13180007 webSocket failure
13180008 没有说话
13180009 声音太短
13180010 录音被电话打断
13180011 本地网络未知错误
13180012 服务器检测到识别超过60s
13180013 vad设置参数错误
13180014 vad发送数据错误
13180015 vad状态错误
13180016 超过vad识别最长时限
13180017 vad数据返回错误
13180018 buffer_closed
13180019 返回结果解析错误
13180020 返回结果解析错误;返回null
13180021 传递的数据为空
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 其他内部错误