我有一个应该用几种语言实现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。
答案 0 :(得分:0)
答案 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时,提及的方法才有效。