51 Commits

Author SHA1 Message Date
Jean-Michel Trivi
b009418048 Clean TTS logs: use a common TAG in the TTS service, don't show
an error when loading the native synth lib.
2009-08-31 14:46:18 -07:00
Jean-Michel Trivi
09f8db7ad3 Add a synchronous stop method to TTS synth engine so that upon its destruction,
if it was synthesing to a file, the latter can be deleted without
still being written to.
Clear the hashmap of SpeechItem to be stopped (mKillList) when the speech
queue is empty.
2009-08-31 11:39:20 -07:00
Jean-Michel Trivi
ab6ed2c2b9 Launch synthesis thread at max priority to prevent hicups in playback.
Return and log an error when an operation cannot be completed because
the speech queue is locked longer than the timeout period.
Log cleanup.
2009-08-28 09:25:11 -07:00
Jean-Michel Trivi
a3046b6f7f Implement clean killing of the TTS service.
If files were being synthesized to while the service was being killed,
it would have left partially written files (with no header). This CL
checks if the service is rendering to a file at the time the service
is destroyed: if it is, it will stop the rendering and deletes the file.
2009-08-26 17:06:52 -07:00
Jean-Michel Trivi
69e67a3e2e Fix bug 2043140.
A race condition is encountered when an application invokes shutdown()
on its TextToSpeech object while is has speak() requests still running.
Since the TTS service destructor releases the synthesizer resources and
sets the corresponding synth reference to null, an NPE was observed.
The fix consists in catching NPEs whenever the sNativeSynth object is
accessed, and return the matching error for the call.
This change is a "low risk" version of the fix for bug 2025765i (same
issue) which was reverted because it was higher risk than this CL:
it affected the logic of each call to sNativeSynth. This CL only sets
an error code when an NPE is fired because sNativeSynth is null.
2009-08-11 15:09:45 -07:00
Jean-Michel Trivi
fbe89ec640 Revert "Fix bug 2025765."
This reverts commit 9ebb59b8aa75cab1e5bb53983893b579abb63edd.
2009-08-04 09:23:18 -07:00
Jean-Michel Trivi
9ebb59b8aa Fix bug 2025765.
Talkback produced a null pointer exception when being enabled and disabled
repeatedly due to a race condition between the onDestroy() of the service,
and the use of the service itself. The error occurs when one Talkback
thread initiates the destruction of the service (call to onDestroy()) when
it invokes shutdown() on its TextToSpeech instance (the client of the
service). At the same time, Talkback tries to say that "Accessibility" is
unchecked from another thread. During onDestroy(), the reference to the
TTS engine (sNativeSynth) is reset to null, which is used in the service
in speakInternalOnly(), and setLanguage().
The fix consists in the addition of a static variable that signals that
the service has entered onDestroy(). Once this flag is set, all method
invocations on sNativeSynth will be dismissed. Note that access to the
native resources used by sNativeSynth are synchronized at the native
layer, therefore preventing sNativeSynth.shutdown() to interfere with
a sNativeSynth.speak() call already underway.
2009-08-03 11:07:46 -07:00
Jean-Michel Trivi
ed06578edd Fix bug 2017664
Removed the TTS_ prefix in the TextToSpeech class to follow the standard naming convention.
Moved the TTS-related intents from the Intent class to TextToSpeech and TextToSpeech.Engine.
Renamed the TextToSpeech.Engine constants that are used as extras for the
  ACTION_TTS_CHECK_TTS_DATA intent to prefix them with EXTRA_.
Cleaned up the other TextToSpeech.Engine constant to remove superfluous mentions of
  "TTS" in the name.
2009-07-29 11:26:10 -07:00
Charles Chen
0dbc6a44bb Fixing bug #2008185 - problem with the TTS dropping
utterances under heavy load was caused by the speech
queue being locked. Switched to using a timeout with
tryLock so that the TTS service does not give up
immediately.
2009-07-27 14:09:58 -07:00
Jean-Michel Trivi
cee3bd4d68 Reset the speech synth singleton to null when the service is destroyed
so it can be recreated when the service is initialized.
In the interface with the native synthesizer library, close the lib
in the finalizer, delete the global ref to the SynthProxy java object.
2009-07-21 14:22:25 -07:00
Jean-Michel Trivi
a73d5cd055 Make sure the speech synthesizer proxy is a singleton in the TTS service. 2009-07-21 10:13:41 -07:00
Jean-Michel Trivi
5e11a6ad00 Prevent the setLanguage() method in TextToSpeech to change the language
for all current TextToSpeech instances by only caching the language
value so it is used with each subsequent utterance for this instance.
Synchronize calls to the engine around a global mutex since the engine
isn't thread-safe, except for the stop() call which is meant to interrupt
the synthesis loop.
2009-07-20 16:07:57 -07:00
Android (Google) Code Review
4b897aa99b Merge change 7829 into donut
* changes:
  Making sure that there are no calls made to the native TTS layer if the utterance is in the process of being canceled.
2009-07-17 21:39:26 -07:00
Charles Chen
b79370aad7 Making sure that there are no calls made to the native TTS
layer if the utterance is in the process of being canceled.
2009-07-17 20:57:21 -07:00
Jean-Michel Trivi
8b86da899a Remove obsolete playBuffer() method from the text-to-speech SynthProxy class. 2009-07-17 18:22:15 -07:00
Charles Chen
c231fd0fe7 Fixing a race condition that causes synthesis to not be aborted
even if stop is called.
2009-07-16 11:29:34 -07:00
Charles Chen
6f624239dc Fixing a bug in how stop works - keep stop from always stopping
the currently speaking item if that item does not belong to the
app that is trying to do the stop.

