Android语音播报、后台播报、语音识别

本文介绍使用讯飞语音实现语音播报、语音识别功能。

讯飞开放平台:http://www.xfyun.cn/index.php/default/index

程序效果图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2FvX2NodW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="323" height="427" alt="">

简单的XML布局

<?xml version="1.0" encoding="utf-8"?

>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <EditText
android:id="@+id/et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="true" /> <Button
android:id="@+id/bt_recognize"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="识别" /> <Button
android:id="@+id/bt_speek"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Speek" /> <Button
android:id="@+id/bt_speek_bg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="后台Speek" /> <TextView
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="语音控制开关" /> <ToggleButton
android:id="@+id/tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>

识别

case R.id.bt_recognize:
// 这是语言识别部分。最重要的实例化一个
// RecognizerDialog并把你在官方站点申请的appid填入进去。非法id不能进行识别
RecognizerDialog isrDialog = new RecognizerDialog(Voice1Activity.this, APPID); /*
* 设置引擎眼下支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索
* ”video”:视频音乐搜索 ”asr”:命令词识别
*/
isrDialog.setEngine("sms", null, null);
isrDialog.setListener(recoListener);
isrDialog.show();
break;
// 语言识别监听器。有两个方法
RecognizerDialogListener recoListener = new RecognizerDialogListener() { @Override
public void onResults(ArrayList<RecognizerResult> results,
boolean isLast) {
// 新添加了一个ToggleButton tb,首先检查tb是否被按下,假设被按下才进行语言控制,没被按下就进行文字识别
if (tb.isChecked()) {
// doVoice方法就是进行识别
doVoice(results);
} else {
// server识别完毕后会返回集合,我们这里就仅仅得到最匹配的那一项
text += results.get(0).text;
System.out.println(text);
} } // 首先迭代结果,然后获取每一个结果。并进行对照。假设包括有特定字符串。那么就运行对应Intent跳转。 // 注意 凡是Intent能办到的(发邮件,跳到已安装应用。拨号,发短信,发彩信,浏览网页,播放多媒体)。它就都能办到。
private void doVoice(ArrayList<RecognizerResult> results) {
Intent i = new Intent();
for (RecognizerResult result : results) {
if (result.text.contains("天气")) {
// 天气界面的跳转
i.setClass(Voice1Activity.this, Weather.class);
startActivity(i);
} else if (result.text.contains("新闻")) {
// 新闻界面的跳转
i.setClass(Voice1Activity.this, News.class);
startActivity(i);
} else if (result.text.contains("短信")) {
// 短信界面的跳转
i.setAction(Intent.ACTION_VIEW);
i.setType("vnd.android-dir/mms-sms");
startActivity(i);
} else {
// 假设没有对应指令就用Toast提示用户
Toast.makeText(Voice1Activity.this, "无法识别",Toast.LENGTH_SHORT).show();
}
} } @Override
public void onEnd(SpeechError error) {
if (error == null) {
// 完毕后就把结果显示在EditText上
et.setText(text);
}
}
};

Speek

case R.id.bt_speek:
// 这是语言合成部分 相同须要实例化一个SynthesizerDialog ,并输入appid
SynthesizerDialog syn = new SynthesizerDialog(Voice1Activity.this, APPID);
syn.setListener(new SynthesizerDialogListener() { @Override
public void onEnd(SpeechError arg0) { }
});
// 依据EditText里的内容实现语音合成
syn.setText(et.getText().toString(), null);
syn.show();
break;

后台Speek

 case R.id.bt_speek_bg:
//这是后台朗读,实例化一个SynthesizerPlayer
SynthesizerPlayer player = SynthesizerPlayer.createSynthesizerPlayer(Voice1Activity.this, APPID);
//设置语音朗读者,能够依据须要设置男女朗读。详细请看api文档和官方论坛
player.setVoiceName("vivixiaoyan");//在此设置语音播报的人选比如:vivixiaoyan、vivixiaomei、vivixiaoqi
player.playText(et.getText().toString(), "ent=vivi21,bft=5",null); break;

源代码下载:http://download.csdn.net/download/gao_chun/8775975

