This changes makes the initial, default language set and
the #setLanguage call with the default language as input
exactly the same.
Previously, the requests made after the initial default language
set were missing the name of the default voice.
+ Some tests clean-up. Some of them fail due to issues with
Locale#toLanguageTag upper-casing the variant field.
Change-Id: I5470617007fe45462b7198bf62a03eb5fe47a590
Expose the value used by the framework to generate an audio
session ID when a value isn't known.
Rename allocateAudioSessionId() to generateAudioSessionId()
as this operation doesn't "allocate" anything, and there is
no allocated resource to free after this operation.
Bug 16401631
Change-Id: I7a7bc05b39ea0b024ff225254eb755a9c85a2ad9
Regressinon in the L, side effect of the rewrite. In pre-L android,
UtteranceProgressListener#onDone was called (but only if client
received UtteranceProgressListener#onStart for the utterance in progress)
after client called TextToSpeech#stop. This changeset reinstates
this behaviour.
+ Removed not used fallback callback
Bug: 16149006
Change-Id: I2eb5ede0abe6f5717b07f09adad861465575c238
Voices allow to expose multiple backends/voice packs for a single
Locale. This is an attempt to port this feature from V2 API.
Bug: 15834470
Change-Id: I0117de238cfcf028bcec5344b8d65c960b96b98c
This change allows TTS V2 API client applications to honor the
"default TTS locale" set by the user in the TTS settings.
Note that the TTS V1 API uses 3 character country/language codes
for locale encoding. It's the only system component that does
that. TTS V2 uses the standard, valid Locale objects. The default
TTS locale setting was stored as a 3 character locale string with
"-" as the separator.
This change switches the TTS locale setting format to the output of
Locale.toString() call (on a valid Locale object). Methods used for
reading this value can interpret both forms and try to return a valid
Locale object as an output.
Change-Id: Ice2e6c25a43eb9dd6e17d371ee582c2dae3329c9
TextToSpeech#isSpeaking queries TTS engine if it's
currently outputting any audio, it was present in the
TTS API V1.
Change-Id: Iee4a91976b9b80653811fb458ac48d75418752cf
After experimenting with the new TTS API I found out that receiving
ConnectionCallbacks#onEngineStatusChange and #onServiceDisconnected
callbacks on non-main thread are problematic. They are very rare and
overhead of dealing with them in separate thread is high - in most
cases user just wants to process those callbacks in the main thread
context. This change should make new API usage easier.
+ Fixed default values of speech speed in voices from v1->v2 wrapper.
Change-Id: I76d3b607b3b931b7eb10aa180775fd3607c43bd9
TTSEngines#isLocaleSetToDefaultForEngine allows the Settings application
to distinguish if the TTS engine locale is blank (set to follow the device
locale) or if it's set to the same value as the device locale.
Change-Id: I462584547d69c21cde4ac317c8a3b3bbc1680cae
While implementing the new TTS API, I found out that it's very difficult
to create an SynthesisRequestV2 instance for testing purposes - it's
a final class, with no publicly visible constructors.
Bug: 8259486
Change-Id: I88b84fd8ad1ac6960f3932863ca758657f9547ff
This change allows TTS clients to create (and use) classes derived from the
UtteranceId class. This allows to attach a custom data and methods that
can be reached later in callbacks that take the UtteranceId instance as
parameter.
Also, since we can't depend on the identityHashCode results being unique,
this change adds AtomicInteger to generate unique identifiers for UtteranceId
instances.
Bug: 8259486
Change-Id: Id1e9eabc890ec585a7f8570fd20e287dcda9a11d
For storing pointers, long is used in speech/srec classes,
as native pointers can be 64-bit.
Note corresponding JNI files are in the external/srec project
under srec_jni directory.
Change-Id: Iacd10840e81f5acc3eb202424f83b49ae4eb23ab
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Malformed locale objects will throw MissingResourceException
from getISO3Country() and getISO3Language() methods.
This change guard against the case where device default locale is
malformed and user tries to get TTS default locale (b/10814409)
and case where user tries to pass bad locale as argument to
TextToSpeech.getFeatures method (b/10494193).
Bug:11429552
Bug:10494193
Bug:10814409
Change-Id: Ie54d5d30bb042324da0c0d19b77c3a932c5642f7
(cherry picked from commit 58f1665372)
"Voice id" and "voice name" are both used to reference a voice in a
speech synthesis request. Voice id was a random integer, where
voice name is human readable string, that provides more debug
information and readability. Also, it's expected that voice name
will stay consistent, and won't change during the life of the speech
connection. Though, it may disappear.
Change-Id: I180296d413a18301cead1c8e3212de2bd0c7e32d
Much of existing API is reused (mostly on the service side). The new API
provides better support for network-based synthesis, defines explicit
synthesis fallback support, has better error handling, allows for multiple
different voices per locale, features enumeration and custom extensions
on a voice level and many more.
If a service does not provide a V2 implementation, a basic adapter
from V2 to existing V1 implementation is provided.
Bug: 8259486
Change-Id: I797b7fc054f11c9b0d930f4dea582e57596ea127
Malformed locale objects will throw MissingResourceException
from getISO3Country() and getISO3Language() methods.
This change guard against the case where device default locale is
malformed and user tries to get TTS default locale (b/10814409)
and case where user tries to pass bad locale as argument to
TextToSpeech.getFeatures method (b/10494193).
Bug:10494193,10814409
Change-Id: Ie54d5d30bb042324da0c0d19b77c3a932c5642f7
Makes it clear that the intent and service APIs are likely to stream
audio over the network and notes that impact this has on bandwidth and
battery life.
Also clarifies that the service API should not be used for continuous
recognition as a result. The intent API only runs when the activity is
in the foreground so I didn't mention continuous recognition for it.
Bug: 10674392
Change-Id: Ib5e0c16b3124f4b7d892ef5bd4167f23662d2ca3
- The HotwordRecognitionService is the only public component of
Hotword recognition allowing others to implement hotword recognition
- The client API is not available for use by all, hence the consts need
to be moved to the service class.
- Ideally we'd have retained the public consts in the client side API
(HotwordRecognizer)
Change-Id: Ibd0d1c0d0514ec4e8f7c284e22c5fa6b7ef3df26
- Make it more intuitive by enforcing callers to set a listener while
starting recognition
- Fix TODO to resolve the ComponentName if none is provided
- Unbind from the Hotword service if stopRecognition is called
- Get rid of the callback in onStopHotwordRecognition
Change-Id: I8edad0ef0f3671283aeb51eaed1d3b8dab01baa0
Added new field (+setter and getter) to SynthesisRequest with
Uid of a calling process. TTS service will be able to discover
packages names associated with caller using
PackageManager.getPackagesForUid.
This will allow to block buggy or poorly designed programs from
an unintentional DDoS attacks against TTS service.
Bug: 8625440
Change-Id: I5ac0ea191f952495c00301f17efdf28205353ae4