[英]Android Text to Speech non google engine
在我的 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) {
}
});
}
});
基本上我使用两种语言,斯洛伐克语和英语。 两者都适用于 Google TTS。
问题是,三星设备默认设置了自己的 TTS 引擎,因此应用文本到语音无法在这些设备上运行。
在用户更改他们的设备设置以使用 Google TTS 后,它就可以工作了。
但是有没有办法让我的代码同时支持两个 TTS 引擎?
我发现可能有这样的工作:
TextToSpeech(Context context, TextToSpeech.OnInitListener listener, String engine)
例如使用com.google.android.tts
作为引擎参数。
但是在我的代码中,我有类似new TextToSpeech(MyClass.this, status -> {
... 并且它不接受引擎作为第三个参数,但我仍然不知道如何检测何时需要三星引擎和相应地切换引擎。
值得尝试通过传递第三个参数来强制 TTS 引擎,因此在发布的代码段中交换最后一行
});
到
}, "com.google.android.tts");
还有两个有用的方法: getDefaultEngine()
和getEngines()
。 只需在开始时创建一些带有两个参数(空侦听器)的虚拟new TextToSpeech
并检查您有什么可能性。
当 Google 引擎不存在时, getAvailableLanguages()
和isLanguageAvailable(Locale loc)
也可能很有用,但默认情况下仍然可以支持您想要的语言
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.