语音识别技术研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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++)

{

相关文档
最新文档