2012-10-02 92 views
1

我有一個應該以多種語言實現tts的應用程序。這些語言不適用於標準的PICO引擎,所以我需要SVOX或類似的東西。 我已經安裝了SVOX和所需的聲音,懸停我不能改變我的手機tts引擎(我有android 2.1,所以沒有這個選項,我也不能安裝tts擴展應用程序,因爲我的手機不兼容)。在android tts中無法獲取所需的(SVOX)語言

我可能應該以某種方式通過編程方式更改引擎,但我似乎無法做到這一點。

這裏是我的代碼:這個作品,如果我使用標準的聲音,和那些我需要的不可

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安裝。

+0

PS:SVOX網站的開發者頁面沒有幫助,因爲它只講述如何提供最終用戶應該下載的聲音... – DavidTonarini

回答

0

你確定你的授權? Nuance現在購買了SVOX。

+0

我對任何替代品都開放,只要我得到這個工作。無論如何,根據svox開發者頁面,根據我的理解,應該沒有問題 – DavidTonarini

0

我與pt_BR語言環境有類似的問題,並且爲了從我的Android設備使用SVOX,我不得不使用setEngineByPackageName方法更改默認的TTS引擎(該方法不推薦使用)。

使用SVOX經典,你應該改變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時提及的方法纔有效。