转载请注明.

Android语音播报、后台播报、语音识别的更多相关文章

  1. 实时Android语音对讲系统架构

    本文属于Android局域网内的语音对讲项目系列,<通过UDP广播实现Android局域网Peer Discovering>实现了局域网内的广播及多播通信,本文将重点说明系统架构,音频信号 ...

  2. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  3. 改进Android语音对讲系统的方法

    本文属于Android局域网内的语音对讲项目系列,<实时Android语音对讲系统架构>阐述了局域网内Android语音对讲功能的框架,本文在此基础上进行了优化,包括音频的录制.播放,通信 ...

  4. 微信app支付(android端+java后台)

    本文讲解使用微信支付接口完成在android开发的原生态app中完成微信支付功能, 文章具体讲解了前端android如何集成微信支付功能以及后台如何组装前端需要支付信息, 话不多话, 具体看文章内容吧 ...

  5. android + eclipse + 后台静默安装(一看就会)

      首先要说到三个类. import android.content.pm.IPackageInstallObserver; import android.content.pm.IPackageIns ...

  6. Android 静默安装/后台安装& Root permission

    Android 静默安装/后台安装& Root permission 静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需 ...

  7. Android语音搜索

    前言 在现有的软件的搜索框中基本上都会加上语音搜索的图标,以方便用户输入.我们xxxx的搜索框其实也可以借鉴这样的输入方式,提高用户体验.语音识别有3种方式实现①使用intent调用语音识别程序;②通 ...

  8. Android使用service后台更新计划任务

    Service是Android的四大组件之一,这里就不再过多的去描述,下面主要实现启动应用时候利用service后台执行计划任务,退出应用后,关闭service,只存在整个应用的周期中. 首先使用se ...

  9. iOS 和 Android 中的后台运行问题

    后台机制的不同,算是iOS 和 Android的一大区别了,最近发布的iOS7又对后台处理做了一定的更改,找时间总结一下编码上的区别,先做个记录. 先看看iOS的把,首先需要仔细阅读一下Apple的官 ...

随机推荐

  1. 公布项目到NPM

    修己安人,内圣外王 近期,在开发Node项目过程中遇到了须要类jQuery深拷贝对象的问题.去Github找了半天,并没有符合的,于是,自己决定写一个(mixin.js),然后推送到NPM(查看Npm ...

  2. js保留两位小数的解决的方法

    var a = 123.456; a = a..toFixed(2); alert(a);//结果:123.46

  3. 移除apsx视图引擎,及View目录下的web.config的作用

    <> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; usin ...

  4. Methods Collection of Enumerating Com Port in Windows, by C

    According to this stack overflow thread, PJ Naughter has implemented 9 methods to emunerate com port ...

  5. oracle如何创建数据库

    第一步: 从Windows桌面执行“开始”→“Database Configuration Assistant”命令,打开Database Configuration Assistant对话框的欢迎界 ...

  6. win10中让Visual Studio默认使用Administrator权限运行

    https://stackoverflow.com/questions/9654833/how-to-run-visual-studio-as-administrator-by-default Win ...

  7. 英语发音规则---D字母

    英语发音规则---D字母 一.总结 一句话总结: 1.D发[d]音? doctor ['dɒktə] n. 医生:博士 bread [bred] n. 面包:生计 hand [hænd] n. 手,手 ...

  8. oracle 11gR2 如何修改vip

    因为业务需要,需要将p570a主机和p570b主机上的vip做修改 修改前ip 192.168.128.12   p570a-vip 192.168.128.13   p570b-vip 修改后ip ...

  9. Noip蒟蒻专用模板

    目录 模板 数论 线性筛素数 线性筛欧拉 裴蜀定理 卢卡斯定理 矩阵快速幂 逆元 高斯消元 图论 割点 最小生成树 倍增 SPFA 负环 堆优化迪杰斯特拉 匈牙利 数据结构 树状数组 ST表 线段树 ...

  10. iis 部署

    配置错误1: 由于权限不足而无法读取配置文件 建立一个新用户,分配所有权限 http://blog.csdn.net/jaychouliyu/article/details/7237143 配置错误2 ...