Commit Graph

250 Commits

Author SHA1 Message Date
Przemyslaw Szczepaniak
fd80746bb9 Set the TTS voice name for the default language.
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
2014-08-05 14:50:34 +01:00
Jean-Michel Trivi
289cc8e887 API for audio session ID generation
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
2014-07-20 11:25:48 -07:00
Przemyslaw Szczepaniak
672695e423 Add AudioAttributes support in the TTS.
Bug: 16259299
Change-Id: I53f4f7a2b9a3b9a422affaf6abe4aca258e67d7f
2014-07-17 13:19:39 +01:00
Przemyslaw Szczepaniak
cafd15216e Fix TTS regression, TTS#stop can result in #onDone callback.
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
2014-07-10 14:32:31 +00:00
Niels Egberts
34d4ac88f7 Remove Markup and Utterance classes.
Markup is replaced by TtsSpan, and the Utterance class will be replaced
by TtsSpanBuilder.

Change-Id: I443786681f065ad8458fc05825de3ef182db8062
2014-07-08 14:53:35 +01:00
Przemyslaw Szczepaniak
ad6df74ada Add support for voices in TTS API.
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
2014-07-04 11:28:06 +01:00
Niels Egberts
f8fd342091 First argument of playSilence is incorrect in javaDoc.
Change-Id: Icc059471e61fb6154108b74ea45cb06554d80631
2014-07-02 16:21:20 +00:00
Niels Egberts
795d777ee1 Forgot to deprecate a method in current.txt before merging earlier change.
Also includes a comment fix and line size changes in TextToSpeech.java.

Change-Id: Ia5842b694bca6cd9cae035164ffc605451e72d8b
2014-07-02 16:09:54 +00:00
Niels Egberts
df7deefe8e Support for CharSequences in the V1 API.
Two newly deprecated methods:
  - TextToSpeech.speak (over TextToSpeech.speak with mandatory utteranceId)
  - SynthesisRequest.getText (over SynthesisRequest.getCharSequenceText)

Change-Id: I8a75ed335c91074c72d6ef374ff8b9c79a7c208d
2014-07-02 15:23:33 +00:00
Przemyslaw Szczepaniak
5cbf17ca05 Add support for audio session id in the TTS
+ #playEarcon & #queueAudio respects request Volume/Pan settings.

Bug:15432115
Change-Id: I136afef77afbc56c34810c64123f7be4b431d378
2014-07-02 11:28:24 +01:00
Przemyslaw Szczepaniak
fc4b289037 Remove TextToSpeechClient API.
Removed all of TTS V2 api with exception of error codes.

Bug: 15834470
Change-Id: I9d9d2aad01811af9b86bf7a3fd018a8d4e5c2f33
2014-06-30 11:25:12 +01:00
Przemyslaw Szczepaniak
6dfa6e2a9b Fix typo and broken sdk build.
Change-Id: Icd1641955d1ca88396219db05312a4a9fd77ea80
2014-06-13 13:43:26 +01:00
Przemyslaw Szczepaniak
e31ab2d8fc Merge "Expose "default tts locale" to the TTS V2 API." 2014-06-11 15:57:38 +00:00
Przemyslaw Szczepaniak
1b5637ee32 Expose "default tts locale" to the TTS V2 API.
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
2014-06-11 13:49:48 +01:00
Przemyslaw Szczepaniak
d3919a318a Add missing copyright headers in speech.tts
Change-Id: Icf1c3cf71ac45cb00606c8034af375e657c31ea5
2014-06-12 12:39:46 +00:00
Przemyslaw Szczepaniak
e3abed72d6 Add missing #isSpeaking to TTS API V2
TextToSpeech#isSpeaking queries TTS engine if it's
currently outputting any audio, it was present in the
TTS API V1.

Change-Id: Iee4a91976b9b80653811fb458ac48d75418752cf
2014-06-04 09:16:55 +00:00
Niels Egberts
a6cc9b85ad Markup support for framework
Change-Id: Ia5ad6cff7593c295944a90775a1b061c95f5cc3f
2014-05-30 13:48:09 +00:00
Przemyslaw Szczepaniak
067a21b246 TTS Connection callbacks are called on main thread.
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
2014-05-16 16:47:46 +01:00
Przemyslaw Szczepaniak
de1b5ae7a7 Add (hidden) TTSEngines#isLocaleSetToDefaultForEngine method.
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
2014-05-12 16:07:31 +01:00
Glenn Kasten
34a37bdebb Add AudioFormat.getBytesPerSample and use it
Change-Id: I90a40987ea99006af4a6e31136078c04976eb54d
2014-05-06 09:11:52 -07:00
Przemyslaw Szczepaniak
5decae39b6 Remove "final" from TextToSpeechClient class.
It hinders attempts to mock the TextToSpeechClient
class in tests.

+ javadoc typo fix

Change-Id: I5b4590824d7e89b58451bdde457a627786333373
2014-04-10 16:17:09 +00:00
Przemyslaw Szczepaniak
a1788af344 Documentation update for TextToSpeech#getFeatures
Added note that it may return null in case of error.

