- 浏览: 357502 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (354)
- Flash | as3 (53)
- AIR | Starling (46)
- Android (55)
- Java (10)
- C++ (6)
- PHP (43)
- IOS (9)
- Unity3D (2)
- cocos2d-x (1)
- OpenGL (2)
- WebGL (3)
- Server (4)
- MemCache (13)
- MySql (2)
- NoSql (2)
- PhoneGap (13)
- jQuery | jQuery Mobile (14)
- javaScript | html5 | css3 (14)
- Linux (1)
- Box2D (2)
- SmartFox (1)
- Ruby (0)
- Python (2)
- Golang (11)
- Redis (1)
- 开源项目 (6)
- 游戏策划 (1)
- 云平台 (2)
- 项目管理 (6)
- 听见月光 (32)
最新评论
-
kenkao:
http://www.linuxidc.com/Linux/2 ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
kenkao:
http://blog.csdn.net/yanwushu/a ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
wpy126:
你这种比较根本不公平AppCan 用了多个页面,jqm内容都 ...
AppCan VS PhoneGap - 对比两大移动开发平台 -
kenkao:
zs12593 写道这个,这个
这里只是转载,建议看一下原文, ...
android游戏开发框架libgdx环境搭建 -
zs12593:
这个,这个
android游戏开发框架libgdx环境搭建
http://bbs.apkok.com/thread-1893-1-1.html
一、基础知识
TextToSpeech 简称TTS,称为语音合成,是Android 从1.6版本开始支持的新功能,能将所指定的文本转成不同语言音频输出。
在具体介绍前我们先来看下Adnroid系统带的TTS设置界面,点击Settings->Speech synthesis,如下图所示:
图 1 Android TTS设置界面
当点击“Listen to an example”时,会发出“ This is an example of speech synthesis in English. ”,如果没有安装 TTS Data的话可以点击第二项安装,在 Default settings 可以设置 Speech rate 和 Language ,如下图 2 所示可以知道 TTS 支持的语言。
图2 TTS 语言选择
如果勾选“Always use my settings ”时要注意,设置了这个选项后那么我们就不能在程序中对 speech rate 和 Languages 进行设置了,这里的设置回覆盖我们程序中的设置。
TTS功能需要有TTS Engine的支持,下面我们就来了解下android提供的TTS Engine。
Android使用了叫Pico的支持多种语言的语音合成引擎,Pico在后台负责把分析输入的文本,把分本分成他能识别的各个片段,再把合成的各个语音片段以听起来比较自然的方式连接在一起,这个过程Android系统帮我们做,我们只把他当做一个神奇的过程就可以了。
TTS engine依托于当前 Android Platform 所支持的几种主要的语言: English 、 French 、 German 、 Italian 和 Spanish 五大语言 (暂时也是没有对中文提供支持)。 TTS可以将文本随意的转换成以上任意五种语言的语音输出。与此同时,对于个别的语言版本将取决于不同的时区,例如:对于 English ,在 TTS 中可以分别输出美式和英式两种不同的版本 。
Java文件的编写: 接着定义好下面要用到的几个变量: 虽然安装Android1.6版本及之后的Android机器都默认安装了TTS引擎,但某些设备可能会因为存储容量的限制而缺少安装和语言对应的资源文件,因此在使用TTS前,得先要检查是否安装了TTS语言数据,在onCreate函数中添加以下内容: 这里启动一个新的Intent去检查TTS数据是否已经安装,我们根据其返回的结果进行处理,如下所示: 如果返回CHECK_VOICE_DATA_PASS表示检查成功,可以新建一个 TextToSpeech ,否则就去下载 TTS数据。 在这个回调函数里,我们设置语言,然后就可以进行使用 TTS引擎进行操作了。 最后,在onCreate函数中设置 EditText和Button的使用: 至此,我们的 Demo就完成了,当启动程序后,首先会朗读“ This is an example of speech synthesis in English. ”,然后你在EditText中输入内容,点击Speak按钮就能把内容给朗读出来。 http://blog.csdn.net/ichliebephone/article/details/6373184 一. 基础知识 Android 从1.6 版本开始支持Text To Speech ,使用的是Pico 语音合成引擎,但是只支持 English 、 French 、 German 、 Italian 和 Spanish 五大语言,暂时没有对中文提供支持。因此使用 Android 默认的 TTS Engine 是没法朗读中文的。 不过有开源项目 eyes-free ( http://code.google.com/p/eyes-free/ , Android 上的 TTS 功能应该也是基于这个开源项目提供的)除了提供 Pico 外,还把支持其他更多语言语音合成的另一个 TTS 引擎 eSpeak 也移植到了 Android 平台,其中就支持中文的语音合成。 因此在安装了 eyes-free 提供的 TTS Service Extended 的 apk 后,就可以在程序中使用 eyes-free 提供的 TTS library ,并把 TTS Engine 设置为不是默认的 Pico ,而是 eSpeak ,就可以实现朗读中文了。不过经过测试,实际的效果还是很差的,只能说勉强可以朗读而已。 二. 实例分析 下面我们就通过一个具体的例子来说明朗读中文的实现过程。 希望实现的效果和之前的类似: 图 1 实现效果图 上面一个输入框,点击 “我说” 按钮则朗读上面的文字内容。 首先我们要到 eyes-free 那下载需要的 TTS library 的 jar 包 (http://code.google.com/p/eyes-free/downloads/detail?name=TTS_library_stub_3.0_market.jar&can=2&q=) 。 创建一个 Android 工程,工程名为 NiHaoTTS ,并且把下载的 jar 包放在 assets 文件夹下。右键点击工程,选择 properties , Java Build Path , Libraries , Add JARs, 往工程中添加进 assets 下的 jar 包 , 如下图所示: 图2 添加 TTS library jar 包 其中 main.xml 文件很简单,如下所示:
Java 文件的编写: Java 文件和之前的类似,只是因为使用了 eyes-free 的 TTS API ,而不是 Android 自带的 TTS API ,因此有些许改变。相关的 API 参考: http://eyes-free.googlecode.com/svn/trunk/documentation/tts/com/google/tts/package-summary.html ,其中我们可以看到基本和 Android 的 API ()类似,其中一个明显的区别是创建 TTS 对象这里使用的是 TextToSpeechBeta ,而之前我们使用的是 TextToSpeech 。 Java 完整的代码为:
基本和我们之前学过的类似,其中不同的地方有: ( 1 ) TTS 的初始化回调函数多了一个版本号参数 version, public void onInit( int status, int version) , 如果返回的版本号 version 等于 -1 ,则表明还没有安装 eyes-free 提供的 TTS Service Extended ,提示进行下载和安装。 // 提示安装所需的 TTS 数据 alertInstallEyesFreeTTSData(); 主要就是弹出对话框进行提示,然后链接到 eyes-free 的网站进行下载对应的 apk 。 // 弹出对话框提示安装所需的 TTS 数据 private void alertInstallEyesFreeTTSData() { Builder alertInstall = new AlertDialog.Builder( this ) .setTitle( " 缺少需要的语音包 " ) .setMessage( " 下载安装缺少的语音包 " ) .setPositiveButton( " 确定 " , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub // 下载 eyes-free 的语音数据包 String ttsDataUrl = "http://eyes-free.googlecode.com/files/tts_3.1_market.apk" ; Uri ttsDataUri = Uri.parse (ttsDataUrl); Intent ttsIntent = new Intent(Intent. ACTION_VIEW , ttsDataUri); startActivity(ttsIntent); } }) .setNegativeButton( " 取消 " , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub finish(); } }); alertInstall.create().show(); } 下载完进行安装,然后重新启动程序就可以运行。 ( 2 )如果已经安装了,则可以进设置 TTS 引擎和需要合成的语言。 // 设置 TTS 引擎, com.google.tts 即 eSpeak 支持的语言包含中文,使用 Android 系统默认的 pico 可以设置为 com.svox.pico mTTS .setEngineByPackageNameExtended( "com.google.tts" ); int result = mTTS .setLanguage(Locale. CHINA ); // 设置发音语言 其中如果设置为 com.google.tts 则表示使用 eSpeak 引擎,其包括对中文语音合成的支持。如果设置为 com.svox.pico 则表示使用 Pico 引擎,实际效果就是使用 Android 自带的 Pico 的效果,不过只支持 5 中语言,不支持中文。 除了这两块,其他和我们之前的程序基本一样。 然后就可以运行程序。因为模拟器开始时没有安装需要的 eyes-free 的 TTS Service Extended 的 apk ,因此会弹出提示对话框,点击确定开始下载,下载完进行安装,如下图所示。 图3 安装eyes-free的TTS 安装完会在应用程序中看到对应的图标,并且在 TTS 的设置中也会增加 eSpeak TTS 一项,如下图所示: 图4 安装了eyes-free的TTS 安装完后就可以再次打开 NiHaoTTS 程序,这时会有个选择询问使用哪个 TTS ,选择第二项,然后就可以在输入框中输入中文来朗读了。 图5 选择TTS 不过经过简单测试就知道了,中文朗读的效果基本没法实际使用的。 文章对应的完整代码例子可以在这里下载: http://download.csdn.net/source/3237373 http://download.csdn.net/download/leiwuluan/3894785
二. 实例分析
下面我们先做一个具体的实例来亲自体会一下Android的TTS的效果。
我们做一个简单的输入英文句子然后朗读出来的例子,了解Android的TTS使用方法。
在具体做之前给个AndroidTTS的API的链接,
http://androidappdocs.appspot.com/reference/android/speech/tts/package-summary.html
可以先看下大概了解TTS提供的功能。
图3 Android TTS API
可以看到TTS提供了两个接口和两个类。
我们希望做的效果如下:
图4 实现效果图
上面一个输入框,点击Speak按钮则朗读上面的文字内容。
创建一个Android工程,工程名为AndroidTTSDemoFirst,其中SDK必须选择1.6版本及以上。
其中Main.xml文件很简单,如下所示:
要使用TTS得实现OnInitListener接口
当TTS数据检测成功创建一个TextToSpeech后,就会调用接口OnInitListener中定义的回调函数
创建一个TextToSpeech是需要占用资源的,因此我们要适时的释放这个资源:
文章对应的完整代码例子可以在这里下载:http://download.csdn.net/source/2610740
- NiHaoTTS.zip (260.9 KB)
- 下载次数: 4
发表评论
-
android.os.NetworkOnMainThreadException 异常处理
2015-03-13 16:19 551http://www.cnblogs.com/freexia ... -
Android 访问权限设置
2015-03-13 16:19 463Android开发应用程序时,如果应用程序需要访问网络权限, ... -
Android 获取唯一机器码的代码
2015-03-13 16:18 1212做应用时很多时候都得获取到每个设备的机器码 Secu ... -
获取android手机基本信息
2015-03-13 14:03 680http://zdpeng.iteye.com/blog/1 ... -
java发送http的get、post请求
2015-03-13 13:59 611http://www.cnblogs.com/zhuawa ... -
浅析android应用增量升级
2015-01-06 10:31 644http://blog.csdn.net/hmg25/ ... -
Android App应用包增量升级(one)
2015-01-06 10:29 1094http://kinggoo.com/bsdiffupdat ... -
Android 增量更新实例(Smart App Updates)
2015-01-06 10:28 633http://892848153.iteye.com/blo ... -
常用的android弹出对话框
2014-04-15 09:34 561http://blog.csdn.net/wei_ge163 ... -
Android滑动手势侦测方法介绍
2013-07-06 17:19 819http://developer.51cto.com/art ... -
Android开发工具之DDMS
2013-06-24 13:52 907http://www.cnblogs.com/jerrych ... -
Android 程序自动更新功能模块实现
2013-06-20 11:42 952Android 程序自动更新功能模块实现 在程 ... -
Android之远程图片获取和本地缓存
2013-06-15 07:11 739http://www.cnblogs.com/top5 ... -
Android 利用缓存机制实现文件下载
2013-06-15 07:08 1430http://www.cctime.com/html/20 ... -
Android学习系列--App缓存管理
2013-06-15 06:58 614http://www.cnblogs.com/qianxud ... -
Android中Bitmap缓存池
2013-06-12 22:28 710http://mobile.51cto.com/andr ... -
android之调用webservice实现图片上传
2013-03-24 11:41 1111http://www.cnblogs.com/top5/ar ... -
Android中的Selector的用法
2013-03-21 15:44 678作者原文地址:http://blog.csdn.net/s ... -
Android中的Binder机制
2013-03-20 19:21 813来自:http://www.cnblogs.com/inno ... -
Android中的Handler机制
2013-03-20 19:17 655来自: http://www.cnblogs.com/ke ...
相关推荐
第13章 创意初体验 13.1 项目实例——实用计步器 13.2 项目实例——指南针 13.3 项目实例——水平尺 13.4 项目实例——小钢琴 13.5 项目实例——实用手电筒 第14章 创意进阶 14.1 项目实例——便条...
4. **文本转语音(TTS)技术**:为了使听力正常的人能够理解聋哑人的信息,系统会利用TTS将文字信息转化为可听的语音。 5. **语音识别技术**:如果听力正常的用户通过语音输入,系统需有语音识别功能,将语音转化为...
【2012年度达内短学期实训方案(Java_3G_Android)】是针对学生和初入IT行业的人员设计的一次为期40天的校企合作实训项目,主要聚焦于Java、3G技术和Android应用开发。这个实训课程由达内IT培训集团主办,作为其TTS...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。