【问题标题】:Android text to speech for Indonesian印度尼西亚语的 Android 文本转语音
【发布时间】:2014-07-18 02:20:30
【问题描述】:
嘿,我正在尝试为 3 种不同的语言创建一个 tts
他们是英语、西班牙语和印度尼西亚
我对英语和西班牙语没问题
他们工作正常,但我的印尼语有误
我尝试了不同的方法和不同的语言环境组合,但仍然没有运气
这是我在印度尼西亚的代码:
Locale locInd = new Locale("IDN");
int result = tts.setLanguage(locInd);
我试过 locale("in","ID"); , locale("ind","IDN"); , locale("in_ID);
但仍然没有运气
每次我尝试时,输出都是英语而不是印尼语
我使用 jellybean(4.2.2) 模拟器来运行它
当我运行模拟器时,语言环境中有in_ID
编辑:
我发现了我的问题,在 pico TTS indonesian 中没有安装
有没有每次不支持语言的教程
会弹出要求安装吗?
【问题讨论】:
标签:
android
locale
text-to-speech
android-4.2-jelly-bean
【解决方案1】:
MainActivity.tts.setLanguage(new Locale("id","ID"));
我用过,效果很好!
显然您的手机必须支持印尼语。我试了两部不同的手机,其中一部不会说印尼语
【解决方案2】:
每当您更改语言环境时,在将文本初始化为语音时设置语言:
textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
switch (status) {
case TextToSpeech.SUCCESS: {
synchronized (this) {
int result = textToSpeech.setLanguage(set the indonesia id here);
// Take action based on the result of initialisation
}
}
break;
default: {
Toast.makeText(appContext, appContext.getResources().getString(R.string.tts_init_failed), Toast.LENGTH_LONG).show();
}
break;
}
}
});
【解决方案3】:
如果您使用 "id", "ID" 或 Locale("id", "ID") 并且无法正常工作,您可以尝试此代码
科特林:
private fun askSpeechInput(){
if(!SpeechRecognizer.isRecognitionAvailable(this)){
Toast.makeText(this, "Speech recognition is not available", Toast.LENGTH_SHORT).show()
}else{
val i = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "id-ID")
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Coba ucapkan sesuatu")
launchSomeActivity.launch(i)
}
}
这对我有用