如何才能获得Text To Speech来阅读外语?

时间:2016-02-25 21:41:35

标签: android text-to-speech

当我检查哪些语言可用时,泰语(th)可用,但不读取文本

@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);

}

1 个答案:

答案 0 :(得分:1)

像这样编辑你的代码:

@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时,你可以听到综合结果。