Bug: 12323454
Change-Id: I246f7e894c5e8a6421bdd72c7623c72e8a13fc3a
2014-03-24 15:07:03 +00:00
Przemyslaw Szczepaniak
952c0fd7bc Do not reset language in case of the TTS service reconnect.
Bug:12428804
Change-Id: I0b1b1274c47edd28eae1701808d50aeb6c36324c
2014-03-21 11:21:07 +00:00
Mark Renouf
b37866db46 Make InternalListener static to avoid referencing SpeechRecognizer.
Change-Id: I03bc1a5f5188551608395f3468aa69e622601820
2014-03-17 18:15:51 -04:00
Przemyslaw Szczepaniak
8399aae0a0 Add public SynthesisRequestV2 constructor.
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
2014-01-30 13:27:00 +00:00
Przemyslaw Szczepaniak
1ca1d88658 Allow clients to extend the TTS UtteranceId class.
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
2014-01-30 10:41:26 +00:00
Elliott Hughes
e974f9b359 am 8bb8caa2: am c12410f1: am c3be4ba3: am 12377887: am 991e9818: Merge "AArch64: Use long for pointers in speech/srec classes"
* commit '8bb8caa2b1c38bdc273082b710e2d089889aea5a':
  AArch64: Use long for pointers in speech/srec classes
2014-01-16 15:47:19 +00:00
Ashok Bhat
bdebe1ad95 AArch64: Use long for pointers in speech/srec classes
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>
2014-01-15 17:38:06 -08:00
John Spurlock
6090995951 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Przemyslaw Szczepaniak
ca4f1fc57c Catch MissingResourceException caused by bad locale in TTS.
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)
2013-10-30 10:21:34 +00:00
Siva Velusamy
d41b852f92 Fix Javadoc error
This fixes an error introduced with I180296d413a18301cead1c8e3212de2bd0c7e32d

Change-Id: I06512a0fb388738fae5bba5540189095f23f1e2a
2013-10-29 14:11:11 -07:00
Przemyslaw Szczepaniak
97cd647fcd TTS API: Replace "voice id" with "voice name"
"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
2013-10-29 10:56:06 +00:00
Nick Kralevich
eb337054ed fix javadocs.
Change-Id: Ie008e28db0d3de22c933b4ef1ccbd3f082010a77
2013-10-24 16:22:12 -07:00
Przemyslaw Szczepaniak
90d15d2371 Add new TTS API.
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
2013-10-24 13:42:15 +01:00
Przemyslaw Szczepaniak
58f1665372 Catch MissingResourceException caused by bad locale in TTS.
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
2013-09-25 10:01:27 +00:00
Sandeep Siddhartha
f702286c94 Merge "Remove HotwordRecognition APIs" into klp-dev 2013-09-11 19:01:51 +00:00
Sandeep Siddhartha
65a6ba3478 Remove HotwordRecognition APIs
- and its usage from Keyguard

Bug: 10708010
Change-Id: Ic4a695a1d0e9312706a3b4ff01e59e2567b6ad9c
2013-09-11 11:01:13 -07:00
Marc Wilson
2921cee304 Update documentation for speech APIs.
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
2013-09-10 15:41:47 +01:00
Sandeep Siddhartha
bc916b221a Fix checkbuild error due to javadoc reference to hidden class
Change-Id: I128b8a6dd725468d0c9503b8229f8939fddb51bc
2013-09-10 02:17:20 +00:00
Sandeep Siddhartha
1f0ef2cc33 Move public consts to HotwordRecognitionService
- 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
2013-09-06 18:12:11 -07:00
Sandeep Siddhartha
05203c1e4b Fixing build break
Change-Id: I89d1416b356423ee795f01b4c3200bcaa3ec8389
2013-09-06 18:04:48 -07:00
Sandeep Siddhartha
c73c178374 Add permission checks and unhide the Hotword recognition APIs
- Also tweak the API a little to send an intent on hotword being
  recognized.

Change-Id: I8a3fedaec4e1db595ed058089734d25c7957111e
2013-09-06 12:34:03 -07:00
Przemyslaw Szczepaniak
61dda19859 Fix SynthesisRequest javadoc
Bug: 10548784
Change-Id: I76a89bb9accdeee00c60a668adbdd789b995cd92
2013-09-02 16:41:05 +01:00
Sandeep Siddhartha
823393477b Tweak the HotwordRecognizer API
- 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
2013-08-28 16:27:36 -07:00
Sandeep Siddhartha
407d794a9d Touch up the Hotword API
- Few comments got missed from the last review

Change-Id: I933912c51794875be5d129351d4f06bc040537a6
2013-08-26 18:01:34 -07:00
Sandeep Siddhartha
637cc45809 Add Service API to perform Hotword recognition
Change-Id: I855330b255a12cce309aa11e0b7cde5b8e061043
2013-08-26 17:32:16 -07:00
Elliott Hughes
89a8250e24 am 710f3e2c: am 60ae2617: Merge "If frameworks wants ASCII casing, it should explicity ask for it."
* commit '710f3e2cc6bc2cdc2f2cddb2190823ea31efd52a':
  If frameworks wants ASCII casing, it should explicity ask for it.
2013-08-02 17:58:33 -07:00
Elliott Hughes
cb64d43062 If frameworks wants ASCII casing, it should explicity ask for it.
http://elliotth.blogspot.com/2012/01/beware-convenience-methods.html

Bug: https://code.google.com/p/android/issues/detail?id=58359
Change-Id: Iaab02e718a7be7bda22e626dca05d79bfd2a8fc4
2013-08-02 15:12:32 -07:00
Przemyslaw Szczepaniak
e86a936afd Document the case where TTS onInit callback is called in ctor.
Bug: 8743649
Change-Id: Ibf6002f93af9d19d809679852310561e69d57c1e
2013-06-20 08:58:41 +00:00
Przemyslaw Szczepaniak
653278341d Allow TTS service to identify caller.
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
2013-06-05 14:44:52 +00:00