1

我有一个应用程序应该以多种语言实现 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。

4

2 回答 2

1

我在 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 时,上述方法才有效。

于 2013-03-05T21:02:57.297 回答
0

你确定你的执照吗?SVOX 现在被 Nuance 收购。

于 2012-10-15T16:09:33.573 回答