Android中如何使用TextToSpeech
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍Android中如何使用TextToSpeech,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!APP初稿如图:实现1.初始化语音。这是一个异步操作。初始化完成后
千家信息网最后更新 2025年01月20日Android中如何使用TextToSpeech
这篇文章主要介绍Android中如何使用TextToSpeech,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
APP初稿如图:
实现
1.初始化语音。这是一个异步操作。初始化完成后调用oninitListener(第二个参数)。
TextToSpeech mTts = new TextToSpeech(this, this);
2.实现TextToSpeech.OnInitListener
注意:语言可能不可用。
// 实现TextToSpeech.OnInitListener. public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { //设置首选语言为中文,注意,语言可能是不可用的,结果将指示此 int result = mTts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { //语言数据丢失或不支持该语言。 Log.e(TAG, "语言数据丢失或不支持该语言"); } else { //检查文档中其他可能的结果代码。 // 例如,语言可能对区域设置可用,但对指定的国家和变体不可用 // TTS引擎已成功初始化。 // 允许用户按下按钮让应用程序再次发言。 mAgainButton.setEnabled(true); } } else { // 初始化失败 Log.e(TAG, "初始化失败"); } }
3.写一个朗读方法,在需要的时候触发(如:点击事件)
TextToSpeech的speak方法有两个重载。
执行朗读的方法
speak(CharSequence text,int queueMode,Bundle params,String utteranceId);
第二个参数queueMode用于指定发音队列模式,两种模式选择。
(1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务
(2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,等前面的语音任务执行完了才会执行新的语音任务。
将朗读的的声音记录成音频文件
synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);
private void sayHello() { String hello ="Hellow"; //TextToSpeech的speak方法有两个重载。 // 执行朗读的方法 //speak(CharSequence text,int queueMode,Bundle params,String utteranceId); // 将朗读的的声音记录成音频文件 //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId); //第二个参数queueMode用于指定发音队列模式,两种模式选择 //(1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务 //(2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后, //等前面的语音任务执行完了才会执行新的语音任务 mTts.speak(hello, TextToSpeech.QUEUE_FLUSH, null); }
4.记得利用Activity的生命周期中将其关闭
@Override public void onDestroy() { // 生命周期中结束 if (mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); }
源码
SpeechActivity.java
public class SpeechActivity extends Activity implements TextToSpeech.OnInitListener { private static final String TAG = "SpeechDemo"; private TextToSpeech mTts; private Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.text_to_speech); //初始化语音。这是一个异步操作。初始化完成后调用oninitListener(第二个参数)。 mTts = new TextToSpeech(this, this); mButton = (Button) findViewById(R.id.again_button); //触发 mButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { sayHello(); } }); } @Override public void onDestroy() { // 生命周期中结束 if (mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); } // 实现TextToSpeech.OnInitListener. public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { //设置首选语言为中文,注意,语言可能是不可用的,结果将指示此 int result = mTts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { //语言数据丢失或不支持该语言。 Log.e(TAG, "语言数据丢失或不支持该语言"); } else { //检查文档中其他可能的结果代码。 // 例如,语言可能对区域设置可用,但对指定的国家和变体不可用 // TTS引擎已成功初始化。 // 允许用户按下按钮让应用程序再次发言。 mAgainButton.setEnabled(true); } } else { // 初始化失败 Log.e(TAG, "初始化失败"); } } private void sayHello() { String hello ="计蒙不吃鱼"; //TextToSpeech的speak方法有两个重载。 // 执行朗读的方法 //speak(CharSequence text,int queueMode,Bundle params,String utteranceId); // 将朗读的的声音记录成音频文件 //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId); //第二个参数queueMode用于指定发音队列模式,两种模式选择 //(1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务 //(2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后, //等前面的语音任务执行完了才会执行新的语音任务 mTts.speak(hello, TextToSpeech.QUEUE_FLUSH, null); } }
text_to_speech.xml
以上是"Android中如何使用TextToSpeech"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
任务
语音
语言
模式
方法
参数
数据
时候
结果
支持
两个
周期
声音
完了
文件
生命
队列
音频
选择
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电子商务数据库链接
php 数据库 最大值
数据库导出的数据不在c盘
武汉大学计算机网络安全
金蝶k3数据库可以安装吗
数据库的集群技术
蒙牛公司软件开发师
关系型数据库检验规则
win10桌面软件开发语言
软件开发公司技术入股合同
网络安全概念股表
服务器临时文件夹进不了
缅甸网络安全
python做苹果软件开发
普洱茶视频软件开发
国内数据库企业
软件开发管理办法国家规范标准
魔兽世界怀旧70数据库
煤矿网络安全建设
临江租房软件开发
服务器包含的分类
导入数据库失败.sql
餐厅点餐系统数据库登陆
数据库表更新触发过程
服务器开机进入磁盘阵列
用c语言设计数据库
成都手机app软件开发
如何对数据库表进行排序
服务器运行时间长就越好吗
数据库安全加固命令大全