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

Android编程之语音识别实现方法,第1张

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

本文实例讲述了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编程之语音识别实现方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存