这个例子实现的功能和上衣个基本类似,只不过识别引擎换成了Google自家的识别器了。
讯飞的语音云主要还是在普通话方面的识别,识别英语的话就会比较坑(比如你想语音输入banana基本是不可能),Google可以识别多种语言,英语当然是毫无压力啦。
效果:
例子中需要注意的一个问题是:startActivity(Intent)和startActivityForResult(Intent,int)的区别使用。
startActivity(Intent)
方法可以用来启动一个新的 activity ,这个 activity 将被放置在 activity 栈的栈顶。这个方法只有一个参数 Intent ,这个参数描述了将被执行的 activity 。
有时候你希望在一个 activity 结束时得到它返回的结果。举个例子,你可能启动一个 activity 来让用户从通讯簿中选择一个人;当它结束的时候将会返回这个所选择的人。为了得到这个返回的信息,你可以使用 startSubActivity(Intent, int) 这个方法来启动新的 activity ,第二个整形参数将会作为这次调用的识别标记。这个 activity 返回的结果你可以通过 onActivityResult(int, int, String, Bundle) 方法来获得,此方法的第一个参数就是之前调用所使用的识别标记。
当 activity 退出的时候,它可以调用 setResult(int) 来将数据返回给他的父进程。这个方法必须提供一个结果码,这个结果码可以使标准结果 RESULT_CANCELED, RESULT_OK ,也可以是其他任何从 RESULT_FIRST_USER 开始的自定义值。此外,它还可以返回一段字符串(经常是一段数据的 URL 地址),一个包含它所有希望值的 Bundle 。这些信息都会在父 activity 的回调函数 Activity.onActivityResult() 中出现,并连同最初提供的识别标记一起(此处有些拗口,意思其实就是子activity
返回的内容、返回码、识别标记都将作为参数,按照不同的返回情况来调用父activity 的Activity.onActivityResult() 方法,以实现出现各种返回时父activity 做出响应的处理)。
代码清单:
package com.example.googlevoice;
import java.util.List;
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 android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener{
private Button btn ;
private TextView myTextView;
private static final int REQUEST_CODE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) this.findViewById(R.id.btn);
myTextView = (TextView) this.findViewById(R.id.ResultText);
/**
* 下面是判断当前手机是否支持语音识别功能
*/
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if(list.size()!=0)
{
btn.setOnClickListener(this);
}else{
btn.setEnabled(false);
btn.setText("当前语音识别设备不可用...");
}
}
public void onClick(View v) {
if(v.getId()==R.id.btn)
{
/**
* 启动手机内置的语言识别功能
*/
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,"en-US"); //设置为当前手机的语言类型
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "请说话,我识别");//出现语言识别界面上面需要显示的提示
startActivityForResult(intent,REQUEST_CODE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/**
* 回调获取从谷歌得到的数据
*/
if(requestCode==REQUEST_CODE&&resultCode==RESULT_OK)
{
List<String> list = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
//只选取第一个结果显示
myTextView.setText(list.get(0));
}
super.onActivityResult(requestCode, resultCode, data);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/ResultText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ResultText" />
<LinearLayout
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="GoogleVoice" />
</LinearLayout>
</RelativeLayout>
参考资料:http://blog.csdn.net/vipa1888/article/details/7023928
分享到:
相关推荐
基于HTK 的语音识别例子,包含了指导文件,操作说明等等
本例子是一个微信语音的例子源码,微信语音开放平台致力于为开发者提供免费的语音技术,目前已经开放的语音技术包括在线语音识别、在线语音合成等。语音识别功能已经在微信上使用并获好评无数,提高了聊天输入效率,...
该程序是非特定人语音识别程序,原来在SPCE500A下运行,能识别并应答16个命令,存储空间为128K字节。
C# 百度官方例子,可以学习百度提供的基本的关于语音识别的方法,了解基本的语音识别的思路,为语音识别做好基础
科大讯飞语音识别demo,支持多种语言的识别,吧声音转化为文字
三个android 语音识别例子,开发google语音搜索
语音识别技术是在Android SDK1.5中才加入的(RecognizerIntent),这里我们简单的分析一下自带的api例子,其实它就是通过一个Intent的Action动作来完成的。主要有以下两种模式: ACTION_RECOGNIZE_SPEECH:一般语音...
本例子是一个调用讯飞语音识别SDK的例子源码是一个最纯净的Demo比较容易看懂。实现的是点击按钮开始语音监听,手机需要联网,2/3G的均可,识别后会以Toast的方式提示出来,识别率还是比较高的。之前自己是用别人的...
freeswitch对接google的语音识别和语音合成例子
unSP IDE的项目文件,实现非特定语音识别机器人的功能。机器人名为Snoopy。加上喇叭,下载到61开发板就可用,很好玩。 // 语音命令 回答 // ------------------------------------------------ // Snoopy ...
微信智能语音识别源码是一个微信语音的例子源码,微信语音开放平台致力于为开发者提供免费的语音技术,目前已经开放的语音技术包括在线语音识别、在线语音合成等。语音识别功能已经在微信上使用并获好评无数,提高了...
基于 科大讯飞基础包 的语音识别小案例 通用性好
简单语音识别源码是一个调用讯飞语音识别SDK的例子源码是一个最纯净的Demo比较容易看懂。实现的是点击按钮开始语音监听,手机需要联网,2/3G的均可,识别后会以Toast的方式提示出来,识别率还是比较高的。之前自己是...
语音识别系统"等13个经典例子)VC++视频开发实例集锦(包括“远程视频监控”"语音识别系统"等13个经典例子)VC++视频开发实例集锦(包括“远程视频监控”"语音识别系统"等13个经典例子)VC++...
科大讯飞语音识别实例1
一个语音识别的例子,欢迎试用!快点不要耽误了哦,机不可失。
科大讯飞语音识别java例子 输入音频文件输出音频文件中的内容可编辑的文字内容
基于matlab与动态时间规整(DTW)的孤立字语音识别实验
这是一个关于61板的非特定人声的语音识别的例子
安卓 Andorid语音识别&文本朗读例子打包