【发布时间】: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 引擎,这样您就可以重复使用它,而不必每次都重新初始化它。