android 语音识别

Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!

RecognizerIntent的一些常量:

我们只需要通过Intent来传递一个动作以及一些属性,然后通过startActivityForResult来开始语音,代码如下:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"开始语音,请讲话。。。。"); startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

先上图,无图不编程

下面我们进入android语音识别编程中

1、创建简单的布局activity_main.xml

<span style="color:#000000;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/edittext"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:hint="输入搜索关键字" />

    <Button
        android:id="@+id/btn_speech"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="语音识别"
        android:layout_weight="1"/>

</LinearLayout></span>

2、创建活动 MainActivity.java

package com.example.speechdetectortest;

import java.util.ArrayList;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

	private Button    mbtnSpeech;
	private EditText  meditTex;
	private int VOICE_RECOGNITION_REQUEST_CODE = 10000;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mbtnSpeech = (Button)findViewById(R.id.btn_speech);
		meditTex   = (EditText)findViewById(R.id.edittext);

		mbtnSpeech.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.btn_speech:
			try {
				////通过Intent传递语音识别的模式,开启语音
				Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
				//语言模式和自由形式的语音识别
				intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
				  //提示语音开始
				intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音,请讲话。。。。。");
			    //开始语音识别
				startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
			} catch (ActivityNotFoundException e) {
				// TODO: handle exception
				 //找不到语音设备装置
				Toast.makeText(this, " 找不到语音设备装置  ", Toast.LENGTH_LONG).show();
		       // startActivity(new Intent("android.intent.action.VIEW", Uri.parse("market://search?q=pname:com.google.android.voicesearch")));
			}

			break;

		default:
			break;
		}
	}

	//当语音结束时的回调函数onActivityResult
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
			// 取得语音的字符
			ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
			if (results != null) {
				//设置视图更新
				String strText = results.get(0);
				meditTex.setText(strText);
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}
}

3、最后不要忘记加上 <uses-permission android:name="android.permission.INTERNET"/>权限,因为需要连接网络才可以进行语音识别

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-17 17:26:16

android 语音识别的相关文章

百度Android语音识别SDK语义理解与解析方法

百度语义理解开放平台面向互联网开发者提供自然语言文本的解析服务,也就是可以根据文本的意图解析成相应的表示. 为了易于人阅读,同时也方便机器解析和生成,意图表示协议采用 json 语言进行描述,采用 gb18030 编码. json 语言的基本概念: 1.属性名/属性值 即键值对(key-value) 2.数组 在 json 中是"[]"括起来的内容,数据结构为 ["value1","value2",...],取值方式和所有语言中一样,使用索引获取

Android语音识别功能使用总结

Android引入了对语音识别的支持.语音识别主要位于android.speech包中,主要的类包括SpeechRecognizer.RecognitionService.RecognizerIntent.RecognizerResultsIntent.RecognitionListener等类和接口. SpeechRecognizer提供了接入语音识别服务的接口,下面是SpeechRecognizer的常用方法: <span style="font-size:18px;">

实现Android语音识别服务接口 RecognitionService的方法

之前的一篇文章介绍过SpeechRecognizer类,该类可以作为对外的一个接口,并通过Intent传递一个ComponentName获取可支持语音识别的功能的服务,一般的用户手机中如果安装了语音识别的一些软件,就会拥有这样的能力,但是如果开发者希望自己通过某公司的sdk集成自己的语音识别服务,那么就需要实现RecognitionService这个类. 这个类是个抽象类,需要开发者完成其中的几个抽象方法.下面的代码注释中对每个方法进行了说明. <pre name="code"

android语音识别和合成第三方 .

讯飞语音云 http://open.voicecloud.cn/index.php 目前支持6大类型的SDK下载,包括Android. iPhone平台移动应用的接入,Windows.Linux平台PC应用的接入,以及Flash.Java网页应用的接入 开发文档和API下载:http://open.voicecloud.cn/download.php http://blog.csdn.net/goodshot/article/details/9966713 android语音识别和合成第三方 .

&lt;交流贴&gt;android语音识别之科大讯飞语音API的使用

因为最近在研究语音识别,所以借鉴了一下CreAmazing网友的帖子 Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测试,发现很多真机并不能使用哪个sample,在网上查找了一下原因,大部分是因为开发者在刷机的时候,大部分的ROM都阉割掉了语音识别和语音合成TTS(Text To Speech)部分,所以运行sample的时候会有异常抛出. 如果不用google提供的语音识别,要怎么实现语音识别喃?科大讯飞的语音API

Android 通过调用系统,如接口 谷歌语音、百度语音、科大讯飞语音等语音识别方法对话框

现在app在发展过程中会集成一些语音识别功能,不具有其自己的显影剂一般正在开发的语音识别引擎,所以在大多数情况下,它是选择一个成熟的语音识别引擎SDK集成到他们的app在. 平时,这种整合被分成两个,一种是直接调用SDK开发商设计了弹出框.互界面:另一种是开发人员仅仅利用SDK提供的语音识别服务,自己开发一个属于自己的交互设计. 本文介绍最简单直接调起弹出框的方法. 首先.測试机须要安装如谷歌语音.百度语音.讯飞语音等产品的语音软件,这时能够在系统设置界面的语言与输入处找到相关的语音识别功能列表

Android 通过调用系统接口使用如 谷歌语音、百度语音、讯飞语音等语音识别对话框的方法

现在app的开发进程会集成一些语音识别功能,而一般开发者是不具备自己开发一套语音识别引擎的,因此大多数情况是选择一个已经成熟的语音识别引擎SDK集成到自己的app中. 通常情况下,这种集成分两种,一种是直接调用SDK为开发者设计好的弹出框,开发者不需要开发识别交互界面:还有一种是开发者只利用SDK提供的语音识别服务,自己开发一个属于自己的交互设计. 本文介绍最简单直接调起弹出框的方法. 首先,测试机需要安装如谷歌语音.百度语音.讯飞语音等产品的语音软件,这时可以在系统设置界面的语言与输入处找到相

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

百度语音识别开放平台SDK使用方法

百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的使用方法. 在线SDK是以JAR包和动态链接库形式发布和使用,可以从百度开放云平台网站中下载SDK及使用说明文档. http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/voice 完成语音SDK的集成分以下几步,本文将一步步介绍SDK集成方法. 1.注册开放开放平台 点击管理控制台,选择移动应用管理 选择创建应用,填写应用名称     可以看到右