簡體   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