美文网首页
百度语音识别

百度语音识别

作者: 安卓_背包客 | 来源:发表于2018-03-01 17:49 被阅读0次

Android ASR SDK 集成进入****helloworld 项目

(一) 简介:

<pre style="background:white">本文针对遇见集成Android识别SDK有困难的用户,以helloworld项目作为示例,给出的步骤。</pre>

<pre style="background:white">本文将集成ActivityMiniRecog至一个新建的helloworld项目。</pre>

<pre style="background:white">参考文档:https://cloud.baidu.com/doc/SPEECH/ASR-Android-SDK.html#.E9.9B.86.E6.88.90.E6.8C.87.E5.8D.97</pre>

<pre style="background:white">前提: 将官方demo的源代码通过android studio在android真机上运行起来并且测试成功。Demo暂不支持模拟器。</pre>

<pre style="background:white">目标用户:Android初学者或者想立即集成的用户。</pre>


image.png

(二) 准备一个helloworld项目及官网注册应用

image.png

注意,红框画出的是包名。****在项目测试成功后,您可以将您自己的包名填写在官网申请的应用并且该应用开通了语音识别能力

目前您可以“暂时”用demo的示例的应用信息。

image.png
image.png
image.png

Android studio自动下载依赖项目后,运行,手机上出现以下界面:

image.png

(三) 复制 AndroidManifest.xml

从官方demo的AndroidManifest.xml中找到如下信息,然后复制到您自己的同名文件中。

此处需要您复制a)权限 b) 官网申请的应用信息 c) SDK的Service

image.png

紫色的请测试成功后替换成您自己的申请的应用信息。

红色是您需要的添加的部分

image.png

(四) 复制jar 文件

将官方demo中的app\libs\bdasr_V3_20171108_9800a2a.jar 复制进您项目的同名目录。

image.png

此处是android 默认的jar libs目录,在build.gradle中可以确认:

image.png

(五) 替换MainActivity

<pre style="background:white">找到官方demo中的ActivityMiniRecog</pre>

<pre style="background:
white">(com.baidu.android.voicedemo.activity.mini 目录下)</pre>

<pre style="background:white">除第一行外,将ActivityMiniRecog全部的内容复制到MainActivity中</pre>

<pre style="background:white"> image.png

</pre>

<pre style="background:white">将红框中的ActivitityMiniRecog改为MainActivity</pre>

<pre style="background:white"> image.png

] </pre>

<pre style="background:white">点击上图刷新按钮,可以发现缺少common_mini layout文件</pre>

<pre style="background:white">复制官方demo中的 res\layout\common_mini.xml 文件,至项目的同名目录</pre>

<pre style="background:white"> image.png

</pre>

<pre style="background:white">测试编译项目,此时应该没有报错。</pre>

(六) 复制jni库的so文件

此时项目可以运行,可以看见如下界面:

image.png

由于缺少so****文件,点击开始后,有如下报错:

:{"sub_error":5001,"error":5,"origin_result":{"sub_error":5001,"error":5,"sn":"","desc":"Can not load so library"},"desc":"Can not load so library"}

我们继续修改项目:

复制官方demo****中 app\src\main\jniLibs 至项目的同名目录,如果对android studio不熟悉,这一步可以在windows 资源管理器操作

目录层级如下:

image.png

可以切换视图确认下:

[图片上传失败...(image-9fc849-1519897045230)] image.png

(七) 联网测试

请确认手机可以联网,

运行项目后,点击“开始”按钮(注意只要点一次),然后大声说“开始测试”。中途有权限申请,请同意。

注意,如果您不知道测试方法的,请先运行官方demo,确保官方demo先测试成功。

image.png

至此集成成功,之后我们需要根据需求定制参数。

(八) 选择纯在线或者支持离线命令词。

离线命令词是指SDK断网时可以识别bsg文件中预先固定的短语。

Bsg文件可以在http://speech.baidu.com/asr这里下载。

a) 纯在线:如果您不需要离线命令词功能,那么SDK仅在联网时有识别结果。

此时请修改为纯在线

<pre style="background:white">private boolean enableOffline = false; </pre>

b) 离线命令词:如果您需要离线命令词功能,那么请下载您自定义的bsg文件。

以官方demo提供的bsg文件为例:

新建assets目录:

image.png

成功后如图

复制demo中的assets app\src\main\assets\baidu_speech_grammar.bsg至同名目录中

image.png

运行项目。

image.png

出现红框加载的文字说明离线引擎加载成功。否则为失败

离线命令词首次使用需要联网,请联网测试一次识别成功后断网,说“打电话给张三”。注意离线引擎识别率低于在线的,请发音清晰。

image.png

此时,官方demo集成全部完毕。

(九) 个性化识别参数

打开demo,选一个您要的识别场景应用,这里以“在线识别”界面为例。 进入界面后,点击“设置”按钮。

经过一轮测试,准备选择“保存音频文件”及VAD时长2000ms作为在线识别的参数。

image.png

点击开始录音后,可以看见如下输入参数:

image.png

这个json在logcat中也可以找到。

“vad.endpoint-timeout” 是定义在SpeechConstant中的常量。

项目中填写同样的参数,生成一样的json。

Start方法代码如下:

<pre style="background:white">private void start() { txtLog.setText("");

Map<String, Object> params = new LinkedHashMap<String, Object>();

String event = null;

event = SpeechConstant.ASR_START; // 替换成测试的event if (enableOffline){ // 这里是false

params.put(SpeechConstant.DECODER, 2);

}

params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT,2000);

params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);

params.put(SpeechConstant.OUT_FILE, "/storage/emulated/0/baiduASR/outfile.pcm");

params.put(SpeechConstant.ACCEPT_AUDIO_DATA, true);

params.put(SpeechConstant.DISABLE_PUNCTUATION,false); *// params.put(SpeechConstant.NLU, "enable");

// params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT, 800);

// params.put(SpeechConstant.VAD, SpeechConstant.VAD_DNN);

// params.put(SpeechConstant.PROP ,20000);* String json = null; //可以替换成自己的json json = new JSONObject(params).toString(); // 这里可以替换成你需要测试的json printLog("****输入参数:" + json); // 打印出来的json和官方demo的json一致</pre>

<pre style="background:white">asr.send(event, json, null, 0, 0);

}</pre>

运行项目后,点击“开始”按钮可以看见:

image.png

(十) 替换自己申请应用的信息及包名

此时别忘了测试都是用demo的appId appKey SecretKey及包名信息的。

修改成您自己的包名:

image.png

官网申请新应用或者修改原有应用,填写您的包名。

将appId appKey secretKey填写至下图AndroidManifest.xml紫色框的地方。

[图片上传失败...(image-d0fe3a-1519897045228)]

(十一) 代码下载

链接:https://pan.baidu.com/s/1dEN0T2L 密码:ohjk

相关文章

网友评论

      本文标题:百度语音识别

      本文链接:https://www.haomeiwen.com/subject/wnknxftx.html