繁体   English   中英

Android Text to Speech 非谷歌引擎

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM