- 浏览: 1508229 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
http://www.apkbus.com/forum.php?mod=viewthread&tid=3473
- android语音识别方法一:使用intent调用语音识别程序
1.
说明
以下例程功能为:在应用程序中使用intent来调出语言识别界面,录音并识别后将识别的字串返回给应用程序。注意:使用前需要安装语音识别程序如语音搜索。
2.
本例参考自android例程:
development/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
3.
可从此处下载可独立运行的代码:
4.
核心代码及说明
package com.android.mystt1; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.speech.RecognizerIntent; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MyStt1Activity extends Activity implements OnClickListener { private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; private ListView mList; // 显示识别后字串的list控件 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button speakButton = (Button) findViewById(R.id.btn_speak); // 识别按钮 mList = (ListView) findViewById(R.id.list); PackageManager pm = getPackageManager(); List activities = pm.queryIntentActivities( new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); //本地识别程序 // new Intent(RecognizerIntent.ACTION_WEB_SEARCH), 0); // 网络识别程序 if (activities.size() != 0) { speakButton.setOnClickListener(this); } else { // 若检测不到语音识别程序在本机安装,测将扭铵置灰 speakButton.setEnabled(false); speakButton.setText("Recognizer not present"); } } public void onClick(View v) { if (v.getId() == R.id.btn_speak) { startMysttActivityActivity(); } } private void startMysttActivityActivity() { // 开始识别 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); // 调出识别界面 } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Fill the list view with the strings the recognizer thought it could have heard ArrayList matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); mList.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, matches)); } // 语音识别后的回调,将识别的字串在list中显示 super.onActivityResult(requestCode, resultCode, data); } }
- android语音识别方法二:应用程序自己调用语音识别库
1.
说明
以下例程功能为:应用程序自身调用语言识别函数,程序以循环方式等待录音并识别后的字串。
2.
本例参考自android代码:
frameworks/base/core/java/android/speech/srec/Recognizer.java中注释部分
3.
可从此处下载可独立运行的代码:代码在一楼
4.
核心代码及说明
package com.android.mystt2; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import android.view.View; import android.view.View.OnClickListener; import android.speech.srec.Recognizer; import android.speech.srec.MicrophoneInputStream; import java.io.InputStream; import java.io.IOException; import android.util.Log; public class MyStt2Activity extends Activity implements OnClickListener { private TextView mText; private static final String TAG = "MyStt3Activity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button speakButton = (Button) findViewById(R.id.btn_speak); // 识别扭按 mText = (TextView) findViewById(R.id.text); // 显示识别后的字串 speakButton.setOnClickListener(this); } public void onClick(View v) { if (v.getId() == R.id.btn_speak) { test(); } } void test() { 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(); grammar.compile(); 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); Log.d(TAG, "result " + result); 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); mText.setText("error " + e); } } }
- 语音识别方法三:使用Service调用语音识别程序
1.
说明
以下例程功能为:在应用程序中使用通于访问service调用语言识别功能,录音并识别后将识别的字串通过Listener返回给应用程序。注意:使用前需要安装语音识别服务,如编译安装源码中的development/samples/VoiceRecogitionService。
2.
本例参考自android源码
a)
后台服务
参见development/samples/VoiceRecognitionService/*
此处实现了一个模拟的后台服务,它并未实现真的语音识别,而只是一个框架以示例,编译并安装它,即可在设置的语音输入与输出中看到它,它包含了一个设置界面,当连接这个Service时,如果设置了Letters,则直接返回abc,如果设置了Numbers,则直接返回123
你可以自己实现,用于连接android源码自带的识别引擎srec.
b)
前台程序
参见frameworks/base/core/java/android/speech/Recognition*
它与后台Service交互,此段代码实现在应用程序界面中
3.
可从此处下载可独立运行的代码(前台程序):源代码在一楼
4.
核心代码及说明
package com.android.mystt3; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.speech.RecognitionListener; import android.speech.RecognizerIntent; import android.speech.SpeechRecognizer; import android.widget.Button; import android.widget.TextView; import java.util.ArrayList; import android.util.Log; public class MyStt3Activity extends Activity implements OnClickListener { private TextView mText; private SpeechRecognizer sr; private static final String TAG = "MyStt3Activity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button speakButton = (Button) findViewById(R.id.btn_speak); // 识别按钮 mText = (TextView) findViewById(R.id.text); // 显示识别字串 speakButton.setOnClickListener(this); sr = SpeechRecognizer.createSpeechRecognizer(this); // 初始化识别工具,得到句柄 sr.setRecognitionListener(new listener()); // 注册回调类及函数 } class listener implements RecognitionListener // 回调类的实现 { public void onReadyForSpeech(Bundle params) { Log.d(TAG, "onReadyForSpeech"); } public void onBeginningOfSpeech() { Log.d(TAG, "onBeginningOfSpeech"); } public void onRmsChanged(float rmsdB) { Log.d(TAG, "onRmsChanged"); } public void onBufferReceived(byte[] buffer) { Log.d(TAG, "onBufferReceived"); } public void onEndOfSpeech() { Log.d(TAG, "onEndofSpeech"); } public void onError(int error) { Log.d(TAG, "error " + error); mText.setText("error " + 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++) { Log.d(TAG, "result " + data.get(i)); str += data.get(i); } mText.setText(str); // 显示被识别的数据 } public void onPartialResults(Bundle partialResults) { Log.d(TAG, "onPartialResults"); } public void onEvent(int eventType, Bundle params) { Log.d(TAG, "onEvent " + eventType); } } public void onClick(View v) { if (v.getId() == R.id.btn_speak) { sr.startListening(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)); } } }
评论
邮箱:704480904@qq.com
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1503http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7605http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2643AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1193http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1702使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1265Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 990A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1312SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1206kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1037http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1051http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1686http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1166http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2359Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6064JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1229最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1303本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3191http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20887http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2013MyCar Recorder DailyRoads
相关推荐
本示例项目“android语音识别demo”采用的是科大讯飞(IFlytek)的API,这是一个在中国广泛使用的语音识别服务提供商。下面将详细介绍这个demo的实现原理和关键知识点。 1. **科大讯飞API**:科大讯飞提供了多种...
本资源“Android语音识别源码”提供了一个深入理解并实现这一功能的绝佳机会。接下来,我们将详细探讨Android语音识别的核心概念、工作流程以及源码解析。 一、Android语音识别基础 1. **API介绍**:Android系统...
本文将详细介绍这两种方式,并结合Google Voice和PocketSphinx等工具和技术,深入探讨Android语音识别的实现方法。 二、语音识别技术基础 1.语音识别技术含义 语音识别技术是一种模式识别的过程,主要包含两个...
我之前用google的语音识别一直不行,后来才发现我的google语音服务控件给我删了,安上过后就可以了。经兄弟介绍说,讯飞的语音识别相比google更稳定,所以也下载了一个。这里的工程都是网上下载的,为了以后方便找,...
本示例“android语音识别demo”是基于百度语音识别SDK开发的,旨在帮助开发者快速理解和集成这一功能。 首先,我们要理解的是百度语音识别SDK。这是一个由百度提供的服务,它提供了丰富的语音识别能力,包括离线...
总的来说,这个"android 语音识别转文字.zip"压缩包是一个集成了多种语音处理功能的DEMO,包括语音识别、文字转语音、录音、播放和文件管理等,对于学习和开发Android语音应用的开发者来说,是一个非常有价值的参考...
Android语音识别技术主要涉及两个核心部分:使用科大讯飞(IFlytek)SDK和Google的语音识别服务。以下是这两个部分的详细说明。 1. **科大讯飞语音识别** 科大讯飞是中国领先的语音识别技术提供商,其SDK(Msc....
### Android轻松实现语音识别的完整代码解析 #### 一、简介 在移动应用开发领域,尤其是Android平台上,语音识别功能的应用越来越广泛。它不仅能够提升用户体验,还为开发者提供了丰富的可能性来创造更具交互性的...
本文将深入探讨如何利用Android API实现这一功能,并基于提供的"android语音识别+语音搜索源码"进行分析。 首先,Android系统提供了`SpeechRecognizer`类,它是进行语音识别的核心组件。我们可以通过创建`...
在本篇Unity3D教程中,我们将探讨如何在Unity3D项目中调用Android设备的内置语音识别功能。首先,我们需要了解的是,Android系统已经集成了Google的语音识别服务,因此开发者无需额外安装第三方库即可实现语音识别。...
在这个名为“安卓语音识别文本朗读相关-三个android语音识别例程mystt.rar”的压缩包中,包含了一些用于理解和实践这两种技术的源代码示例。虽然无法一一验证每个示例的可用性,但它们可以作为开发者学习和参考的...
本资源提供了Android语音识别的源代码,是开发者学习和理解这一技术的宝贵资料。下面将详细介绍Android语音识别的核心知识点及其源码实现。 1. **语音识别API** Android系统内置了Google语音识别服务,可以通过`...
在Android平台上,开发语音相关的功能是一项常见的任务,其中包括语音播报、后台播报以及语音识别。本文将详细介绍如何使用讯飞语音SDK来实现这些功能,并提供必要的技术细节和实践步骤。 一、语音播报 讯飞语音SDK...
android语音识别和TTS处理简单源码,包括如何调用语音识别和文本朗读,如果无语音识别设备,可以安装语音搜索apk,如果无tts设备可安装tts的apk,两个apk放置在assets目录下,仅供学习参考
一、Android语音识别 Android系统内置了Google的语音识别服务,但开发者也可以选择第三方解决方案,比如科大讯飞的SDK,以获取更专业的语音识别功能。Android中的语音识别主要涉及以下关键技术: 1. 语音唤醒:在...