qrobot开发总结之android语音识别
来源:互联网 发布:数据库概念模型包括 编辑:程序博客网 时间:2024/05/21 11:04
android sdk提供了语音识别的接口,有些人在网上找了例子发现运行不了(PS:网上的例子基本就那一个,都是各种转载的),原因在于手机没有安装google语音搜索软件!去网上下载一个安上就可以了,另外需保持手机网络畅通。
第一种方法:这种方法会显示一个语音对话框,各种提示信息会显示的比较清晰,也是实现起来最简单的。
触发语音识别是调用
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);
VOICE_RECOGNITION_REQUEST_CODE这个是一个静态的全局变量
sdk解释是:requestCode If>= 0, this code will be returned in onActivityResult() when the activity exits.
然后复写onActivityResult()方法:
@Overrideprotected 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);Toast.makeText(MainActivity.this, matches.get(0), Toast.LENGTH_LONG).show();//to do sth}super.onActivityResult(requestCode, resultCode, data);}
第2中方法:这种方法是不显示对话框,完全在后台运行,给用户的体验会更好一些。
初始化:
SpeechRecognizer recognizer = SpeechRecognizer.createSpeechRecognizer(this);recognizer.setRecognitionListener(new listener());
触发语音识别时调用
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra("calling_package", "VoiceIME");intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);recognizer.startListening(intent);
区别于第一种方法,这种方法要实现一个接口RecognitionListener类
class listener implements RecognitionListener {public void onReadyForSpeech(Bundle params) {}public void onBeginningOfSpeech() {}public void onRmsChanged(float rmsdB) {}public void onBufferReceived(byte[] buffer) {}public void onEndOfSpeech() {}public void onError(int error) {String s = "";switch(error){case SpeechRecognizer.ERROR_AUDIO:s = "录音设别错误";break;case SpeechRecognizer.ERROR_CLIENT:s = "其他客户端错误";break;case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:s = "权限不足";break;case SpeechRecognizer.ERROR_NETWORK:s = "网络连接错误";break;case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:s = "网络连接超时";break;case SpeechRecognizer.ERROR_NO_MATCH:s = "没有匹配项";break;case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:s = "识别服务繁忙";break;case SpeechRecognizer.ERROR_SERVER:s = "识别服务器错误";break;case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:s = "无语音输入";break;} s += " 请重试";Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();}public void onResults(Bundle results) {recognizer_result = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0);Toast.makeText(MainActivity.this, recognizer_result, Toast.LENGTH_SHORT).show();}public void onPartialResults(Bundle partialResults) {}public void onEvent(int eventType, Bundle params) {}}
看方法的名字相信大家应该就知道要干什么了,多看文档。起初我觉得用第2中方法给用户的提示信息太少,往往出错了,用户不知道是怎么回事。后面看文档才发现google android sdk已经定义了很多错误的错误号,只要根据不同错误给出恰当的提示就好了!
- qrobot开发总结之android语音识别
- qrobot开发总结之android手势识别
- qrobot开发总结之android完全退出程序
- Android特色开发之语音识别
- android之语音识别
- qrobot开发总结之利用第三方TTS软件开发中文TTS
- 语音识别之自我总结
- Android开发学习之使用百度语音识别SDK实现语音识别(上)
- Android开发学习之使用百度语音识别SDK实现语音识别(下)
- Android开发 语音识别技术之科大讯飞语音识别(一) — 语音听写
- Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成
- qrobot开发总结之 Animation 帧动画监听结束的方法
- 语音识别之Python开发
- android 语音识别接口开发。
- android 语音识别应用开发
- Android 开发技巧之传感器和语音识别
- VC++基于微软语音引擎开发语音识别总结
- VC++基于微软语音引擎开发语音识别总结
- 11月学习总结---确定以Linux为终身的发展方向
- missing storage-class or type specifiers的解决方法
- 移动优先的设计常识:应用如何组织?(一)
- HDU 1017 A Mathematical Curiosity
- 都是单例惹的祸
- qrobot开发总结之android语音识别
- 跨平台开发工具Titanium的兴起之路:HTML5是最大威胁
- Linux输入子系统input_dev概述
- 一个类里边调用另一个类的控件变量的方法
- 通过ApplicationContextAware获取bean
- 创业如何开始
- iPad版Google Search App的Chrome OS烙印
- UpdateData()函数的用法
- 繁简字的转换