This ended up making the implementation a lot cleaner
as well. See the bug listed below for some background.
bug:4553470
Change-Id: If16476a57e389c2f9b228f6548e426642d292b49
There is no point loading a language that will never be used.
It is in fact harmful, because the engine might load it and
then receive a request for the default voice and have to load
the default voice again.
Change-Id: I8082f28d15b6e325d6a39d439b66753711a2c244
Now, SynthesisRequest.audioAvailable( ) will not block
until all data has been written to the audiotrack.
Change-Id: Ie24c0b6873ae44659e88646fb7ef821750dc314e
This is a new API for writing text-to-speech engines.
The existing API for apps that use TTS remains the same,
with some minor additions.
Change-Id: Id577db449ae0e5baec40621d4a08387dbd755342
(a) Don't check that the audiotrack is initialized (will
not be true in static mode until the first write call)
(b) Block until it completes playing.
Change-Id: I50eb6cece00f3d12f3b75102d62014c360ac0346
This adds two methods:
SynthesisRequest.getMaxBufferSize()
SynthesisRequest.completeAudioAvailable()
Change-Id: I1186eed45997ee9a7e51212c8d6706dd324ca949
This removes the old non-public C++ API for TTS
engines and replaces it with a Java API.
The new API is still @hidden, until it has been approved.
Bug: 4148636
Change-Id: I7614ff788e11f897e87052f684f1b4938d539fb7
This is for passing the http referer of a request, e.g., for speech
input from within a browser.
Bug: 4161306
Change-Id: I56fdb7466edd985aab6df8364be1f1619a11a00d
Pass speech recognizer confidence values in the SpeechRecognizer and
RecognizerIntent APIs through to the caller. This change defines new
API constants for keys to these values.
The corresponding change is being made to Google Voice Search, and should be
made to any other implementations.
Bug: 3267513
Bug: 4163206
Change-Id: I294553f2eb9eb3be21298b8434117c8c5309558d
This is just a code clean-up change. It should have no effects
on behavior.
- The exception clean-up code was copied in lots of places,
added a restart() method for it.
- Use Log.e to print exception stack trace instead of doing
it manually.
- Moved return statements outside finally-blocks. Having them
in the finally-block makes no difference, but can be misleading.
Also, Eclipse complains about it.
Change-Id: Ibfb18ca89d81d1fd8d212f29b6f8ab305b52ec49
The NB_CACHED_PARAMS is the number of cached parameters, not
the size of the array for cached parameters.
Change-Id: I3d3053bbf247f3f89ae1ea07a931d33df7857a7c
Bug #3458256
If an error occurs and simultaneously user cancels the recognition, here is what happens:
1. dispatchCancel() is called since the user requested cancel. It passes the first "if" successfully.
private void dispatchCancel(IRecognitionListener listener) {
if (mCurrentCallback == null) {
if (DBG) Log.d(TAG, "cancel called with no preceding startListening - ignoring");
} else if (mCurrentCallback.mListener.asBinder() != listener.asBinder()) {
Log.w(TAG, "cancel called by client who did not call startListening - ignoring");
} else { // the correct state
RecognitionService.this.onCancel(mCurrentCallback);
mCurrentCallback = null;
if (DBG) Log.d(TAG, "canceling - setting mCurrentCallback to null");
}
}
2. Error occurs in the app, which sets the mCurrentCallback to null:
public void error(int error) throws RemoteException {
mCurrentCallback = null;
mListener.onError(error);
}
3. the second "if" is reached in dispatchCancel()
4. boom
Change-Id: I54cdcc98b495d820a2caead1709d8dee968c461e
The creation of a TextToSpeech object causes the TTS service to
start, and the initialization listener to be called when the
service is connected. But the listener is never called when
the service binding failed to be notified of this error.
The fix consists in checking the result of the bind to service
operation, and notify the listener in case of an error.
More log was added in case speak() and synthesizeToFile() are
called but the service is not known to have started.
Change-Id: I7dcc1fa44be31fee3177ec6215fca3306377b934
This CL unhides two "keys" an application can use to specify for
an utterance its playback volume and pan. Those two new keys
use the same mechanism already in place for an application to
specify stream type and utterance ID.
Change-Id: I020363487d7a0f471fb8d3ed739c561d2ab4b0a9
Add two new parameters that are used when synthesizing text and
playing it back directly to control the volume and left-right
panning of the output.
Panning is applied using a balance law, which is not energy-preserving
but which doesn't lower the volume when not panning / panning to
center (legacy behavior).
Reduced amount of logs, and removed spoken text.
In TextToSpeech.java: added convenience method to handle the setting
of the cached synthesis parameters.
Change-Id: I235d3d3193283ccc1891e2065d43787e3f63304d
* commit '0655b31d758ce8fe054c98c6d288e424f2d273e2':
Unhide RecognizerResultsIntent. This API was reviewed for Froyo, but we didn't want to make it public then because it wasn't until our first Market release of Voice Search that the APIs would be in use by our app.
reviewed for Froyo, but we didn't want to make it
public then because it wasn't until our first
Market release of Voice Search that the APIs would
be in use by our app.
http://b/3135351
Change-Id: I49053717cac08e3976c22e3a105139b6755aadb8
avoid triggering any non-web-search actions from the speech recognizer
(such as Voice Actions in the Google implementation). The browser will set
this to true to avoid triggering non-web-search actions when speech
recognition is requested from the browser.
Change-Id: I9b410ef8696e12f22dbad325b367f0f187a2dce8
http://b/3289997http://b/3176717
interfere with one another.
Root cause was not caching all the params that were needed.
This change fixes that bug as well as related bugs for remembering
the default engine and for making sure that the right engine is
loaded when checking for language availability.
Change-Id: I2a76da8faec8112036e68d27539db444c53a1509
This fix is part of addressing bug #2548048
Making it possible to determine which TTS engine is currently set
as the default by the user.
Change-Id: Ifa422f43a33498b94d96811078c0794d64668357
bug fix for: http://b/issue?id=2522063
RecognitionManager does not throw an exception in startListening() was called without the preceding setListener()
Change-Id: I8e303d0c53c7593fbf1dc7033b2c0f82eebfb081
It is a prt of the following bug fix: http://b/issue?id=2478548
The CL adds the ability to pass HTTP headers to the Browser
Change-Id: Ibf0ad8f678fc5aeef4ac098e5dfbcaed9ada8600
This is the framework part, moving classes around so the framework
no longer needs to link to android-common. Makes some APIs public,
others that didn't need to be public are private in the framework,
some small things are copied.
* Allow activities satisfying RecognizerIntent.ACTION_WEB_SEARCH to
point to the class name of a broadcast receiver which returns details
about the voice search implementation in an ordered broadcast response.
Provide a convenience method for getting the intent to fire for this
info. This can be used to get the current language preference and the
list of supported languages, and is extensible for future uses.
* When creating a RecognitionManager, allow the caller to optionally specify
a specific component of a voice recognition service on the device that they
want to use. This way, an app can still use its own service through
RecognitionManager, even if it's not the one chosen the user in settings.