Android编程之语音识别实现方法

所属分类: 软件编程 / Android 阅读数: 29
收藏 0 赞 0 分享

本文实例讲述了Android编程之语音识别实现方法。分享给大家供大家参考,具体如下:

语音识别技术在手机上应用得相当广泛,人类日常最频繁的沟通方式是语音,而在手机应用中,大部分是通过硬件手动输入,目前这依然是主要与手机互动的方式。但是随着手机软硬件功能的不断提升,可以预见在不久的将来,语音交流将是人机交互的主要方式。IPhone手机内置的Siri语音助手就是一个很好的例子。而鲜为人知的是其使用的语音识别技术来自于Google。而想而知,作为Google力推的Android自然被植入了最核心的语音识别技术,其还整合了Google的云端技术以更好的实现人机语音互动。

Android中主要通过RecognizerIntent来实现语音识别,它主要包括一些常量来表示语音的模式等,如下表所示:


常量

描述

ACTION_RECOGNIZE_SPEECH

开启语音活动

ACTION_WEB_SEARCH

开启网络语音模式,结果将以网页搜索显示

EXTRA_LANGUAGE

设置语言库

EXTRA_LANGUAGE_MODEL

语音识别模式

EXTRA_MAX_RESULTS

返回的最大结果

EXTRA_PROMPT

提示用户可以开始语音

EXTRA _RESULTS

将字符串返回到一个ArrayList中

LANGUAGE_MODEL-FREE_FORM

在一种语言模式上自由语言

LANGUAGE_MODEL-WEB_SEARCH

使用语言模型在Web上搜索

RESULT_AUDIO_ERROR

返回结果时,音频遇到错误

RESULT_CLIENT_ERROR

返回结果时,客户端遇到错误

RESULT_NETWORK_ERROR

返回结果时,网络遇到错误

RESULT_NO_MATCH

没有检测到语音的错误

RESULT_SERVER_ERROR

返回结果时,服务器遇到错误


这里我们只需要通过Intent来传递一个动作以及一些属性,然后通过startActivityForResult来开始语音,代码如下:

Intent intent= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");

当然,如果找不到设置,就会抛出ActivityNotFoundException,所以我们需要捕捉这个异常。在以下的例子中,我们实现了一个简单的语音识别程序,当我们点击“点击使用语音识别”按钮之后,开始语音,然后在onActivityResult方法中取得结果并显示出来,其中如果当前手机没有连接到互联网则会显示连接问题,运行效果如以下所示:

点击按钮后:

如果没联网会出现连接错误:

 

向话筒说完“电脑”一词后:

具体实现的代码如下:

public class RecognizerIntent_TestActivity extends Activity {
  private static final int VOICE_RECOGNITION_REQUEST_CODE = 1;
  private ListView mList;
  Button mButton;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mButton = (Button) findViewById(R.id.button1);
    mButton.setOnClickListener(new myRecognizerIntentListener());
    mList = (ListView) findViewById(R.id.listView1);
  }
  public class myRecognizerIntentListener implements OnClickListener {
    public void onClick(View v) {
      try {
        // 用Intent来传递语音识别的模式,并且开启语音模式
        Intent intent = new Intent(
            RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        // 语言模式和自由形式的语音识别
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        // 提示语言开始
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "请开始语音");
        // 开始语音识别
        startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
      } catch (ActivityNotFoundException e) {
        Toast.makeText(RecognizerIntent_TestActivity.this, "找不到语音设备",
            Toast.LENGTH_LONG).show();
      }
    }
  }
  // 语音结束时的回调函数
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE
        && resultCode == RESULT_OK) {
      // 取得语音的字符
      ArrayList<String> results = data
          .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
      // 设置视图的更新
      mList.setAdapter(new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, results));
      String resultsString = "";
      for (int i = 0; i < results.size(); i++) {
        resultsString += results.get(i);
      }
      Toast.makeText(this, resultsString, Toast.LENGTH_LONG).show();
    }
    super.onActivityResult(requestCode, resultCode, data);
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android资源操作技巧汇总》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多