diff options
| author | Jean-Michel Trivi <jmtrivi@google.com> | 2009-07-10 12:08:59 -0700 |
|---|---|---|
| committer | Jean-Michel Trivi <jmtrivi@google.com> | 2009-07-10 13:45:47 -0700 |
| commit | a981013aa7315e13c6c5f6aad489813c419031ea (patch) | |
| tree | 7b72646410cdd8d5846c4435abb5cdd965201aa7 /core/java/android/speech | |
| parent | 38645ee6d61368f59b2d83256f2612bdaa38ff49 (diff) | |
| download | frameworks_base-a981013aa7315e13c6c5f6aad489813c419031ea.zip frameworks_base-a981013aa7315e13c6c5f6aad489813c419031ea.tar.gz frameworks_base-a981013aa7315e13c6c5f6aad489813c419031ea.tar.bz2 | |
Add support in TextToSpeech for an audio stream type param and utterance
ID specified as a hashmap param in the synthesis calls.
Fix a bug where the cached parameters were not passed to the service
when synthesizing to a file.
Diffstat (limited to 'core/java/android/speech')
| -rw-r--r-- | core/java/android/speech/tts/TextToSpeech.java | 73 |
1 files changed, 60 insertions, 13 deletions
diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java index e09eb04..38b7b79 100644 --- a/core/java/android/speech/tts/TextToSpeech.java +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -22,6 +22,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.media.AudioManager; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; @@ -109,6 +110,9 @@ public class TextToSpeech { public static final int FALLBACK_TTS_USE_DEFAULTS = 0; // false public static final String FALLBACK_TTS_DEFAULT_SYNTH = "com.svox.pico"; + // default values for rendering + public static final int TTS_DEFAULT_STREAM = AudioManager.STREAM_MUSIC; + // return codes for a TTS engine's check data activity public static final int CHECK_VOICE_DATA_PASS = 1; public static final int CHECK_VOICE_DATA_FAIL = 0; @@ -126,10 +130,15 @@ public class TextToSpeech { public static final String TTS_KEY_PARAM_LANGUAGE = "language"; public static final String TTS_KEY_PARAM_COUNTRY = "country"; public static final String TTS_KEY_PARAM_VARIANT = "variant"; - public static final int TTS_PARAM_POSITION_RATE = 0; - public static final int TTS_PARAM_POSITION_LANGUAGE = 2; - public static final int TTS_PARAM_POSITION_COUNTRY = 4; - public static final int TTS_PARAM_POSITION_VARIANT = 6; + public static final String TTS_KEY_PARAM_STREAM = "streamType"; + public static final String TTS_KEY_PARAM_UTTERANCE_ID = "utteranceId"; + protected static final int TTS_PARAM_POSITION_RATE = 0; + protected static final int TTS_PARAM_POSITION_LANGUAGE = 2; + protected static final int TTS_PARAM_POSITION_COUNTRY = 4; + protected static final int TTS_PARAM_POSITION_VARIANT = 6; + protected static final int TTS_PARAM_POSITION_STREAM = 8; + protected static final int TTS_PARAM_POSITION_UTTERANCE_ID = 10; + protected static final int TTS_NB_CACHED_PARAMS = 6; } /** @@ -163,11 +172,12 @@ public class TextToSpeech { mPackageName = mContext.getPackageName(); mInitListener = listener; - mCachedParams = new String[2*4]; // 4 parameters, store key and value + mCachedParams = new String[2*Engine.TTS_NB_CACHED_PARAMS]; // store key and value mCachedParams[Engine.TTS_PARAM_POSITION_RATE] = Engine.TTS_KEY_PARAM_RATE; mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE] = Engine.TTS_KEY_PARAM_LANGUAGE; mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY] = Engine.TTS_KEY_PARAM_COUNTRY; mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT] = Engine.TTS_KEY_PARAM_VARIANT; + mCachedParams[Engine.TTS_PARAM_POSITION_STREAM] = Engine.TTS_KEY_PARAM_STREAM; mCachedParams[Engine.TTS_PARAM_POSITION_RATE + 1] = String.valueOf(Engine.FALLBACK_TTS_DEFAULT_RATE); @@ -177,6 +187,10 @@ public class TextToSpeech { mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1] = defaultLoc.getISO3Country(); mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] = defaultLoc.getVariant(); + mCachedParams[Engine.TTS_PARAM_POSITION_STREAM + 1] = + String.valueOf(Engine.TTS_DEFAULT_STREAM); + mCachedParams[Engine.TTS_PARAM_POSITION_UTTERANCE_ID+ 1] = ""; + initTts(); } @@ -347,7 +361,14 @@ public class TextToSpeech { return result; } try { - // TODO support extra parameters, passing cache of current parameters for the moment + String extra = params.get(Engine.TTS_KEY_PARAM_STREAM); + if (extra != null) { + mCachedParams[Engine.TTS_PARAM_POSITION_STREAM + 1] = extra; + } + extra = params.get(Engine.TTS_KEY_PARAM_UTTERANCE_ID); + if (extra != null) { + mCachedParams[Engine.TTS_PARAM_POSITION_UTTERANCE_ID] = extra; + } result = mITts.speak(mPackageName, text, queueMode, mCachedParams); } catch (RemoteException e) { // TTS died; restart it. @@ -362,7 +383,8 @@ public class TextToSpeech { mStarted = false; initTts(); } finally { - return result; + resetCachedParams(); + return result; } } } @@ -388,7 +410,16 @@ public class TextToSpeech { return result; } try { - // TODO support extra parameters, passing null for the moment + if ((params != null) && (!params.isEmpty())) { + String extra = params.get(Engine.TTS_KEY_PARAM_STREAM); + if (extra != null) { + mCachedParams[Engine.TTS_PARAM_POSITION_STREAM + 1] = extra; + } + extra = params.get(Engine.TTS_KEY_PARAM_UTTERANCE_ID); + if (extra != null) { + mCachedParams[Engine.TTS_PARAM_POSITION_UTTERANCE_ID] = extra; + } + } result = mITts.playEarcon(mPackageName, earcon, queueMode, null); } catch (RemoteException e) { // TTS died; restart it. @@ -403,7 +434,8 @@ public class TextToSpeech { mStarted = false; initTts(); } finally { - return result; + resetCachedParams(); + return result; } } } @@ -426,7 +458,6 @@ public class TextToSpeech { return result; } try { - // TODO support extra parameters, passing cache of current parameters for the moment result = mITts.playSilence(mPackageName, durationInMs, queueMode, mCachedParams); } catch (RemoteException e) { // TTS died; restart it. @@ -696,8 +727,12 @@ public class TextToSpeech { return result; } try { - // TODO support extra parameters, passing null for the moment - if (mITts.synthesizeToFile(mPackageName, text, null, filename)){ + // no need to read the stream type here + String extra = params.get(Engine.TTS_KEY_PARAM_UTTERANCE_ID); + if (extra != null) { + mCachedParams[Engine.TTS_PARAM_POSITION_UTTERANCE_ID] = extra; + } + if (mITts.synthesizeToFile(mPackageName, text, mCachedParams, filename)){ result = TTS_SUCCESS; } } catch (RemoteException e) { @@ -713,9 +748,21 @@ public class TextToSpeech { mStarted = false; initTts(); } finally { - return result; + resetCachedParams(); + return result; } } } + + /** + * Convenience method to reset the cached parameters to the current default values + * if they are not persistent between calls to the service. + */ + private void resetCachedParams() { + mCachedParams[Engine.TTS_PARAM_POSITION_STREAM + 1] = + String.valueOf(Engine.TTS_DEFAULT_STREAM); + mCachedParams[Engine.TTS_PARAM_POSITION_UTTERANCE_ID+ 1] = ""; + } + } |
