简介
本文记录百度离线识别与讯飞离线语音识别,针对的是应用本身级别的。
百度语音离线识别集成
-
首先下载开发架包:bdasr_V3_20180801_d6f298a.jar,这个是离在线融合的SDK ;
-
导入so库:可在下载的demo中找到,复制到自己工程中同名的路径下
-
需要百度开放平台上去申请 API Key 和 Secret Key,这是认证权限的必备信息,只有认证通过才可以继续使用语音功能,如语音唤醒,在线识别,离线识别等等。首先需要百度开放平台上去申请 API Key 和 Secret Key,这是认证权限的必备信息,只有认证通过才可以继续使用语音功能,如语音唤醒,在线识别,离线识别等等。
而鉴权认证就是要成功获取到AccessToken(Access Token 是用户身份验证和授权的凭证),而这个认证过程需要自己在应用中编写,之后会提到。
将获取到的AppID、API Key 和 Secret Key添加到项目的配置文件中去; -
AndroidManifest.xml 文件的配置:
设置权限(如果是Android 6.0 以上还需要获取动态权限,之后会说到)
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
设置APP_ID, APP_KEY, APP_SECRET
<meta-data android:name="com.baidu.speech.APP_ID"
android:value="9788136" />
<meta-data
android:name="com.baidu.speech.API_KEY"
android:value="0GjQNO5H4pGPf9HyA3AmZEbz" />
<meta-data
android:name="com.baidu.speech.SECRET_KEY"
android:value="db981ef3ec647ba8a09b599ad7447a24" />
- 注意事项:在申请API Key时需要设置应用包名,并且保证官网申请时的与app/bulid.gradle里的applicationId一致,否则会导致离线命令词或是唤醒报“no licenece”的错误。
离线识别实现
1.可以先准备本地词库和唤醒词库
-
本地识别词库(.bsg文件),可以通过百度提供的生成工具:yuyin.baidu.com.com/asr进行自定义
点击保存后就会生成一个.bsg文件,就是用于离线识别的本地词库。 -
唤醒词库(.bin文件),可以在http://ai.baidu.com/tech/speech/wake中进行自定义:
-
存放位置:
2.基于SDK的使用:
- 初始化EventManager类
EventManager asr = EventManagerFactory.create(context, "asr");//语音识别器
EventManager wp = EventManagerFactory.create(context, "wp");//语音唤醒器
- 定义输出事件类
public class RecogResultManager implements EventListener{
...........
/**
* 回调事件
*/
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
String logMessage = "name:" + name + "; params:" + params;
Log.d(TAG, logMessage);
switch (name) {
case SpeechConstant.CALLBACK_EVENT_ASR_READY:
// 引擎准备就绪,可以开始说话
break;
case SpeechConstant.CALLBACK_EVENT_ASR_BEGIN:
// 检测到用户的已经