发布时间:2024年11月06日 13:33:50分享人:伪文艺来源:互联网21
在网上找了一篇关于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 class RecognizerIntentActivity extends Activity { |
03 |
private Button btnReconizer; |
04 |
private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234 ; |
06 |
protected void 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( new OnClickListener() { |
15 |
public void onClick(View v) { |
16 |
//TODO Auto-generated method stub |
18 |
//通过Intent传递语音识别的模式,开启语音 |
19 |
Intentintent= new Intent(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 |
protected void onActivityResult( int requestCode, 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 ( int i= 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.413yy.cn/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函数的用法=======================================================================================================================================================================================================