Android 语音播放(文字TTS)
2023-02-18 16:38:35 时间
原文地址:Android 语音播放(文字TTS) | Stars-One的杂货小窝
基于Google内置的TTS引擎,封装了个语音播放的工具类
使用
//初始化
SpeechService.init(this);
//在如何地方调用都可以
SpeechService.speakText("这是一段文本的语音测试");
//别忘记释放资源
SpeechService.release();
坑说明
1.Flyme系统不支持
测试发现,如果是魅族手机,Flyme系统已经把TTS引擎删了,所以会出现语音引擎初始化失败的原因,可以试着安装下其他的TTS引擎来进行尝试
2.Android 11无法播放
需要在清单文件假如下面代码
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
如下图所示
工具类源码
public class SpeechService {
private static TextToSpeech textToSpeech;
/**
* 初始化
* @param activity
* @return
*/
public static void init(Activity activity) {
if (textToSpeech == null) {
//初始化tts语音
textToSpeech = new TextToSpeech(activity, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
// 如果装载TTS引擎成功
if (status == TextToSpeech.SUCCESS) {
// 设置使用美式英语朗读
int result = textToSpeech.setLanguage(Locale.CHINA);
// 如果不支持所设置的语言
if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
&& result != TextToSpeech.LANG_AVAILABLE) {
ToastUtils.showShort("该tts不支持中文");
}
} else {
textToSpeech = null;
}
}
});
}
}
/**
* 朗读语音
* @param text
*/
public static void speakText(String text) {
if (textToSpeech != null) {
textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null);
} else {
Log.e("test","语音还未初始化");
}
}
/**
* 关闭并释放资源
*/
public static void release() {
if (textToSpeech != null) {
// 不管是否正在朗读TTS都被打断
textToSpeech.stop();
// 关闭,释放资源
textToSpeech.shutdown();
textToSpeech = null;
}
}
}
相关文章
- BootstrapTable 动态显示/隐藏某一行
- Android Studio 中 添加作者 时间 之类的 注释
- 解决android studio 无法更新插件的问题(某些)
- android studio 首字母提示 设置 大小写敏感
- android studio logcat 打印不出信息
- 使用android自带的SwipeRefreshLayout实现下拉刷新
- android studio 导入第三方库的记录
- android studio 图片资源的放置位置,你中枪了吗?
- android开发艺术探索学习 之 Activity的生命周期
- android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- Android中的DatePicker颜色处理以及其他属性介绍
- Android Studio 使用中的相关“Bug”记录
- 以爬虫工程师身份谈谈Android端的信息安全
- AndroidStudio 自定义代码模板实现在xml和java文件中添加作者信息
- Android6.0权限记录
- android:layout_marginEnd隐藏的坑
- java.lang.NullPointerException Attempt to invoke virtual method 'int android.widget.Editor
- AndroidStudio 在当前位置查看注释快捷方式
- AndroidStudio 找不到Genymotion设备