TextToSpeech语音播报踩坑记录

本文详细介绍了在Android应用中使用TextToSpeech组件实现语音播报功能的过程,包括常见错误'speakfailed:notboundtoTTSengine'的解决方案。通过正确初始化和调用方法,确保语音播报功能稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个TextToSpeech踩坑记录

由于公司特殊需求 , 需要在app接收推送的时候添加一条语音播报的功能 , 所以就有了这篇的踩坑记录

巨大的一个天坑speak failed: not bound to TTS engine 先记录一下

说到语音播报 , 就想起了android自带的TextToSpeech , 经过百度发现 , TextToSpeech这个的使用方法非常简单 , 就需要调用几个简单的方法就可以实现类似于支付宝微信的语音播报功能 .

首先需要 new TextToSpeech对象

new TextToSpeech(Context context,  OnInitListener listener);

实现OnInitListener接口

			@Override
            public void onInit(int status) {
            //		初始化成功
                if (status == TextToSpeech.SUCCESS){
                }else{
                //		初始化失败
                }
			}

启动TextToSpeech开始语音播报

//                语音音调数值越大声音越尖越想女生 , 数值越小声音越沉越想男生
                  textToSpeech.setPitch(1.0f);
//                语音音速
                  textToSpeech.setSpeechRate(0.8f);
                  //开始阅读
                  //str  阅读的文字	
                  //TextToSpeech.QUEUE_ADD添加到队列后面,依次将前面的读完轮序
                  //TextToSpeech.QUEUE_FLUSH刷新队列,将之前的队列取消阅读现在的文字
                  textToSpeech.speak(str,TextToSpeech.QUEUE_ADD,null);

停止TextToSpeech语音播报,释放资源

		//不管是不是在阅读,都打断
        textToSpeech.stop();
        //关闭,释放资源
        textToSpeech.shutdown();
        textToSpeech = null ;

TextToSpeech的用法就这么简单

前面留下的那个大坑咱们在这解决一下
speak failed: not bound to TTS engine
这个不是报错,只是打印一下普通的日志
但是如果出现这个日志,则无法执行语音播报

经过查找资料发现要解决这个原因的办法是:
在实现OnInitListener接口的方法中进行语音播报功能

@Override
public void onInit(int status) {
			textToSpeech.setSpeechRate(speechRate);
            textToSpeech.setPitch(pitch);
			textToSpeech.speak(str,TextToSpeech.QUEUE_FLUSH,null);
}

这样就可以避免speak failed: not bound to TTS engine这个错误

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值