Also adds back the functionality of globally stopping speech that
was lost when utterance IDs were added (needed by screen reader).
2009-07-14 19:30:29 -07:00
Charles Chen
edb4fc3076 Cleaning up TtsService 2009-07-14 10:54:36 -07:00
Charles Chen
3ab2076d65 Implementing utterance ID callbacks for silence and pre-recorded files
(both generating and playing).
2009-07-13 21:21:01 -07:00
Charles Chen
78c9d0d2c5 Adding Utterance ID to the TtsService. 2009-07-13 17:46:19 -07:00
Jean-Michel Trivi
9440bce855 Propagate optional audio stream type to the creation of the audio resources
to enable the playback of TTS content on various stream types.
2009-07-13 11:34:30 -07:00
Charles Chen
630a8de44f Fixing TTS breakage. 2009-07-10 20:58:15 -07:00
Jean-Michel Trivi
d48ca22b9f Use the TTS queue constants in the TTS service as defined in the
TextToSpeech class.
2009-07-10 10:04:37 -07:00
Charles Chen
a9c5e4bf26 Adding tagging to utterances to track which app said what. 2009-07-10 09:43:03 -07:00
Charles Chen
be84e4134d Unbreaking the build. 2009-07-09 11:54:50 -07:00
Charles Chen
0a3d8744fe Adding a lock to stop so that stop will stop utterances
that are just starting up.
2009-07-09 09:51:33 -07:00
Charles Chen
b02ced7e45 Cleaning up logs.
Initializing SpeechItem.mText to "" instead of null to
prevent a null from accidentally being used when it is a
non-text utterance.
2009-07-07 14:57:16 -07:00
Jean-Michel Trivi
d478cf09df Use the current Locale as the default language when TTS settings are not
found, rather than a hardcoded value stored in TextToSpeech.Engine.
2009-07-06 18:02:08 -07:00
Charles Chen
52ae06521a Fixes a compatibility issue with users that have the old TTS
installed already.
2009-07-06 16:10:32 -07:00
Charles Chen
a3f89295ad Propagating the error codes through the TtsService 2009-07-06 14:14:52 -07:00
Charles Chen
35b86c273a Adding tts result codes. 2009-07-06 10:51:48 -07:00
Charles Chen
4bca97ecaf Removing IPA - IPA is already handled by the phoneme tag. 2009-07-02 17:21:22 -07:00
Charles Chen
ebb814bbae Fixing synth to file to use the speech queue. 2009-06-30 12:03:06 -07:00
Jean-Michel Trivi
bbd63cb285 Fix bug where the default TTS Service country is initialized to the default language. 2009-06-29 17:31:05 -07:00
Jean-Michel Trivi
ddb0a803fd Adding in TTS service support for language query and level of support. 2009-06-29 16:58:32 -07:00
Android (Google) Code Review
526355dea1 Merge change 5701 into donut
* changes:
  Expose in SynthProxy the query for the TTS supported and current language.
2009-06-29 16:09:44 -07:00
Jean-Michel Trivi
bee1c7e6a4 Expose in SynthProxy the query for the TTS supported and current language. 2009-06-29 16:07:17 -07:00
Charles Chen
03454f8932 Adding support for params. 2009-06-29 14:06:48 -07:00
Android (Google) Code Review
77cb40a0b0 Merge change 5447 into donut
* changes:
  Adding skeleton methods for IPA support.
2009-06-26 11:28:43 -07:00
Charles Chen
741c25b164 Adding skeleton methods for IPA support. 2009-06-26 10:14:44 -07:00
Jean-Michel Trivi
d6d03e05be Use the same interface in the TTS engine interface for setLanguage and loadLanguage.
Adding function to check the support level for a language in TTS engine interface.
2009-06-26 09:46:28 -07:00
Charles Chen
1aacdcfaa9 Adding splitting to the TTS to guard against extremely long strings. 2009-06-25 16:00:13 -07:00
Charles Chen
28dbae7df4 Using a sendBroadcast to notify interested parties of when
the TTS queue has finished processing.
2009-06-24 17:49:07 -07:00
Charles Chen
7af9e196a3 Fixing the synth function so that queue processing continues. 2009-06-24 13:31:18 -07:00
Jean-Michel Trivi
6a0e293c84 Fix bug in TTS service where the language setting was using the default language
when the setting wasn't enforced, and vice-versa.
Cleaning the log of the native TTS layer to use LOGV for verbose messages,
rather than LOGI.
2009-06-24 11:32:06 -07:00
Jean-Michel Trivi
2ea5349583 Adding support for pitch changes of the synthesized text in Text-To-Speech. 2009-06-23 15:26:57 -07:00
Jean-Michel Trivi
d146874d73 Grouping under TextToSpeech.Engine the constants to be used by
a TTS engine implementation or a settings application for default
values, and data integrity check return codes.
2009-06-18 14:46:25 -07:00
Jean-Michel Trivi
605a66bd56 In the TTS service, read the default TTS settings from Settings.Secure. 2009-06-17 17:59:50 -07:00
Jean-Michel Trivi
679d728f09 Using Locale to specify language and country for a TTS language to load,
rather than a String.
Cleanup in doc for TextToSpeech, and addition of queue mode constants.
2009-06-17 10:16:17 -07:00
Jean-Michel Trivi
b3c5a8785b Made the platform TTS service aware of the path for the default TTS library to load. 2009-06-10 18:38:50 -07:00