`
djun100
  • 浏览: 167543 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android 轻松实现语音识别

 
阅读更多

苹果的iphone 有语音识别用的是Google 的技术,做为Google 力推的Android 自然会将其核心技术往Android 系统里面植入,并结合google 的云端技术将其发扬光大。

所以Google Voice Recognition在Android 的实现就变得极其轻松。

语音识别,借助于云端技术可以识别用户的语音输入,包括语音控制等技术,下面我们将利用Google 提供的Api 实现这一功能。

功能点为:通过用户语音将用户输入的语音识别出来,并打印在列表上。

功能界面如下:

用户通过点击speak按钮显示界面:

用户说完话后,将提交到云端搜索:

在云端搜索完成后,返回打印数据:

完整代码如下:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->/*
*Copyright(C)2008TheAndroidOpenSourceProject
*
*LicensedundertheApacheLicense,Version2.0(the"License");
*youmaynotusethisfileexceptincompliancewiththeLicense.
*YoumayobtainacopyoftheLicenseat
*
*
http://www.apache.org/licenses/LICENSE-2.0
*
*Unlessrequiredbyapplicablelaworagreedtoinwriting,software
*distributedundertheLicenseisdistributedonan"ASIS"BASIS,
*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
*SeetheLicenseforthespecificlanguagegoverningpermissionsand
*limitationsundertheLicense.
*/

packagecom.example.android.apis.app;

importcom.example.android.apis.R;

importandroid.app.Activity;
importandroid.content.Intent;
importandroid.content.pm.PackageManager;
importandroid.content.pm.ResolveInfo;
importandroid.os.Bundle;
importandroid.speech.RecognizerIntent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.Button;
importandroid.widget.ListView;

importjava.util.ArrayList;
importjava.util.List;

/**
*SamplecodethatinvokesthespeechrecognitionintentAPI.
*/
publicclassVoiceRecognitionextendsActivityimplementsOnClickListener{

privatestaticfinalintVOICE_RECOGNITION_REQUEST_CODE=1234;

privateListViewmList;

/**
*Calledwiththeactivityisfirstcreated.
*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);

//InflateourUIfromitsXMLlayoutdescription.
setContentView(R.layout.voice_recognition);

//Getdisplayitemsforlaterinteraction
ButtonspeakButton=(Button)findViewById(R.id.btn_speak);

mList
=(ListView)findViewById(R.id.list);

//Checktoseeifarecognitionactivityispresent
PackageManagerpm=getPackageManager();
List
<ResolveInfo>activities=pm.queryIntentActivities(
newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),0);
if(activities.size()!=0){
speakButton.setOnClickListener(
this);
}
else{
speakButton.setEnabled(
false);
speakButton.setText(
"Recognizernotpresent");
}
}

/**
*Handletheclickonthestartrecognitionbutton.
*/
publicvoidonClick(Viewv){
if(v.getId()==R.id.btn_speak){
startVoiceRecognitionActivity();
}
}

/**
*Fireanintenttostartthespeechrecognitionactivity.
*/
privatevoidstartVoiceRecognitionActivity(){
Intentintent
=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Speechrecognitiondemo");
startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);
}

/**
*Handletheresultsfromtherecognitionactivity.
*/
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK){
//Fillthelistviewwiththestringstherecognizerthoughtitcouldhaveheard
ArrayList<String>matches=data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
mList.setAdapter(
newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
matches));
}

super.onActivityResult(requestCode,resultCode,data);
}
}

Tip:本篇 从Api Demo直接复制过来,必须有网络支持。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics