手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android基于讯飞语音SDK实现语音识别
Android基于讯飞语音SDK实现语音识别
摘要:一、准备工作1、你需要android手机应用开发基础2、科大讯飞语音识别SDKandroid版3、科大讯飞语音识别开发API文档4、andr...

一、准备工作

1、你需要android手机应用开发基础

2、科大讯飞语音识别SDK android版

3、科大讯飞语音识别开发API文档

4、android手机

关于科大讯飞SDK及API文档,请到科大语音官网下载:http://www.xfyun.cn/

当然SDK和API有多个版本可选,按照你的需要下载,其次,下载需要填写资料申请注册,申请通过或可获得Appid

如下图,申请一个APPID,就可以了。

Android基于讯飞语音SDK实现语音识别1

二、语音识别流程

1、创建识别控件

函数原型

Public RecognizerDialog(Context context,String params)

其中Context表示当前上下文环境,传this即可

Params有参数详见API文档

2、用Appid登录到科大讯飞服务器(自动连接,需要联网)

主要用到SpeechUser(com.iflytek.speech包下)类下的getUser().login()函数

其中getUser()表示获取用户对象,可以实现用户登录,注销等操作

Login函数原型

Public boolean login(Context context,String usr,String pwd,String

参数详见API文档

3、读取语言识别语法

详见API文档

4、设置识别参数及识别监听器

通过RecognizerDialog下的setEngine()方法设置参数

函数原型

public void setEngine(String engine,String params,String grammar)

详细的参数请参考API文档

5、识别结果回调

需要实现RecognizerDialogListener接口,其中有两个方法需要重写,分别是

1)public void onResults(ArrayList<RecognizerResult> results,boolean isLast)

其中result是RecognizerResult对象的集合,RecognizerResult的属性有

String text 识别文本

Int confidence 识别可信度

2)public void onEnd(SpeechError error)

6、识别结果处理(自行处理)

自己将文本进行处理。

三、详细开发过程

1、新建Android项目

和普通的android项目一样,只是需要加入科大讯飞语言SDK包,主要包括

Msc.jar及libmsc.so动态库文件,项目lib截图

Android基于讯飞语音SDK实现语音识别2

2、布局

这里只进行简单的布局,只设置一个按钮作为语言识别按钮及一个文本组件用作显示识别结果,布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="300dp" android:gravity="top" android:inputType="textMultiLine" > <requestFocus /> </EditText> <Button android:id="@+id/button_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击开始说话" /> </LinearLayout>

3、Main.java代码如下:

public class Main extends Activity { // 组件 private Button button = null; private TextView result = null; private Toast mToast = null; // 语音识别 private final String APP_ID = "这里改成自己的APP_ID"; private RecognizerDialog recognizerDialog = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); button = (Button) super.findViewById(R.id.button_start); result = (TextView) super.findViewById(R.id.editText); // 初始化识别 mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT); mToast.setMargin(0f, 0.2f); recognizerDialog = new RecognizerDialog(this, "appid=" + APP_ID); SpeechUser.getUser().login(this, null, null, "appid=" + APP_ID, loginListener); this.button.setOnClickListener(new Btn()); } private class Btn implements OnClickListener { @Override public void onClick(View v) { //MainActivity.this.voice.setImageResource(R.drawable.voicelight); recognizerDialog.setListener(mRecoListener); recognizerDialog.setEngine(null, "grammar_type=abnf", grammarText); recognizerDialog.show(); } } // 语音识别用户登录监听器 private SpeechListener loginListener = new SpeechListener() { @Override public void onData(byte[] arg0) { } @Override public void onEvent(int arg0, Bundle arg1) { } @Override public void onEnd(SpeechError arg0) { // TODO Auto-generated method stub if (arg0 != null) { mToast.setText("登录失败"); mToast.show(); } else { mToast.setText("登录成功"); mToast.show(); } } }; // 识别结果回调 private RecognizerDialogListener mRecoListener = new RecognizerDialogListener() { @Override public void onEnd(SpeechError error) { //MainActivity.this.voice.setImageResource(R.drawable.voice); } @Override public void onResults(ArrayList<RecognizerResult> results, boolean isLast) { // TODO Auto-generated method stub String text = ""; text = results.get(0).text; mToast.setText("识别结果为:" + text); mToast.show(); result.setText("识别结果为:" + text); } }; }

4、需要的权限:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

5、结果截图:

Android基于讯飞语音SDK实现语音识别3

Android基于讯飞语音SDK实现语音识别4

以上就是本文的全部内容了,希望小伙伴们能够喜欢。

【Android基于讯飞语音SDK实现语音识别】相关文章:

Mac 下搭建Android开发环境

Android安卓中循环录像并检测内存卡容量

Android调用google地图生成路线图实现代码

如何与Android实体设备的连接

Android自定义Style实现方法

android手机音乐播放器实现歌词同步

Android开发笔记之:Splash的实现详解

Android获取通话时间实例分析

Android判断SDK版本及判断是否联网

android动态壁纸调用的简单实例

精品推荐
分类导航