From 123d2098dd7be3eb0b89a16065bbc71413fb1c48 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Thu, 28 Nov 2013 19:59:03 +0000 Subject: [PATCH] now the TTS is used only if there is actually a language model. this is better than using English for speaking Swedish --- .../grammaticalframework/ui/android/TTS.java | 34 +++++++------------ .../ui/android/Translator.java | 2 +- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java b/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java index 585911129..2a77c950a 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java @@ -20,30 +20,20 @@ public class TTS { mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); } - public void setLanguage(String language) { - Locale locale = LocaleUtils.parseJavaLocale(language.replace('-', '_'), - Locale.getDefault()); - - int result = mTts.setLanguage(locale); - if (result == TextToSpeech.LANG_MISSING_DATA || - result == TextToSpeech.LANG_NOT_SUPPORTED) { - Log.e(TAG, "Language is not available"); - } else { - // TODO: the language may be available for the locale, - // but not for the specified country and variant. - } - } - // TODO: handle speak() calls before service connects - public void speak(String text) { + public void speak(String language, String text) { if (mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL) { - HashMap params = new HashMap(); - // TODO: how can I get network / embedded fallback? - // Using both crashes the TTS engine if the offline data is not installed - // Using only one doesn't allow the other - // params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); - // params.put(TextToSpeech.Engine.KEY_FEATURE_EMBEDDED_SYNTHESIS, "true"); - mTts.speak(text, TextToSpeech.QUEUE_FLUSH, params); + Locale locale = LocaleUtils.parseJavaLocale(language.replace('-', '_'), + Locale.getDefault()); + + int result = mTts.setLanguage(locale); + if (result == TextToSpeech.LANG_MISSING_DATA || + result == TextToSpeech.LANG_NOT_SUPPORTED) { + Log.e(TAG, "Language is not available"); + } else { + HashMap params = new HashMap(); + mTts.speak(text, TextToSpeech.QUEUE_FLUSH, params); + } } } diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index 58b601e31..0c03f4ad3 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -33,7 +33,7 @@ public class Translator { /* new Language("en-US", "English", "TranslateEng", R.xml.inflection_en), // AR new Language("cmn-Hans-CN", "Chinese", "TranslateChi", R.xml.inflection_cmn), - new Language("fi-FI", "Finnish", "TranslateFin", 0), + new Language("fi-FI", "Finnish", "TranslateFin", R.xml.inflection_fi, R.xml.qwerty), new Language("sv-SE", "Swedish", "TranslateSwe", R.xml.inflection_sv), */ new Language("en-US", "English", "ParseEng", R.xml.inflection_en, R.xml.qwerty),