[英]android text to speech 0 supported languages on nexus 7
我正在开发一个小应用程序,它为用户提供了“说出”该应用程序将响应的几个命令的选项。
我已经完成了语音识别功能并注册了命令。 他们正在被认可,并且应该以所有方式播放答案。
唯一的问题是:事实并非如此。
这是我用来确定Google的tts引擎支持哪些语言的代码段(很遗憾,我正在开发较旧版本的android,因此“ tts.getAvailableLangues()”不存在):
Locale[] locales = Locale.getAvailableLocales();
List<Locale> localeList = new ArrayList<Locale>();
for (Locale locale : locales) {
int res = speaker.isLanguageAvailable(locale);
if (res == TextToSpeech.LANG_COUNTRY_AVAILABLE) {
Log.d(tag, "language: " + locale);
localeList.add(locale);
}
}
Log.d(tag, "languages available: " + localeList.size());
最后一个日志的输出始终为:“可用语言:0”
实际上,如果我运行以下代码:
int id = speaker.setLanguage(Locale.ENGLISH);
checkId(id);
它将返回“不支持语言”错误。 考虑到我仅尝试使用一种默认语言,这很奇怪:英语(英语,美国,没关系,“不支持”)。
所以,很明显,当我尝试跑步时
speaker.getLanguage();
它返回null ...
甚至更奇怪的是,InitListener始终报告“ TextToSpeech.SUCCESS”
private OnInitListener listener = new OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
Log.d(TAG, "tts engine started succesfully");
} else if (status == TextToSpeech.ERROR) {
Log.d(TAG, "seems like an error occured :c");
}
}
};
因此,日志始终显示:“ tts引擎成功启动”。
这是我用来运行tts的实际代码:
public void speak(String text, Context context, OnInitListener listener) {
String tag = "dashboardactivity";
Log.d(tag, "speaking started in dummy module");
TextToSpeech speaker = new TextToSpeech(context, listener);
// int id = speaker.setLanguage(Locale.UK);
int id = speaker.setLanguage(Locale.ENGLISH);
speaker.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
该代码似乎没有什么问题,还是我错过了什么?
这是我尝试过/检查过/安装过的东西的清单:
因此,从我坐在那里开始,没有理由它不应该工作。 我的问题是:
好的,我修复了它。 我没有考虑过tts引擎需要进行自我初始化的时间,因此我在实例化它之后立即调用了“讲话”。
现在,我将其移至OnInit侦听器并预先保存:它可以正常工作!
现在是我的OnInitListener:
private OnInitListener listener = new OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
Log.d(TAG, "tts engine started succesfully");
Log.d(TAG, "setting language to default");
int id = tts.setLanguage(Locale.getDefault());
checkId(id);
tts.speak(mMessageToSpeak, TextToSpeech.QUEUE_FLUSH, null);
} else if (status == TextToSpeech.ERROR) {
Log.d(TAG, "seems like an error occured :c");
}
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.