Android 语音播放(文字TTS)
原文地址: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;
}
}
}
Android 语音播放(文字TTS)的更多相关文章
- Android技术分享-文字转语音并朗读
Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...
- JS实现文字转语音播放
JS实现文字转语音播放背景实现方式第一种:百度文字转语音开放API第二种:微软TTS语音引擎第三种:SpeechSynthesisUtterance总结背景在做项目的过程中,经常会遇到场景是客户要求播 ...
- Android,百度,云知声tts总结
最近在做Android语音播报功能(TTS),现总结如下:(ps:demo代码地址:https://github.com/giserlong/TTS_DEMO) 一.Android原生接口 用Andr ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 实时Android语音对讲系统架构
本文属于Android局域网内的语音对讲项目系列,<通过UDP广播实现Android局域网Peer Discovering>实现了局域网内的广播及多播通信,本文将重点说明系统架构,音频信号 ...
- Android语音播报、后台播报、语音识别
Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 讯飞开放平台:http://www.xfyun.cn/index.php/default/index 程序 ...
- android 音乐播放器
本章以音乐播放器为载体,介绍android开发中,通知模式Notification应用.主要涉及知识点Notification,seekbar,service. 1.功能需求 完善音乐播放器 有播放列 ...
- 使用Vitamio打造自己的Android万能播放器(1)——准备
前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...
- jQuery语音播放插件
自己做jQuery插件:将audio5js封装成jQuery语音播放插件 日前的一个项目需要用到语音播放功能.发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以 ...
- 改进Android语音对讲系统的方法
本文属于Android局域网内的语音对讲项目系列,<实时Android语音对讲系统架构>阐述了局域网内Android语音对讲功能的框架,本文在此基础上进行了优化,包括音频的录制.播放,通信 ...
随机推荐
- centos多网卡时修改网卡的优先级
我有个服务器有多个网卡,分别配置了多个网段的IP地址,发现有一个网段ping不通.最后发现是路由优先级的问题. 查看路由 查看本机路由route主要看Metric的值,值越小表示优先级越高,取值范围1 ...
- 【算法】C语言程序编程模拟实现strlen函数和strcpy函数
C语言程序编程模拟实现strlen函数和strcpy函数(超详细的注释和解释) 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说 ...
- PHP实现字符串反转
方法一 用自带的函数strrev echo strrev('hello'); 方法二 自写循环方法 $str = 'hello'; $i = strlen($str); $newStr=''; whi ...
- 使用Dapr和.NET 6.0进行微服务实战系列
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本文是<使用Dapr和.NET 6.0进行微服务实战>的第1篇引言部分 ...
- 在OpenGL中使用Dear ImGui
在众多GUI库中,Dear ImGui用起来最简单,它很容易集成到程序中,绘制的窗口看起来也还不错.可以用它画出非常炫酷的GUI界面: 而我则不同:无论使用哪个GUI库,画出来的窗口都惨不忍睹.下面简 ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记
第 10 章 部署 10.1 部署到 IIS ASP.NET Core 应用程序支持部署到 IIS 中,之后它将作为应用程序的反向代理服务器和负载均衡器,向应用程序中转传入的 HTTP 请求 默认情况 ...
- Ubuntu下图形界面串口工具CuteCom的安装和升级
串口的图形界面化工具在Windows下很多, 但是在Linux下可选择的就很少, CuteCom 是相对比较好用的一款了. Ubuntu20.04默认安装的是0.30.3, 这是一个比较早的版本, 最 ...
- Delphi 实现刘谦春晚魔术
看了博友的C# 实现刘谦春晚魔术很好,改成了delphi版的. 1 program Project1; 2 3 {$APPTYPE CONSOLE} 4 {$R *.res} 5 6 uses 7 S ...
- 华为OD请己经入职的人出来谈谈你的真实感受?
修改了一下回答的排版,之前只要更新就在最前面, 现在按照会见顺序重新整理了一下. 部门捞人 上海 深圳 西安 东莞 办公地 武汉南京现在也有 通道:点击通道2字 写在前面 总结一下我的体验其实挺好的, ...
- pikachu 水平越权,垂直越权
水平越权 查看到其他用户的信息或者通过其他用户去编辑或修改其他用户的信息 1. 用lucy/123456登录 2. 点击查看信息 3. 使用burpsuite拦截请求 GET /vul/overper ...