我正在使用下面的库来实现texttospeech功能-
'net.gotev:speech:1.3.1'
现在我需要改变所有国家的口音,因为我试着用美国英语-
Speech.getInstance().setLocale(Locale.US);
但它不起作用,请引导我。
借助下面的代码,我试图让它说一句话-
Speech.getInstance().say("Hello", new TextToSpeechCallback() {
@Override
public void onStart() {
}
@Override
public void onCompleted() {
}
@Override
public void onError() {
}
});
现在它实际上是用基于语言环境的英语口音说话,例如-
如果它是由俄语用户运行的,那么由于它的语言环境,它用俄语口音说英语,但我希望它应该用美式英语口音,而不是基于语言环境的口音
最佳答案
在查看了这个库的代码之后,我认为您最好使用标准Android TextToSpeech object。
使用normal TextToSpeech,做你想做的事情可以简单到:
TextToSpeech tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
tts.setLanguage(Locale.US);
tts.speak("Hello", TextToSpeech.QUEUE_FLUSH, null);
}
});
我看到那个图书馆的问题:
它不使用自己的嵌入式引擎,而是简单地包装一个标准的android texttospeech对象,而不知道设备上是什么类型的引擎!
它使用的是singleton模式,在某些语音引擎(如google)中,这种模式容易发生内存泄漏。
这个问题与您的问题有关:检查或响应其内部texttospeech对象的初始化没有任何意义。这意味着,当它试图设置其内部tts对象的默认区域设置时,它实际上什么也不做……但是这个错误是不可见的,因为tts在默认情况下会这样做。但是,当您尝试手动设置区域设置时,也会发生同样的事情(什么都没有),因为tts对象尚未初始化。
关于android - TextToSpeech重音更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52423206/