TextToSpeech项目应用

  • 文字转语音
  • 官网简介
  • 项目前景
    • 项目实战
    • 真机调试
    • 结尾

文字转语音

从文本合成语音以立即播放或创建声音文件。即TextToSpeech(以下简称TTS)
       TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。
       TTS不仅能帮助有视觉障碍的人阅读计算机上的信息,更能增加文本文档的可读性。现在的TTS应用包括语音驱动的邮件以及声音敏感系统,并常与声音识别程序一起使用。TextToSpeech必须再被实例化之后才能使用.实现TextToSpeech.OnInitListener方法来获取实例化结果的提醒。当你已经使用完TextToSpeech实例之后, 应该调用shutdown()方法来释放TextToSpeech所使用的本地资源。

官网简介

具体详情可以去参考   链接地址:TextToSpeech






项目前景

最近在项目应用到了语音播报功能。由于近期业务中,物联网蓝牙连接设备过程中,光有toast,客户感觉无感操作,故新增了语音播报功能。
       语音播报功能应用场景也很多的,所以我们从其中找符合自己的就可。

项目实战

在这里我单独拉出来一个项目,供各位老板参考一下,共同学习!


       当初在遇到语音播报的时候,不知道应用哪个好,开发周期比较紧张,所以引用了TextToSpeech,研发简单、简便。
       在研发过程中,遇到一个问题,第一次运行,语音播报正常。等活动页运行销毁后,第二次调起语音播报异常,无法播报的情况,这个问题已解决。

具体代码如下:

