Android开发学习之使用百度语音识别SDK实现语音识别(上)
作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从IOS的Siri到国内的讯飞语音,语音识别技术在移动开发领域是最为充满前景和希望的技术。Android作为一个移动操作系统,其本身就继承了Google天生的搜索基因,因此Android对于语音识别和语音合成本身是具有较好的支持的。然而由于种种原因,在我天朝上国,Android的大量特性只能沦为纸上谈兵。而作为未来人机交互的新模式,中文语音识别技术本身门槛相对较高,这不禁令许多开发者望而却步。不过,目前国内已经出现了一些提供语音识别相关技术服务的厂商,通过了解目前国内语音识别技术的现状,可以帮助我们在开发语音识别相关应用的过程中选择一个较为合适的方向。那么目前国内较为著名的两家提供语音识别技术的厂商分别是科大讯飞和百度,并且两家厂商都开放了相应的API接口,通过API接口我们可以轻松地在自己的应用中实现语音识别。科大讯飞提供了从文本合成到语音识别等一系列的解决方案,而百度则仅提供了语音识别的相关解决方案。具体的情况大家可以从下面的地址了解:
科大讯飞:http://open.voicecloud.cn/index.php/default/index
百度语音:http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/voice
那么,今天我们就来一起学习通过百度语音识别的API来实现语音识别吧(我会告诉你我是百度粉吗?),在使用百度的相关API时,必须要有百度开发者账号,并取得相关的应用授权参数,剩下的事情就是免费使用百度语音识别的服务啦,具体的情况大家可以查看官方的SDK文档:
http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/voice/sdk
做好前面的准备工作后,我们就可以开始今天的学习了。首先让我们来创建一个Android项目,并在项目中引入百度语音的jar库文件:VoiceRecognition-1.2.jar,然后在AndroidManifest.xml文件中加入下面的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"/><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"/>
然后我们做一个简单的布局,一个Button按钮,一个文本框:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><EditTextandroid:id="@+id/InputBox"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10"android:inputType="text" ><requestFocus /></EditText><Buttonandroid:id="@+id/BtnStart"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/BtnStart" />
</LinearLayout>
在这篇文章中我们只是对百度语音做一个初步的了解,因此我们今天采取的方式是直接调用百度为我们封装好的一个语音识别对话框类BaiduASRDigitalDialog,我们一起来看代码:
package com.Android.BaiduVoice;import java.util.ArrayList;import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog;
import com.baidu.voicerecognition.android.ui.DialogRecognitionListener;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends Activity {//开始按钮 private Button BtnStart;//文本框private EditText InputBox;//百度语音识别对话框private BaiduASRDigitalDialog mDialog=null;private DialogRecognitionListener mDialogListener=null;//应用授权信息 ,这里使用了官方SDK中的参数,如果需要,请自行申请,并修改为自己的授权信息private String API_KEY="8MAxI5o7VjKSZOKeBzS4XtxO";private String SECRET_KEY="Ge5GXVdGQpaxOmLzc8fOM8309ATCz9Ha";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (mDialog == null) {if (mDialog != null) {mDialog.dismiss();}Bundle params = new Bundle();//设置API_KEY, SECRET_KEYparams.putString(BaiduASRDigitalDialog.PARAM_API_KEY, API_KEY);params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, SECRET_KEY);//设置语音识别对话框为蓝色高亮主题params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, BaiduASRDigitalDialog.THEME_BLUE_LIGHTBG);//实例化百度语音识别对话框mDialog = new BaiduASRDigitalDialog(this, params);//设置百度语音识别回调接口mDialogListener=new DialogRecognitionListener(){@Overridepublic void onResults(Bundle mResults) {ArrayList<String> rs = mResults != null ? mResults.getStringArrayList(RESULTS_RECOGNITION) : null; if (rs != null && rs.size() > 0) {InputBox.setText(rs.get(0));}}};mDialog.setDialogRecognitionListener(mDialogListener);}//设置语音识别模式为输入模式mDialog.setSpeechMode(BaiduASRDigitalDialog.SPEECH_MODE_INPUT);//禁用语义识别mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_NLU_ENABLE, false);//界面元素BtnStart=(Button)findViewById(R.id.BtnStart);InputBox=(EditText)findViewById(R.id.InputBox);BtnStart.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {mDialog.show();}});}
}
这样,我们就实现了在我们的应用中实现语音识别的目的,感觉还是蛮简单的啊,呵呵,下面给出程序运行示意图:
通过这种方式调用百度语音十分地简单,但是难以满足个性化定制的需求,官方默认为我们提供过了8种配色方案,如果这8种配色方案还不能满足我们实际需求的话,那么就需要我们以百度语音提供的API自行定制,具体的内容大家可以继续关注我的博客,在下一篇文章中,我们将以百度语音API为基础来实现自己的语音识别界面,感谢大家关注!
Android开发学习之使用百度语音识别SDK实现语音识别(上)相关推荐
- android开发游记:集成百度定位SDK进行实时定位 获取当前城市地理信息
定位功能在app开发中很常用,大多数企业都是不具备定位资质的,所有一般是通过接入第三方的sdk来进行定位,比较熟悉的有如:百度.高德.谷歌.腾讯等.而国内比较地图策划比较成熟的主要是百度和高德,这里就 ...
- Android开发学习——3.平台版本、SDK版本、API级别
文章目录 一.引言 二.概念学习 1. 平台版本 2. API级别 3. SDK版本 三.参考 一.引言 前两篇文介绍了Android开发的IDE--AS和AS安装时需要准备的工具包.某种程度上来说, ...
- android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...
对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...
- Android开发学习---使用Intelij idea 13.1 进行android 开发
Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...
- android开发学习大体思路
android开发学习: android学习的前提是java基础.如果你没有好的java基础,那就赶紧补充,我在这里不做介绍. android是基于linux的,如果你要做底层的东西,可以买一些关于l ...
- Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机
今天无意当中发现在<Android开发学习之基于ZBar实现微信扫一扫>中的一部分代码可以用来以硬件方式实现一个照相机的功能,在<Android开发学习之调用系统相机完成拍照的实现& ...
- android培训内容明细,记录Android开发学习
记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...
- android开发学习之路——连连看之游戏逻辑(五)
GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...
- 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结
本节书摘来异步社区<Java和Android开发学习指南(第2版)>一书中的第1章,第1.5节,作者:[加]Budi Kurniawan,更多章节内容可以访问云栖社区"异步社区& ...
最新文章
- 易遭黑客利用,慎用免费的网站SSL证书!!!
- dubbo提供者主配置文件application.properties
- 2015年 六·一 儿童节——我
- c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
- 监控WIN2003文件服务器上的文件夹和文件的复制、删除
- python输出变量地址_Python——变量
- python获取按键值_如何用按键获取刻度值?
- npm的那些“坑”——持续更新
- 多媒体计算机室的好处,多媒体会议室系统带来的好处有什么
- 红米note9pro刷鸿蒙,红米Note9Pro稳定版刷机包(官方系统固件升级包MIUI11)
- 2021年中国钢铁行业发展现状分析,“双碳”背景下行业转型步伐加快「图」
- python 爬虫,获取携程网站机票数据
- 计算机文字环绕图片的方式有哪些,Word2003文字环绕图片方式怎么设置
- linux下vi编辑器方向键变成字母的解决方法
- 基于Android的火灾报警
- Win11系统频繁断网怎么办?Win11网络不稳定的解决方法
- 蓝牙【GATT】协议介绍
- python发送邮件一
- 全球与中国电解镍市场深度研究分析报告
- 纯perl语言计算文件的crc32值