Android 自动朗读(TTS)
在Android应用中,有时候需要朗读一些文本内容,今天介绍一下Android系统自带的朗读TextToSpeech(TTS)。自动朗读支持可以对指定文本内容进行朗读,还可以把文本对应的音频录制成音频文件。Android的自动朗读支持主要通过TextToSpeech来完成,该类提供了如下构造器:
- TextToSpeech(Context context, TextToSpeech.OnInitListener listener)
当创建TextToSpeech对象时,必须先提供一个OnInitListener监听器---该监听器负责监听TextToSpeech的初始化结果。
一旦获得了TextToSpeech对象后,接下来可调用TextToSpeech的setLanguage(Locale loc)方法设置发声引擎应使用的语言、国家选项。
如果调用setLanguage(Locale loc)的返回值是"TextToSpeech.LANG_COUNTRY_AVAILABLE"说明当前TTS系统可以支持所设置的语言、国家。
TTS有两个方法来朗读:
speak(String text,int queueMode,HashMap<String,String> params)、synthesizeToFile(String text,HashMap<String,String> params,String fileName);
speak和synthesizeToFile的区别是一个后者可以把音频保存下来。
params参数:TextToSpeech.QUEUE_ADD,TextToSpeech.QUEUE_FLSH,前者调用speak方法时,会把新的发音任务添加到当前发音任务队列之后,后者直接中断当前发音任务。
下面介绍一下使用TextToSpeech的步骤:
1、创建TextToSpeech对象,创建时传入OnInitListener监听器监听创建是否成功。
2、设置TextToSpeech所使用语言、国家,通过返回值判断TTS是否支持该语言、国家。
3、调用speak或synthesizeToFile。
4、关闭TTS,回收资源。
下面上一个实例:
- public class Speech extends Activity
- {
- TextToSpeech tts;
- EditText editText;
- Button speech;
- Button record;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 初始化TextToSpeech对象
- tts = new TextToSpeech(this, new OnInitListener()
- {
- @Override
- public void onInit(int status)
- {
- // 如果装载TTS引擎成功
- if (status == TextToSpeech.SUCCESS)
- {
- // 设置使用美式英语朗读
- int result = tts.setLanguage(Locale.US);
- // 如果不支持所设置的语言
- if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
- && result != TextToSpeech.LANG_AVAILABLE)
- {
- Toast.makeText(Speech.this, "TTS暂时不支持这种语言的朗读。", 50000)
- .show();
- }
- }
- }
- });
- editText = (EditText) findViewById(R.id.txt);
- speech = (Button) findViewById(R.id.speech);
- record = (Button) findViewById(R.id.record);
- speech.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View arg0)
- {
- // 执行朗读
- tts.speak(editText.getText().toString(),
- TextToSpeech.QUEUE_ADD, null);
- }
- });
- record.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View arg0)
- {
- // 将朗读文本的音频记录到指定文件
- tts.synthesizeToFile(editText.getText().toString(), null,
- "/mnt/sdcard/sound.wav");
- Toast.makeText(Speech.this, "声音记录成功!", 50000).show();
- }
- });
- }
- @Override
- public void onDestroy()
- {
- // 关闭TextToSpeech对象
- if (tts != null)
- {
- tts.shutdown();
- }
- }
- }
Android 自动朗读(TTS)的更多相关文章
- android学习笔记53——自动朗读TTS
自动朗读TTS android提供了自动朗读功能--其指的是支持可以对指定文本内容进行朗读,从而发出声音: 同时android的自动朗读支持还允许把文本对应的音频录制成音频文件,方便后续播放. 这种自 ...
- Android中的自动朗读(TTS)
Android的自动朗读支持主要是通过TextToSpeech来完成,该类提供了如下一个构造器TextToSpeech(Context context,TextToSpeech.OnInitListe ...
- Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/26/2368696.html 一.概述 TextToSpeech,就是将文本内容转换成语音,在其 ...
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式> &l ...
- Android 自动编译、打包生成apk文件 4 - 多渠道批量打包
相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式 > < ...
- C# Xamarin For Android自动升级项目实战
一.课程介绍 “明人不说暗话,跟着阿笨一起玩Xamarin”,本次分享课程阿笨将带来大家一起学习Xamarin For Android系列<C# Xamarin For Android自动升级项 ...
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...
- Android自动读取短信验证码
Android自动读取短信验证码 extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...
- 使用Jenkins进行Android自动打包,自定义版本号等信息【转】
之前App在提交测试和最终部署的过程中App打包一直是由开发人员来完成的,由于项目比较大, 再加上Android打包本身就比较慢,所以每次打包还是很耗时的.并且按照严格的研发流程来讲,开发人员应该只负 ...
随机推荐
- spring的初始化bean,销毁bean之前的操作详解
我所知道的在spring初始化bean,销毁bean之前的操作有三种方式: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是 ...
- OpenGL的glScalef缩放变换函数详解
glScalef是openGL中的模型缩放函数,就是把当前矩阵与一个表示延各个轴对物体进行拉伸.压缩.反射的矩阵相乘.这个物体的每个点的x,y,z坐标与对应的xyz参数相乘. 先看函数定义void g ...
- STM8s在利用库配置端口的小问题
在应用的时候PA2口需要设置成推挽输出,控制一个外部电源开关,端口初始化程序如下: GPIO_DeInit(GPIOA); GPIO_Init(GPIOA,GPIO_PIN_2,GPIO_MODE_O ...
- 各种element/format 在manage display 下的选项
long text = > plain text, summary and trimmed, trimmed,default, hiddenentity refernece => enti ...
- java中身份证号15位转18位
/** * 将15位转换为18位 * @param idCode 15位身份证号 * @return String 18位身份证号 */ public String toEighteen(String ...
- View绑定式监听器实现原理
在我们开发android的时候,会经常重写自定义的View去满足一些需求 然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去. 对于我之前的 ...
- robot API笔记1
robot.api 包公开的公共api机器人框架 除非另有声明,公开的api在这个包中被认为是稳定的, 从而构建外部工具时,安全使用的机器人框架. 目前暴露api: logger 模块测试库的日志的目 ...
- 周爱民-javascript
从纯化的语言中了解到语言的本质:并以混杂的语言来创造我们的世界,. 程序=算法+结构,动静之间,不变的是本质 了解语言的本质,而不是试图学会一门语言. 本书从语言特性出发,把动态静态.函数 ...
- QT-- MainWindow外的cpp文件调用ui
这几天在学习QT,想写一个类似VIM的小软件,刚开始不注重代码结构,全部实现都写在MainWindow文件中,导致MianWindow文件十分的长而且很难去阅读,就想着把函数按照功能分到不同的cpp文 ...
- Linux编程
头文件一般位于usr/include目录下,各个子类的头文件位于include子目录下 不知道某个“库函数”需要哪些头文件,使用“man 函数”即可查看 sys/types.h 基本系统数据类型 s ...