Языки Android TTS

Я играю с движком Android TTS. Я пытаюсь настроить его так, чтобы он говорил по-испански из Мексики, а не из Испании.

Я пробовал несколько комбинаций кода языка/кода страны, но мне не удалось получить что-либо на испанском языке из Испании. Вот мой код на данный момент

loc = new Locale("es", "MEX");
myTts.setLanguage(loc);
say("Hello");

Я также пробовал («es», «US»), («es», «LA»), («spa», «US»), («spa», «MEX») со всеми комбинациями, которые я могу придумать. из этого показывает мне это в журнале:

TtsEngine::setLanguage обнаружил соответствующий язык (spa), но не соответствующую страну (MEX).

успешно загружен es-ES

Я могу выйти из своего приложения и открыть TTS Service Extended. Если я установлю язык на испанский [es] или испанский-Латинская Америка. В любом случае, когда я нажимаю «прослушать предварительный просмотр», я получаю «Hola», что и ожидалось. Но из моего приложения я получаю «Heyyo» вместо «Hola». Может ли кто-нибудь увидеть, что я делаю неправильно, чтобы установить свой язык?


person Tim    schedule 26.08.2010    source источник


Ответы (3)


Я использовал следующий код, и он отлично работает на испанском языке.

Locale locSpanish = new Locale("spa", "MEX");
tts.setLanguage(locSpanish);
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
person Joseph Selvaraj    schedule 23.05.2012
comment
Отлично работает для меня .. Спасибо - person Mukesh Garg; 15.10.2014
comment
Не работает с этой ошибкой для меня: попытка вызвать виртуальный метод «int android.speech.tts.TextToSpeech.setLanguage(java.util.Locale)» для нулевой ссылки на объект - person Bay; 01.01.2021

Я еще не использовал TTS на Android, поэтому не знаю, актуально ли это, но Конструктор локали ожидает двухбуквенный код страны и код страны ISO для Мексики — MX.

person Dan Dyer    schedule 26.08.2010

Это немного сбивает с толку, если ему нужны двухбуквенные или трехбуквенные коды страны. В документации Locale указано 2 буквы, поэтому это будет sp-MX. , но документ TTS показывает пример с 3-буквенными кодами, MEX будет правильным.

Какое устройство/версию SDK вы используете? Если ни один из них не работает, это может быть связано с тем, что ваше устройство не поддерживает испанский-мексиканский язык. В первом разделе документа TTS показано, как проверить язык определенные ресурсы и загрузка их, если они отсутствуют.

person Cheryl Simon    schedule 26.08.2010
comment
Я тестировал Nexus One с версией 2.2 и Mytouch с версией 1.6. Приложение построено на SDK версии 1.6. Я только что попробовал с 2-х и 3-буквенными кодами те же результаты. - person Tim; 26.08.2010
comment
Вы пытались загрузить ресурсы для конкретного языка? - person Cheryl Simon; 26.08.2010
comment
ссылка на документ TTS не работает - person yurin; 07.09.2018