发布时间:2018年04月10日 19:28:39分享人:伪文艺来源:互联网20
在网上找了一篇关于Android语音识别的文章,自己慢慢研究。 
Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!
RecognizerIntent的一些常量:
我们只需要通过Intent来传递一个动作以及一些属性,然后通过startActivityForResult来开始语音,代码如下:
Intentintent=newIntent(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);
下面是RecognizerIntentActivity中的代码:01 | public classRecognizerIntentActivity extendsActivity { | 
03 | privateButton btnReconizer; | 
04 | privatestatic final intVOICE_RECOGNITION_REQUEST_CODE =1234; | 
06 | protectedvoid onCreate(Bundle savedInstanceState){ | 
07 | //TODO Auto-generated method stub | 
08 | super.onCreate(savedInstanceState); | 
09 | setContentView(R.layout.reconizer); | 
11 | btnReconizer=(Button)this.findViewById(R.id.btnRecognizer); | 
12 | btnReconizer.setOnClickListener(newOnClickListener() { | 
15 | publicvoid onClick(View v) { | 
16 | //TODO Auto-generated method stub | 
18 | //通过Intent传递语音识别的模式,开启语音 | 
19 | Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); | 
21 | intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); | 
23 | intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"开始语音"); | 
25 | startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE); | 
27 | //TODO: handle exception | 
29 | Toast.makeText(getApplicationContext(),"找不到语音设备",1).show(); | 
37 | protectedvoid onActivityResult(intrequestCode, int resultCode, Intentdata) { | 
38 | //TODO Auto-generated method stub | 
40 | if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK){ | 
42 | ArrayList<String>results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); | 
45 | for(inti=0;i<results.size();i++){ | 
46 | resultString+=results.get(i); | 
48 | Toast.makeText(this,resultString, 1).show(); | 
50 | super.onActivityResult(requestCode,resultCode, data); | 
其主要原理就是将语音发送到google云端,然后云端处理,匹配相应的数据,发送到客户端。
最后不要忘记,在manifest中加入网络访问权限:
<uses-permissionandroid:name="android.permission.INTERNET" />
运行后效果:

另一个代码:
- publicclassActivity01extendsActivity
 - {
 - privatestaticfinalintVOICE_RECOGNITION_REQUEST_CODE=4321;
 - privateListViewmList;
 - publicvoidonCreate(BundlesavedInstanceState)
 - {
 - super.onCreate(savedInstanceState);
 - setContentView(R.layout.main);
 - mList=(ListView)findViewById(R.id.ListView01);
 - Buttonbutton=(Button)findViewById(R.id.Button01);
 - button.setOnClickListener(newView.OnClickListener()
 - {
 - @Override
 - publicvoidonClick(Viewv)
 - {
 - try
 - {
 - //通过Intent传递语音识别的模式,开启语音
 - Intentintent=newIntent
 - (RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 - //语言模式和自由形式的语音识别
 - intent.putExtra(RecognizerIntent.EXTRA_
 - LANGUAGE_MODEL,RecognizerIntent.
 - LANGUAGE_MODEL_FREE_FORM);
 - //提示语音开始
 - intent.putExtra(RecognizerIntent.EXTRA_
 - PROMPT,"开始语音");
 - //开始执行我们的Intent、语音识别
 - startActivityForResult(intent,
 - VOICE_RECOGNITION_REQUEST_CODE);
 - }
 - catch(ActivityNotFoundExceptione)
 - {
 - //找不到语音设备装置
 - Toast.makeText(Activity01.this,
 - "ActivityNotFoundException",
 - Toast.LENGTH_LONG).show();
 - }
 - }
 - });
 - }
 - //当语音结束时的回调函数onActivityResult
 - @Override
 - protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
 - {
 - //判断是否是我们执行的语音识别
 - if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK)
 - {
 - //取得语音的字符
 - ArrayList<String>results=data.getStringArrayListExtra
 - RecognizerIntent.EXTRA_RESULTS);
 - //设置视图更新
 - //mList.setAdapter(newArrayAdapter<String>(this,android.
 - R.layout.simple_list_item_1,results));
 - StringresultsString="";
 - for(inti=0;i<results.size();i++)
 - {
 - resultsString+=results.get(i);
 - }
 - Toast.makeText(this,resultsString,Toast.LENGTH_LONG).show();
 - super.onActivityResult(requestCode,resultCode,data);
 - }
 - }
 - }
 
  
爱华网本文地址 » http://www.aihuau.com/a/25101011/64599.html
更多阅读

windows 7系统自带的语音识别功能使用方法——简介windows 7系统自带有语音识别功能,可是在电脑上却很少见到有人用它。想知道原因吗?自己用用看就知道了......windows 7系统自带的语音识别功能使用方法——工具/原料windows 7系统

adapt这个词的用法搭配如果根据for表目的,from表来源的规律记还是好记的,只是改编这个意思不常见。1.Adapt vt.使适应Adapt+to “适用于”Adapt +for“适用的目的”2. Adapt vt.改编Adapt+as“改编的形式”

【本讲教育信息】一. 教学内容:动词ing形式(动名词)的形式及用法1. doing的形式:doing; being done2. doing做主语,表语和宾语。3. doing与to do在动词后面做宾语的区别二. 知识总结归纳:(一)动词ing形式起名词作用,在语法中也称做动名词.在句

本软件的使用需要有微软中文语音识别引擎支持方可使用,如果您的系统还没有安装微软中文语音识别引擎请到下面地址下载(直接复制用下载工具下载):http://www.ie5.net/speechsoft/speechsdk51.exe(语音识别引擎,先安装)http://www.ie5.net/sp

fseek函数的用法=======================================================================================================================================================================================================