如何使用 Text To Speech 来阅读外语?

How can I get Text To Speech to read a foreign language?

当我检查哪些语言可用时,泰语可用但无法阅读文本

@SuppressLint("NewApi")
private void speak() {
    if(tts!=null && tts.isSpeaking()){
        tts.stop();
    }else{
        tts = new TextToSpeech(this, this);
        tts.setLanguage(Locale.forLanguageTag("th"));       //tts.getAvailableLanguages().;
        tts.setSpeechRate(0.7f);
    }
}

@Override
public void onInit(int status) {

    tts.speak("ซึ่งมีระยะทางส่วนใหญ่เป็น ทางหลวงแผ่นดินหมายเลข (สายบางนา - หาดเล็ก) เป็นเส้นทางคมนาคมหลักเส้นหนึ่งของประเทศไทย ", TextToSpeech.QUEUE_FLUSH, null);

}

像这样编辑您的代码:

@SuppressLint("NewApi")
private void speak() {
    if(tts!=null && tts.isSpeaking()) {
        tts.stop();
    }else{
        tts = new TextToSpeech(this, this);
    }
}

@Override public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        int res = tts.setLanguage("th_TH");
        //tts.getAvailableLanguages().;
        tts.setSpeechRate(0.7f);

        if (res >= TextToSpeech.LANG_AVAILABLE) {
            tts.speak("ซึ่งมีระยะทางส่วนใหญ่เป็น ทางหลวงแผ่นดินหมายเลข (สายบางนา - หาดเล็ก) เป็นเส้นทางคมนาคมหลักเส้นหนึ่งของประเทศไทย ", TextToSpeech.QUEUE_FLUSH, null);
    }
}

因为TextToSpeech实例是异步创建的,所以在onInit()方法完成后,你可以在控制你的tts时听到合成结果。