【问题标题】:Sound is not coming out while implementing Text-to-speech in Android activity在 Android 活动中实现文本转语音时没有发出声音
【发布时间】:2016-09-12 19:34:51
【问题描述】:

我在我的一个应用程序中使用 TextToSpeak。将语音字符串添加到 TextToSpeech 对象实例时,它不会产生任何声音。虽然我在日志中没有收到任何错误,但仍然没有声音。我希望设备说话,因为 textview 的值通过 resultMSG.setText() 方法设置。

public class ResultActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        ............
        resultMSG.setText(resultMSG_STR);
        textToSpeech = new TextToSpeech(getApplicationContext(),newTextToSpeech.OnInitListener(){

            @Override
            public void onInit(int status) {
                System.out.println("Txt To Speech STATUS = "+status);
                System.out.println("Txt To Speech Error STATUS = "+TextToSpeech.ERROR);
                System.out.println("Txt To Speech Success STATUS = "+TextToSpeech.SUCCESS);
                if(status == TextToSpeech.SUCCESS){
                    textToSpeech.setLanguage(Locale.ENGLISH);
                }
            }
        });
textToSpeechResult = textToSpeech.speak(resultMSG_STR,TextToSpeech.QUEUE_ADD,null);
    }
}

【问题讨论】:

  • OnInit 是异步的,因此您的 speak 语句很可能会在初始化之前被调用。作为测试,将您的 speak 语句移动到 onInit,在 setLanguage 之后 - 它应该从那里开始工作。但是,您的代码显示出对基本原理的误解。您最好多阅读一些教程。
  • 感谢brandall。这对我有用。但是,仍然有大约 4-5 秒的延迟。活动启动 4-5 秒后开始演讲。
  • 不幸的是,这是一个常见的延迟期 - 请查看此帖子 stackoverflow.com/q/36013611/1256219。您应该单独初始化您的 TTS 引擎,这样您就可以重复使用它,而不必每次都重新初始化它。

标签: android text-to-speech


【解决方案1】:

检查您的音量是否足够大,可以听到。您可能还想从 Play 商店安装一个应用,以验证 TTS 是否在您的手机上运行。

您可能还想将您的代码从 onCreate 方法移到 onResume 方法中。

查看我自己的代码,我注意到在 init 回调中我有那个“speak”调用。我认为你的“说话”电话在你的 TTS 完全初始化之前就被调用了。

【讨论】:

    猜你喜欢
    • 2020-09-06
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多