/*** @author 拉莫帅* @date 2022/8/15* @address* @Desc 语音播报监听开始、结束*/
public interface SpeakListener {void startSpeak(String text);void stopSpeak();
}
/*** @author 拉莫帅* @date 2022/8/15* @address* @Desc 语音播报工具类*/
public class SpeechUtils extends UtteranceProgressListener implements SpeakListener, TextToSpeech.OnUtteranceCompletedListener{private Context mContext;private static SpeechUtils singleton;private TextToSpeech mTextToSpeech; // 系统语音播报类private boolean isSuccess = true;/*** 单例模式* @param context* @return*/public static SpeechUtils getInstance(Context context) {if (singleton == null) {synchronized (SpeechUtils.class) {if (singleton == null) {singleton = new SpeechUtils(context);}}}return singleton;}private SpeechUtils(Context context) {this.mContext = context.getApplicationContext();mTextToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {@Overridepublic void onInit(int i) {//系统语音初始化成功if (i == TextToSpeech.SUCCESS) {//操作成功int result = mTextToSpeech.setLanguage(Locale.CHINA);mTextToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规mTextToSpeech.setSpeechRate(1.0f);mTextToSpeech.setOnUtteranceProgressListener(SpeechUtils.this);mTextToSpeech.setOnUtteranceCompletedListener(SpeechUtils.this);// TextToSpeech.LANG_MISSING_DATA:表示语言的数据丢失// TextToSpeech.LANG_NOT_SUPPORTED:不支持if (result == TextToSpeech.LANG_MISSING_DATA|| result == TextToSpeech.LANG_NOT_SUPPORTED) {//系统不支持中文播报isSuccess = false;}}}});}/*** 开始播报* @param text*/@SuppressLint("NewApi")@Overridepublic void startSpeak(String text) {if (!isSuccess) {Toast.makeText(mContext, "系统不支持中文播报", Toast.LENGTH_SHORT).show();return;}if (mTextToSpeech != null) {// QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,等前面的语音任务执行完了才会执行新的语音任务。// QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务mTextToSpeech.speak(text,TextToSpeech.QUEUE_ADD, null, null);}}/*** 结束播报*/@Overridepublic void stopSpeak() {if (mTextToSpeech != null) {mTextToSpeech.stop();}}/*** 语音播报完成回调* @param utteranceId*/@Overridepublic void onUtteranceCompleted(String utteranceId) {}@Overridepublic void onStart(String utteranceId) {}@Overridepublic void onDone(String utteranceId) {}@Overridepublic void onError(String utteranceId) {}
}
/*** @author 拉莫帅* @date 2022/8/15* @address* @Desc 主功能(TTS)*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {private SpeechUtils speechUtils;private EditText editText;private ImageView speakButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}/*** 初始化控件*/private void initView() {speechUtils = SpeechUtils.getInstance(MainActivity.this);editText = findViewById(R.id.editText);speakButton = findViewById(R.id.btn);speakButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn:String speakText = editText.getText().toString().trim();boolean empty = StrUtils.isEmpty(speakText);if (empty) {//执行播报speechUtils.startSpeak("请您输入要播报的内容");Toast.makeText(MainActivity.this, "请您输入要播报的内容", Toast.LENGTH_SHORT).show();return;} else {speechUtils.startSpeak(speakText);Toast.makeText(MainActivity.this, speakText, Toast.LENGTH_SHORT).show();}break;}}/*** 销毁*/@Overrideprotected void onDestroy() {super.onDestroy();//结束播报speechUtils.stopSpeak();}
}

真机调试

语音播报,本人应用多版本真机进行了测试,目前没有发现什么问题,欢迎大家来补充!
真机分别:红米手机、华为手机、华为平板、华为鸿蒙系统手机、vivo手机,以上机型实测有效。

真机版本如下:

今天拿朋友的Android 4、7小米平板真机调试,系统不支持中文播放

结尾

欢迎各位老板光临寒舍,共同学习,留言探讨!

项目地址:Android 语音播报功能之项目实战

Android 语音播报之项目实战相关推荐

  1. Android语音播报、后台播报、语音识别

    Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 讯飞开放平台:http://www.xfyun.cn/index.php/default/index 程序 ...

  2. Android网络框架Volley项目实战-刘桂林-专题视频课程

    Android网络框架Volley项目实战-5257人已学习 课程介绍         使用Google 2013 I/O大会上发布的Volley请求框架做几个实战项目,归属地查询,QQ测试吉凶,天气 ...

  3. java语音播报源代码_详解Android 语音播报实现方案(无SDK)

    本文介绍了详解Android 语音播报实现方案(无SDK),分享给大家,具体如下: 功能描述 类似支付宝收款时候的语音播报功能:当别人扫描你的收款码,你收到钱之后,就会听到"支付宝到账12. ...

  4. 自定义封装android语音播报库

    自定义封装android语音播报库 在开发的时候,需要用到语音播报和音乐提醒,然后就封装了一套库,只需要调用一个方法,传入需要的文字或者音乐,方便快捷 首先在project视图下,将aar文件添加到l ...

  5. android 语音自动播报,Android 语音播报实现

    文章主要讲的是以前做项目时实现的来短信或来电话时语音播报的功能实现,记录下来做个总结. 1.实现语音播报的关键 -- 语音播报工具类(TtsUtil.java) 为了方便 文章主要讲的是以前做项目时实 ...

  6. Android语音播报、后台播报、语音识别,android程序开发

    <?xml version="1.0" encoding=" > **<Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义 ...

  7. Android语音播报商家收款及相关TTS语音文件合成

    主要思路: 1.处理需要播报的金额 2.合成语音文件,对金额播报 其实很简单,两行代码直接搞定 List<String> list = new VoiceTemplate().prefix ...

  8. Android 语音播报,语音识别demo

    该功能是基于百度智能云实现的根据文字进行语音播报. 1.首先到百度智能云创建语音应用 https://console.bce.baidu.com/ai/ 填写包名创建百度语音应用,获取AppID,AP ...

  9. Android 资讯类App项目实战 第一章 滑动顶部导航栏

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 该系列的其他文章 第二章 retrofit获取 ...

最新文章

  1. matlab 画 矩阵点,在MATLAB中绘制矩阵中点之间的线
  2. 关于不能成为专业软件测试人员的10大理由的一些阐述
  3. 工程代码_特征工程学习,19 项实践 Tips!代码已开源!
  4. MySQL主从复制,读写分离配置
  5. 同批号不同批次同一单据中出现数量不限制
  6. Nodejs学习(三)-安装nodejs supervisor,提高点效率吧。
  7. excel使用MySQL数据,如何使用mysql完成excel中的数据生成
  8. 台式计算机风扇声音大怎么处理,如何解决电脑电源风扇声音大的问题?
  9. Memcahce(MC)系列(三)Memcached它PHP转让
  10. CAS客户端认证流程
  11. 游族辟谣公司内斗CEO被投毒住院,警方通报带来光速反转?
  12. python随机猜数字游戏_Python小游戏——猜数字教程(random库教程)
  13. 基于灰狼优化算法的线性规划问题求解matlab程序
  14. mobi电子书如何用Windows电脑阅读?
  15. c语言运算符大全极其意义,C语言运算符大全
  16. J2SDK的安装历程
  17. c语言开发excel带比例的饼图,教大家Excel饼图中既显示百分比又显示数量的方法...
  18. [工业互联-2]:工业有线互联总线之CAN总线
  19. 吴枫 python小课账号_吴的解释|吴的意思|汉典“吴”字的基本解释
  20. 建武28a对讲机最大距离_健伍TH-26A,TG-28A,TH-28A和TK208对讲机检修实例说明

热门文章

  1. 现代企业管理笔记——控制
  2. 值得一看的技术类书籍列表
  3. TopCoder HowEasy
  4. elementui后台管理demo
  5. BS与CS的联系与区别
  6. [统计学笔记] 统计学计算题选讲(精华)
  7. debug(调试工具)
  8. lammps npt系综iso和aniso控压对比
  9. css文件处理,安装 less-loader
  10. [Oracle]如果表存在则删除重新创建