【发布时间】:2021-11-11 18:24:33
【问题描述】:
在我的 Android 应用中,我有一个使用 Google 引擎的 TTS。
有这样的东西:
tts=new TextToSpeech(MyClass.this, status -> {
if(status == TextToSpeech.SUCCESS){
tts.setLanguage(locale);
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onDone(String utteranceId) {
if (utteranceId.equals("***")) {
runOnUiThread(() -> {
Button view2 = findViewById(R.id.speech);
view2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.play, 0, 0, 0);
});
}
}
@Override
public void onError(String utteranceId) {
}
@Override
public void onStart(String utteranceId) {
}
});
}
});
基本上我使用 2 种语言,斯洛伐克语和英语。两者都可以正常使用 Google TTS。
问题是,三星设备默认设置了自己的 TTS 引擎,因此应用文本转语音无法在这些设备上运行。
用户将设备设置更改为使用 Google TTS 后,它就可以工作了。
但是有没有办法让我的代码支持两个 TTS 引擎?
我发现可能会有这样的工作:
TextToSpeech(Context context, TextToSpeech.OnInitListener listener, String engine)
例如使用com.google.android.tts 作为引擎参数。
但是在我的代码中,我有 new TextToSpeech(MyClass.this, status -> {... 之类的,它不接受引擎作为第三个参数,我仍然不知道如何检测何时需要三星引擎并相应地切换引擎。
【问题讨论】: