百度语音识别

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容