我正在开发一个小应用程序,让用户可以选择“说”几个命令,然后应用程序就会做出响应。
我已经把语音识别和命令注册好了。他们正在被认可,并且无论如何,答案都应该被发挥出来。
唯一的问题是:它没有。
下面是我用来确定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();它返回空..。
更奇怪的是,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);
}这段代码似乎没有什么问题,还是我遗漏了什么?
下面列出了我尝试过/检查/安装的内容:
所以,从我坐的地方看,它没有理由不起作用。我的问题是:
发布于 2015-04-10 10:49:40
好吧,我修好了。我没有考虑tts引擎需要初始化自己的时间,所以我只是在实例化tts引擎之后调用了“to”。
现在,我将它移到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");
}
}
};https://stackoverflow.com/questions/29556293
复制相似问题