TextToSpeech语音播报踩坑记录

TextToSpeech语音播报踩坑记录

这是一个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这个错误

相关推荐

舒一乐李小曼电视剧叫什么名字  舒一乐李小曼是哪部电视剧
生日蛋糕是生日当天吃还是前一天
365彩票app下载2020

生日蛋糕是生日当天吃还是前一天

07-27 🌱 2003
人活着有什么意义?哲学家和大学教授用亲身经历告诉你答案