基于android的语音识别
1.注册账户,添加应用

2.针对android平台的选择应用,下载SDK

3.将SDK的libs下文件拷贝到工程的libs目录下

4.添加用户权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CAMERA"/>
5.初始化语音配置对象
//初始化语音配置对象,必须,这样才能使用MSC语音服务
SpeechUtility.createUtility(this, SpeechConstant.APPID+"=59454d78");
6.拷贝assets目录下资源文件到android工程的assets目录

7.识别代码
//创建语音识别对话框
RecognizerDialog rd = new RecognizerDialog(this,null);
//设置参数accent,language等参数
rd.setParameter(SpeechConstant.LANGUAGE,"zh_cn");//中文
rd.setParameter(SpeechConstant.ACCENT,"mandarin");//普通话
//设置回调接口
rd.setListener(new RecognizerDialogListener() {
@Override
public void onResult(RecognizerResult recognizerResult, boolean b) {
//获取返回结果
String result = recognizerResult.getResultString();
Log.e("result",result);
Log.e("b",b+"");
} @Override
public void onError(SpeechError speechError) { }
});
//显示对话框
rd.show();
8.由于返回的是json字符串所以还得解析出来才能使用
result:{"sn":2,"ls":true,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0.00,"w":"?"}]}]}
9.解析Json字符串
/**
* 解析json串
* @param result
*/
protected String parseJsonData(String json) {
// 使用Gson来解析Json串
Gson gson = new Gson();
VoiceBean bean = gson.fromJson(json, VoiceBean.class);
ArrayList<WS> ws = bean.ws;
StringBuffer sb = new StringBuffer();
for (WS ws2 : ws) {
String info = ws2.cw.get(0).w;
sb.append(info);
}
return sb.toString();
}
10.完整代码
package com.example.chat; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import com.example.chat.VoiceBean.WS;
import com.google.gson.Gson;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView; public class MainActivity extends Activity { StringBuffer strbuf;
ListView mlv;
private List<TalkBean> lists; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化语音配置对象,必须,这样才能使用MSC语音服务
SpeechUtility.createUtility(this, SpeechConstant.APPID+"=59454d78");
mlv = (ListView) findViewById(R.id.lv);
lists = new ArrayList<TalkBean>(); } public void click(View view){
//创建语音识别对话框
RecognizerDialog rd = new RecognizerDialog(this,null);
//设置参数accent,language等参数
rd.setParameter(SpeechConstant.LANGUAGE,"zh_cn");//中文
rd.setParameter(SpeechConstant.ACCENT,"mandarin");//普通话
strbuf = new StringBuffer();
//设置回调接口
rd.setListener(new RecognizerDialogListener() { @Override
public void onResult(RecognizerResult arg0, boolean arg1) {
// TODO Auto-generated method stub
String result = arg0.getResultString();
String data = parseJsonData(result);
Log.e("data",data); strbuf.append(data);
if(arg1){//回话结束
String voice = strbuf.toString();
Log.e("result",voice);
} Log.e("b",arg1+"");
} @Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub }
});
//显示对话框
rd.show();
}
/**
* 解析json串
* @param result
*/
protected String parseJsonData(String json) {
// 使用Gson来解析Json串
Gson gson = new Gson();
VoiceBean bean = gson.fromJson(json, VoiceBean.class);
ArrayList<WS> ws = bean.ws;
StringBuffer sb = new StringBuffer();
for (WS ws2 : ws) {
String info = ws2.cw.get(0).w;
sb.append(info);
}
return sb.toString();
}
11.运行结果展示

基于android的语音识别的更多相关文章
- 基于android平台的斗地主AI
本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...
- 基于Android Studio搭建hello world工程
基于Android Studio搭建hello world工程 版本:ANDROID STUDIO V0.4.6 This download includes: · Android St ...
- 基于Android 平台简易即时通讯的研究与设计[转]
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
- 基于Android 4.4 开发的多窗体系统 开放源代码
Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...
- 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...
- 基于Android Volley的网络请求工具
基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...
- 【源代码】基于Android和蓝牙的单片机温度採集系统
如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 STC89C52单片机通过HC-06蓝牙模块与Android手机通信实例- 基于And ...
- 基于 Android 的 3D 视频示例代码
笔者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...
- Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)
一.引言 本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...
随机推荐
- bzoj4819 [Sdoi2017]新生舞会
Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间的 ...
- final的用法
先来看一段代码 class Car extends Vehicle { public static void main (String[] args) { new C ...
- Java IO最详解
初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见 ...
- 前端框架对比之vue与regular(一)
每次一写到Regular总是忍不住先介绍一下,Regualr是网易杭州研究所的一位叫郑海波的大神写的一款前端框架,目前 这款框架推广的不深,加上其和angular过于相似的框架名,导致接受力并不大,其 ...
- 1019 Least Common Multiple
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- maven学习2,安装插件
eclipse 安装插件的方式最常见的有两种: 1. 一种是在线安装,这貌似是用的最多的,就是:Help --> Install New Software,然后输入 HTTP 地址来安装,但 ...
- flask-login ----系统权限设计部分小结
tips: 事实证明.开发是一项苦力活.但是代码只有自己写的才是令人感到放心的.不过仅仅是从开发角度来说.从维护和安全角度来说,当然还是引入模块比较爽 但是引入的模块总会有一些问题.碰到的最大问题就是 ...
- 【JAVAWEB学习笔记】09_MySQL多表&JDBC(包含MySQL数据库思维导图)
今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑c ...
- phpmyadmin上传sql文件大小限制问题解决方案
近几天在学生做项目时,需要使用phpmyadmin把本地数据库导入到线上数据库,有许多学生遇到了因为文件过大而上传失败的问题.今天给大家整理一下使用phpmyadmin遇到因为文件过大而导致上传失败问 ...
- 使用Android studio作按键切换界面
一.新建工程 二.新建一个按键 android:layout_width="wrap_content" android:layout_hei ...