在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)的更多相关文章

  1. android学习笔记53——自动朗读TTS

    自动朗读TTS android提供了自动朗读功能--其指的是支持可以对指定文本内容进行朗读,从而发出声音: 同时android的自动朗读支持还允许把文本对应的音频录制成音频文件,方便后续播放. 这种自 ...

  2. Android中的自动朗读(TTS)

    Android的自动朗读支持主要是通过TextToSpeech来完成,该类提供了如下一个构造器TextToSpeech(Context context,TextToSpeech.OnInitListe ...

  3. Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/26/2368696.html 一.概述 TextToSpeech,就是将文本内容转换成语音,在其 ...

  4. Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式

      相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式> &l ...

  5. Android 自动编译、打包生成apk文件 4 - 多渠道批量打包

    相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式 > < ...

  6. C# Xamarin For Android自动升级项目实战

    一.课程介绍 “明人不说暗话,跟着阿笨一起玩Xamarin”,本次分享课程阿笨将带来大家一起学习Xamarin For Android系列<C# Xamarin For Android自动升级项 ...

  7. Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式

    from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...

  8. Android自动读取短信验证码

    Android自动读取短信验证码  extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...

  9. 使用Jenkins进行Android自动打包,自定义版本号等信息【转】

    之前App在提交测试和最终部署的过程中App打包一直是由开发人员来完成的,由于项目比较大, 再加上Android打包本身就比较慢,所以每次打包还是很耗时的.并且按照严格的研发流程来讲,开发人员应该只负 ...

随机推荐

  1. PHP中file_put_contents追加和换行

    在PHP的一些应用中需要写日志或者记录一些信息,这样的话.可以使用fopen(),fwrite()以及 fclose()这些进行操作.也可以简单的使用file_get_contents()和file_ ...

  2. 静态库冲突的解决办法:duplicate symbol

    昨天在做微信sdk和xmpp的集成,发现各自单独集成没问题,一起集成却总报错,百度了好一会儿才知道,这应该是库冲突造成的问题 然后参考了很多文章,跟着敲敲一遍,却发现问题多多,最后主要综合结合了这两个 ...

  3. K均值聚类(Kmeans)

    Sigma = [1, 0; 0, 1]; mu1 = [1, -1]; x1 = mvnrnd(mu1, Sigma, 200); mu2 = [5.5, -4.5]; x2 = mvnrnd(mu ...

  4. SCCM 部署操作系统 ,提示权限问题,报错:0xc00000098

    SCCM 部署操作系统 ,提示权限问题,报错:0xc00000098 这个问题通过查看日志,论坛搜索,博客等.下面是最终的解决方法: 1.检查所有组件是否已安装.(IIS组件等).(分发站点证书是否正 ...

  5. dom4j解析xml作为测试数据

    构造函数: public AppTestData(File xmlFile) throws Exception { file = xmlFile; try { saxReader = new SAXR ...

  6. centos7 最小化安装 无 ifconfig,netstat 的安装

    centos7 最小化安装 无 ifconfig,netstat 的安装 centos7 最小化安装之后,默认是没有 ifconfig,netstat命令的: 我们可以直接使用 yum -y inst ...

  7. robotframework笔记23

    远程库接口 远程库接口提供了对在测试库 比机器人框架本身是在不同的机器上运行, 同时实现图书馆使用其他语言比 本机支持Python和Java. 为一个测试库用户远程 library看起来几乎一样的其他 ...

  8. linux下shell统计文件目录下所有代码行数

    功能,统计某一目录下所有文件代码行数: 例如统计某一目录下所有.c结尾的文件代码行数:find . -name "*.c"|xargs cat|grep -v ^$|wc -l ^ ...

  9. JavaWeb基础: Web应用和Web服务器

    Web Server工作原理 假设工程师想提供一个网页浏览的Web应用给客户,需要经过以下几步: 在指定目录下新建资源(hello.html) 编写一个服务器ServerDemo监听请求和响应请求:S ...

  10. AES算法

    高级加密标准(Advanced Encryption Standard,AES),又称 高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多 ...