作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从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" >    <EditText        android:id="@+id/InputBox"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"        android:inputType="text" >        <requestFocus />    </EditText>    <Button        android: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_KEY            params.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为基础来实现自己的语音识别界面,感谢大家关注!

更多相关文章

  1. ilbc编解码在android实现
  2. 学习笔记(一)Android(安卓)的简介
  3. Android百度地图开发之开发第一个小应用,显示基础的地图页面
  4. 腾讯、百度、华为、搜狗和滴滴Android面试题汇总
  5. android语音即时通讯之录音、播放功能实现代码
  6. 【Android语音合成TTS】国内主流引擎对比
  7. 用srec库实现普通话语音识别
  8. [android] 百度地图开发 (二).定位城市位置和城市POI搜索
  9. Android(安卓)百度地图—反地理编码—获取当前位置附近的大厦楼

随机推荐

  1. Android Android Studio添加MPChart
  2. Android(安卓)绑定远程服务出现 Not Allo
  3. 如何查看Android 中native的Service
  4. Android(安卓)Theme
  5. [AndroidTips]Android软件测试的日志文件
  6. Ubuntu下批处理转换jpg 2 png格式
  7. AIDL实例分析和讲解
  8. 翻译引用 android的按键响应
  9. 一招破解Android SDk 更新问题
  10. ListView 美化小细节