语音识别技术研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Google技术的语音识别实现
前言
语音识别技术在手机上应用得相当广泛,我们日常最频繁的沟通方式是语音,在手机应用中,大部分是通过硬件手动输入,目前这依然是主要与手机互动的方式,然而对于像手机这种小巧的移动设备来说,使用键盘甚至是虚拟键盘打字是一件非常不爽的事情。于是,Google 推出了强大的语音搜索业务。2008年11月,Google的语音搜索已经在iPhone平台上线,而Android在1.5 SDK版本中也加强了语音识别功能,并应用到了搜索功能上,这的确是一个非常让人惊喜的更新。
Android语音识别
Android系统集成了Google的语音识别技术,我们只需要实现少量代码便可以是使用语音识别。
android语音识别方法一:使用intent调用语音识别程序
1、通过intent传递语音识别的模式
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
2、语言模式和自由形势的语音识别
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,NGUAG E_MODEL_FREE_FORM);
3、设置语言库
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.CHINA.toString());
4、开始执行intent、语音识别
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "请开始说话");
5、开始
startActivityForResult(intent, 1234);
RecognizerIntent包括的常量:
android语音识别方法二:应用程序自己调用语音识别库
try {
InputStream audio = new MicrophoneInputStream(11025, 11025 * 5); //实现录音
String cdir = Recognizer.getConfigDir(null); // 获取语音识别配置目录
Recognizer recognizer = new Recognizer(cdir + "/baseline11k.par");
Recognizer.Grammar grammar = recognizer.new Grammar(cdir + "/grammars/VoiceDialer.g2g");
grammar.setupRecognizer();
grammar.resetAllSlots();
pile();
recognizer.start(); // 开始识别
while (true) { // 循环等待识别结果
switch (recognizer.advance()) {
case Recognizer.EVENT_INCOMPLETE:
case Recognizer.EVENT_STARTED:
case Recognizer.EVENT_START_OF_VOICING:
case Recognizer.EVENT_END_OF_VOICING:
continue; // 未完成,继续等待识别结果
case Recognizer.EVENT_RECOGNITION_RESULT:
for (int i = 0; i < recognizer.getResultCount(); i++) {
String result = recognizer.getResult(i,Recognizer.KEY_LITERAL);
mText.setText(result);
} // 识别到字串,显示并退出循环
break;
case Recognizer.EVENT_NEED_MORE_AUDIO:
recognizer.putAudio(audio) // 需要更多音频数据;
continue;
default:
break;
}
break;
}
recognizer.stop();
recognizer.destroy();
audio.close(); // 回收资源
} catch (IOException e) {
Log.d(TAG, "error", e);
}
android语音识别方法三:使用Service调用语音识别程序
// 回调类的实现
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) {}
public void onResults(Bundle results) / 返回识别到的数据
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); for (int i = 0; i < data.size(); i++)
{