我正在开发一个小应用程序,让用户可以选择"说"应用程序将响应的几个命令。
我已经完成语音识别工作并注册了命令。他们被认可并且无论如何都应该得到答案。
唯一的问题是:它没有。
这里是我用来确定谷歌引擎支持哪种语言的代码(我正在开发旧版本的android以及#34; tts.getAvailableLangues(" 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());
最后一个日志的输出始终为:&#34;可用语言:0&#34;
事实上,如果我运行这段代码:
int id = speaker.setLanguage(Locale.ENGLISH);
checkId(id);
它会以#34;语言不再支持&#34;错误。 这很奇怪,因为我只是尝试使用其中一种默认语言:英语(英国,美国,不重要,不支持&#34;不支持&#34;)。
所以,显然,当我尝试运行时
speaker.getLanguage();
它返回null ...
甚至更奇怪的是,InitListener总是报告&#34; TextToSpeech.SUCCESS&#34;
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");
}
}
};
因此,日志始终显示:&#34;引擎成功启动&#34;。
这是我用来运行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);
}
该代码似乎没有任何问题,或者我错过了什么?
此处列出了我已尝试/检查/安装的内容:
所以,从我坐在那里,我没有理由不去工作。 我的问题是:
答案 0 :(得分:0)
我现在把它移到了OnInit监听器和presto:它有效!
现在是我的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");
}
}
};