探究 TextToSpeech 语音播报中的speak与setOnUtteranceCompletedListener方法以及相应的替换方法

     最近在做一个有关于语音播报的功能,在安卓原生TextToSpeech 中可以支持文字转语音的语音播报功能,对于英文的文字,应该都会支持转成语音,但是对于中文的文字,你手机中不一定有中文语言包,所以不一定可以转成中文语音。据研究现在的大部分机型都支持中文,如华为,小米之类的手机中的TTS都是“科大讯飞”或者“度秘”的TTS,这类的TTS是可以支持中文的,具体可以到设置中搜索TTS查看,我就不多说这方面的东西了。

    1.下面先介绍一下setOnUtteranceCompletedListener的用法吧,这个方法就是监听语音播报完成之后的回调,很多人用了也设置了这个监听,但是没有回调,这是为什么呢?因为我们在设置播放语音的时候,习惯性的把最后一个参数设置为null,事实上要使用setOnUtteranceCompletedListener方法是要用到最后一个参数的。

 tts.setPitch(1.0f);
                    // 设置语速
 tts.setSpeechRate(1.0f);
 final HashMap ttsOptions = new HashMap<>();
 ttsOptions.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utterance");//utterance,这个参数随便写,用于监听播报完成的回调中
 tts.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener(){
                        int i=0;
                        @Override
                        public void onUtteranceCompleted(String s) { //这个s就是上面写的utterance,
                            if (i<3){//简单的做了个播报三次的功能
                                tts.speak("这是一条语音播报", TextToSpeech.QUEUE_FLUSH, ttsOptions);
                                i++;
                            }
                        }
                    });
tts.speak("这是一条语音播报", TextToSpeech.QUEUE_FLUSH, ttsOptions);

这样setOnUtteranceCompletedListener就生效了。

2.事实上我们在写这段代码的时候可以看到上述写法setOnUtteranceCompletedListener已经过期了,代替方法成了setOnUtteranceProgressListener,这个方法是比较好用,多了两个功能具体的用法就不多说了。

  tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                        int i=0;
                        @Override
                        public void onStart(String s) {//开始播放

                        }

                        @Override
                        public void onDone(String s) {//完成之后
                            if (i<3){
                                tts.speak("这是一条语音播报", TextToSpeech.QUEUE_FLUSH, ttsOptions);
                                i++;
                            }
                        }

                        @Override
                        public void onError(String s) {//播放错误的处理

                        }
                    });

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 如果TextToSpeech没有语音播放,有以下几种可能原因: 1. 语音引擎没有正确安装:您需要确保您的设备上已经安装了正确的语音引擎,否则TextToSpeech无法正常工作。 2. 音频设备问题:您需要确保您的音频设备是正确连接的,并且可以正常工作。 3. 代码实现问题:您需要确保您的代码正确地实现了TextToSpeech功能,并且没有出现任何错误。 如果您仍然无法解决问题,请考虑寻求技术支持或进一步的帮助。 ### 回答2: TextToSpeech是用于将文本转换为语音的技术或工具。 通常,当TextToSpeech没有语音播放时,可能有以下几个原因: 1. 硬件问题:首先,需要确保您的设备上有可用的扬声器或耳机。如果设备的扬声器或耳机未连接、损坏或静音,则TextToSpeech无法播放语音。请检查您的设备音量设置并确保它们处于正常工作状态。 2. 权限问题:在某些设备或操作系统上,TextToSpeech可能需要访问设备的音频权限。请确保您已为TextToSpeech应用程序授予所需的权限。您可以在设备设置的应用程序权限部分找到并检查这些设置。 3. 文本输入问题:TextToSpeech需要文本输入才能生成语音。确保您已正确输入要转换为语音的文本,并使用适当的方法将其传递给TextToSpeech引擎。 4. 引擎设置问题:某些TextToSpeech引擎可能需要特定的配置或设置才能正常工作。请检查您所使用的引擎的设置并确保它们正确配置和激活。 如果您没有找到解决问题的方法,建议您尝试重启设备并重新安装TextToSpeech应用程序。如果问题仍然存在,您可以尝试使用另一个TextToSpeech引擎或与设备制造商或开发人员社区联系以获取进一步的帮助和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值