Android 语音识别 研究
来源:互联网 发布:nginx 三级域名泛解析 编辑:程序博客网 时间:2024/05/14 22:40
一、Android 提供了三种方式:
语音识别方法一:使用intent调用语音识别程序
1.
以下例程功能为:在应用程序中使用intent来调出语言识别界面,录音并识别后将识别的字串返回给应用程序。注意:使用前需要安装语音识别程序如语音搜索。
2.
development/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
3.
http://download.csdn.net/source/2591401
4.这种方法需要联网,借助于云端技术可以识别用户的语音输入。
5、核心代码:new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
6、这种方式有个回调函数可以返回音频文件,即可实现边录音边识别。
语音识别方法二:应用程序自己调用语音识别库
1.
以下例程功能为:应用程序自身调用语言识别函数,程序以循环方式等待录音并识别后的字串。
2.
frameworks/base/core/java/android/speech/srec/Recognizer.java中注释部分
3.
http://download.csdn.net/source/2591401
4.语音识别库是嵌入到系统里的,系统提供的识别库有限。
5、这个应该不需要联网吧(未验证)
语音识别方法三:调用语音Service识别
1.
以下例程功能为:在应用程序中使用通于访问service调用语言识别功能,录音并识别后将识别的字串通过Listener返回给应用程序。注意:使用前需要安装语音识别服务,如编译安装源码中的development/samples/VoiceRecogitionService。
2.
a)
参见development/samples/VoiceRecognitionService/*
此处实现了一个模拟的后台服务,它并未实现真的语音识别,而只是一个框架以示例,编译并安装它,即可在设置的语音输入与输出中看到它,它包含了一个设置界面,当连接这个Service时,如果设置了Letters,则直接返回abc,如果设置了Numbers,则直接返回123
你可以自己实现,用于连接android源码自带的识别引擎srec.
b)
参见frameworks/base/core/java/android/speech/Recognition*
它与后台Service交互,此段代码实现在应用程序界面中
3.
http://download.csdn.net/source/2591401
二、第三方语音识别平台:
1、、科大讯飞
sdk:使用有ui的sdk需要导入jar包和动态库,调用jar包里面的接口,进行相关功能实现;
讯飞语音+:需要安装讯飞语音+APK,导入讯飞语音+的开发jar包,用户可以自定义界面,目前讯飞语音+包含本地合成功能。
语音+可以支持离线语音合成。离线语音识别的功能,但是收费。
2、百度语音识别:
有两种方式:
(1)、调用 语音识别控件
(2)、api 方式
上一章描述了如何使用BaiduASRDigitalDialog进行语音识别,此种方式提供了统一的简便易用
的交互,如果此种交互无法满足开发者的需求,开发者可以直接使用语音识别 API 定制自己的语音
交互。
在使用api方式时有个重要的参数
class MyVoiceRecogListener implements VoiceClientStatusChangeListener { @Overridepublic void onClientStatusChange(int status, Object obj) {switch (status) {case VoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:break;case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_START://检测到语音起点break; case VoiceRecognitionClient.CLIENT_STATUS_AUDIO_DATA: //有音频数据输出if (obj != null && obj instanceof byte[]) { //处理数据 }break;case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_END://已经检测到语音终点,等待网络返回break;case VoiceRecognitionClient.CLIENT_STATUS_FINISH://语音识别完成if(currentVoiceType == VOICE_TYPE_SEARCH){mStatusTextView.setText(R.string.finished);//obj 是一个ArrayList<String>,里面有多个候选词}break;case VoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS://多句模式会有部分结果(一个分句)返回if(currentVoiceType == VOICE_TYPE_SEARCH){//obj 是一个ArrayList<String>,里面有多个候选词}else if(currentVoiceType == VOICE_TYPE_INPUT){//obj 是一个List<List<Candidate>>,里面有多个候选词List<List<Candidate>> result = (List<List<Candidate>>) obj;}break;case VoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED://通知用户已取消break;default:break;}}
可以上边拿到音频数据,可以实现边识别边录音
8000HZ 16bit stereo: 每秒钟有8000 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);
8000HZ 16bit mono: 每秒钟有 8000 次采样, 采样数据用 16 位(2字节)记录, 单声道;
三、其他:
Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率
- 最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下
首先本文要说的两个前提1.android平台离线语音识别 2.小范围语音
小范围语音指的是相对固定的命令。本文的例子大概实现了20条语音命令,超出范围的无法识别。因此本文中离线语音的使用范围也有限,对于一些固定的输入可能有用,比如用语音命令代替打开,播放,重启这些简单的固定的命令。
- Android 语音识别 研究
- android 语音识别接口
- android语音识别简介
- Android语音识别
- android语音识别代码
- android 本地语音识别
- android 语音识别
- android 语音识别
- Android-语音识别
- Android 语音识别
- Android 实现语音识别
- android 语音识别
- android语音识别demo
- android 语音识别
- android语音识别技术
- Android实现语音识别
- Android语音识别
- Android语音识别
- Android推送方案研究
- Android Bitmap 全面解析(二)加载多张图片的缓存处理 ...
- python - 文件枚举
- ubuntu 12.04 下nginx安装步骤
- Jquery 动态添加dom后,再为其绑定事件
- Android 语音识别 研究
- Linux内核实现的双向链表(2)
- mybatis源代码分析:mybatis延迟加载机制改进
- hibernate的createQuery语句理解
- SVN 服务器的搭建
- pcm 格式 转换成 wav
- Private Declare Sub
- C经典之10-输出控制符---ShinePans
- ubuntu下卸载软件