在android tts中无法获取所需的(SVOX)语言

时间:2012-10-02 00:14:12

标签: android text-to-speech

我有一个应该用几种语言实现tts的应用程序。这些语言不适用于标准的PICO引擎,所以我需要SVOX或类似的东西。 我已经安装了SVOX和所需的声音,悬停我无法更改我的手机tts引擎(我有Android 2.1,所以没有这个选项,我也无法安装tts扩展应用程序,因为我的手机不兼容)

我可能应该以某种方式以编程方式更改使用的引擎,但我似乎无法做到这一点。

这是我的代码:如果我使用标准语音,那就有效,而我需要的语音不可用

public void onInit(int status) {

    if (status == TextToSpeech.SUCCESS) {


        Locale[] AvalLoc = Locale.getAvailableLocales();

        Log.i("TTS","Available locales " + Arrays.toString(AvalLoc));
               /*
                   JUST TRYING TO OUTPUT WHICH LANGUAGES ARE AVAILABLE
                 */
         for (Locale l : AvalLoc) {
             int buf = tts.setLanguage(l);

             if (buf == TextToSpeech.LANG_MISSING_DATA
                     || buf == TextToSpeech.LANG_NOT_SUPPORTED) {
                 Log.i("TTS", "Language NOT available" + l.getCountry());
             } else {
                 Log.i("TTS","Language available" + l.getCountry());
             }


         }


        Locale loc = new Locale("ita","ITA"); /*This works, but I would need to be able to use SVOX voices instead*/

        int result = tts.setLanguage(loc);
        tts.setOnUtteranceCompletedListener(onUtteranceCompleted);


        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
        } else {
          btnSpeakQuestion.setEnabled(true); 
        }

    } else {
        Log.e("TTS", "Initilization Failed!");
    }

}

我安装了标准和SVOX TTS。

2 个答案:

答案 0 :(得分:0)

你知道你的执照吗? SVOX现在被Nuance收购。

答案 1 :(得分:0)

我遇到了与pt_BR语言环境类似的问题,为了从我的Android设备使用SVOX,我不得不使用setEngineByPackageName方法更改默认的TTS引擎(顺便推荐使用它)。

使用SVOX Classic,您应该更改TTS引擎,并提供包名称:

int result = tts.setEngineByPackageName("com.svox.classic");
if( result == TextToSpeech.ERROR ) {
    //Could not find svox classic
}

根据Android API,您不应使用此方法,因为它不会通知呼叫者TTS已初始化。但至少有助于在不同语言中测试SVOX。

顺便说一下,一旦你改变了TTS引擎,设置语言环境就没有效果了:

int result = tts.setLanguage(Locale.US);

即使在更改TTS引擎后使用上面的设置语言我的应用程序仍然使用SVOX配置(pt_BR)。

重要:仅当在TTS配置上启用SVOX时,提及的方法才有效。