[Android]语音识别中出现的问题和经验

1.在 Android 2.2 Froyo 上开发者应该注意的事——语音识别
对提供语音识别的厂商来说,新版本 SDK 允许第三方应用程序以 Plug-In 的方式,透过 RecognitionService 加入自己的语音识别引擎。
以往在 Android 内有语音识别需求时,都要打开某个 App 才能使用,例如 Google Voice 或是 Voice Go,现在则是可以让用户设定喜欢的语音识别引擎,当有辨识需求时系统会自动呼叫辨识引擎,等于是主动帮你打开 App 使用。
原有旧版本在设定中的文字转语音则被改成语音输入设备与输出装置,里面整合了原有的文字转语音(语音输出装置)以及新加入的语音输入,如果手机安装了第三方的语音识别引擎,就会出现在这里。
这是安装了 Android Sample Code 中的语音识别引擎范例后的样子(语音识别引擎范例在 SDK 目录下的 \samples\android-8\VoiceRecognitionService
对 App 开发者来说,当有语音识别需求时,直接传送 RecognizerIntent 给系统(在网上资料中所采用的传统调用googleyApi方式),系统会呼叫适当的语音识别引擎来辨识,辨识完再把结果透过 RecognitionListener 回传给 上层应用中的data并显示出来。

 

2.自己顶一下,有搜到关于android语音识别的部分资料。
1.     语音识别一般使用三种方式
1)         方式:调用语音识别库的程序做成带界面的程序,供其它程序使用intent调用(在SDK中的APIdemos->APP->Voice Recognition中如果显示Recognizer not present,则说明本机没有启动默认google语音识别(speech to text)库,但不能说明没有向上层应用提供语音识别借口,即所谓的不支持语音识别功能,代码log中会出现ActivityNotFoundException)
2)         方法二:应用程序自己调用语音识别库
3)         方式三:调用语音识别库的程序做成service,供其它应用使用(目前最新的输入法中添加的语音输入功能)
2.     android2.2对语音识别的内部支持
1)         frameworks/base/core/java/android/speech/*

语音的android框架支持(合语音合成和语音识别)
a)          RecognitionListener.java 用于支持对方式三的调用
b)         Recognizer*Intent                 用于支持对方式一的调用
c)          RecognitionService.java         用于支持对方式三的调用
d)         SpeechRecognizer.java 用于支持对方式三的调用
e)          srec目录
语音识别,它用于方式一二三真正功能的实现
i.  MicrophoneInputStream.java 实现录音
ii. Recognizer.java   实现识别的接口
f)          tts目录

语音合成
2)         external/srec/*
语音识别的底层实现

3.语音引擎:
1)srec   android自带的语音识别工具
2)simon  网上说该识别工具可移植到android上
3)pico   android自带的语音合成工具

posted @ 2014-06-04 14:10  It's_Lee  阅读(910)  评论(0编辑  收藏  举报