Я работаю над небольшим приложением, которое дает пользователю возможность «поговорить» с несколькими командами, на которые приложение ответит.android text to speech 0 поддерживаемых языков на nexus 7
У меня есть распознавание речи и зарегистрированные команды. Они признаются и, во что бы то ни стало, ответ должен быть воспроизведен.
Только вопрос: это не так.
вот немного кода я использую, чтобы определить, какие языки поддерживаются TTS Engine Google (я разрабатываю для более старой версии андроида так «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);
Он придет ба ck с ошибкой «язык не поддерживается». Что странно, учитывая, что я только пытаюсь использовать один из языков по умолчанию: английский (Великобритания, США, не имеет значения, «не поддерживается»).
Таким образом, очевидно, когда я пытаюсь запустить
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 engine начал успешно».
И это фактический код я использую для запуска ТТС:
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 установлен
- голосовых данных (несколько голосов для Великобритании и США английского)
- если нажать «слушать пример» в настройках, которые он работает!
Итак, откуда я сижу, нет причин, чтобы он не работал. Мой вопрос:
- Я что-то не хватает? (специальные разрешения? некоторые данные?)
- Почему мой код говорит, что двигатель tts поддерживает 0 языков из 400-то «локалей»?
- как я могу это исправить?