Releases: spokestack/spokestack-android
v7.0.1
This is a patch release created because some files from 7.0.0 failed to deploy to JCenter. No code has changed.
v7.0.0
Breaking changes
Calling start()
on a running SpeechPipeline
no longer throws an exception. This should only be an issue for clients that were relying on the error, which is inadvisable.
Features
- Expose Spokestack NLU slot types
Not all NLUs parse slots into types, but Spokestack's NLU does, and those types need to be exposed to other libraries that wrap spokestack-android (such as react-native-spokestack). - Propagate partial ASR results to client
ASR providers that offer the ability to receive partial results (all current providers do) now send those results to speech listeners via the newPARTIAL_RECOGNIZE
event. The text of the result is available as theSpeechContext
'stranscript
.
Fixes
- Re-authorize Spokestack ASR socket
For two back-to-back utterances submitted to the Spokestack ASR, the first frame of the second request was resulting in an error due to a missing handshake. - Workaround for Android ASR timeouts
Android's built-inSpeechRecognizer
has been returningNO_MATCH
errors more than it used to, notably in cases where it used to sendSPEECH_TIMEOUT
. In response, we've temporarily remappedNO_MATCH
to fire a timeout event to speech listeners instead of an error.
v6.0.0
Note The only reason this is a major release is the new annotations (described below). No breaking changes to actual library features are expected
Features
- Spokestack cloud-based ASR provider
Spokestack credentials can now be used to access a cloud-based ASR independent from Google and Microsoft. Pipeline profiles that use this new component are also included. - Annotation updates for IDE convenience
Parameters for speech recognition, NLU, and TTS events have been annotated with@NonNull
to enable cleaner client code. The downside is that the compiler/Android Studio will now throw errors for any Kotlin event listener methods marked as overrides that mark these parameters as optional.
Fixes
- Remove preference for offline Android ASR
The Android ASR now throws an error if the caller indicates that the offline model should be used. This flag has been removed from Spokestack's usage of the on-device Android ASR as a temporary fix.
v5.6.0
Features
- Allow TTS playback to be stopped
TheTTSManager.stopPlayback()
method will stop playback of any currently playing synthesis result and clear any queued results. This is useful if you want to allow the user to interrupt system speech and not have queued speech resume playback when the ASR request ends.
Fixes
-
Microphone sharing for Android ASR (#53)
This addresses an issue with Spokestack sharing the microphone with platform-suppliedSpeechRecognizer
instances.AndroidSpeechRecognizer
and associated pipeline profiles now have much broader device compatibility. -
Allow i_* tag series to be parsed as slots
NLU results were previously dependent on the model returning strictly valid IOB tag sequences. This has been relaxed to allow either ab_
ori_
tag to mark the beginning of a slot.
v5.5.0
Features
- new TTS event for playback completion
ThePLAYBACK_COMPLETE
notifies listeners when the media player has finished playing TTS prompts so that ASR can be reactivated if desired.
Fixes
- (NLU) If a slot value recognized in an utterance is not valid according to the model metadata, a
Slot
with anull
value will be returned in order to avoid failing the entire classification with an exception.
v5.4.0
Features
Slot output changes:
- Slots declared by an intent but not tagged by the model are returned to the caller in the output with a
null
value - Slots not declared by an intent but tagged by the model do not cause an error and are not returned to the caller
Fixes
Removed references to a deprecated configuration parameter for the NLU model.
v5.3.0
Features
- Faster first classification via the NLU model
Fixes
- TTS errors, both GraphQL and HTTP, are now surfaced to the client as
ERROR
events; these were previously being swallowed by the library.
v5.2.0
Features
- Return unknown slots as raw values
- If the NLU model tags a slot not associated with the predicted intent, that slot's value will be returned as a String in the
NLUResult
's slot map instead of causing an error.
- If the NLU model tags a slot not associated with the predicted intent, that slot's value will be returned as a String in the
- Support new slot features
- Newer models include intent-level implicit slots and a
capture_name
field that changes the slot's return name; these are now supported by the client library.
- Newer models include intent-level implicit slots and a
Fixes
- Allow slot tags to be discontinuous
- Separate spans of "b_
slot_name
" tags will now be concatenated instead of dropping all tokens but the last one
- Separate spans of "b_
- Trim punctuation for slot value extraction
- Slots recognized at the end of an input string that contains punctuation will no longer cause an error. As a consequence, both leading and trailing punctuation are removed from the slot value before parsing, so such punctuation is invalid in training data for the slot values.
v5.1.0
Features
- On-device NLU via TensorFlow Lite and BERT-based custom models
Fixes
- Declare a
minSdkVersion
andtargetSdkVersion
in the manifest to avoid requesting suspicious-looking permissions by default
v5.0.0
Breaking changes
- Turn activation timeout into a component
- This removes the activation timeout for wakeword activation and changes the names of the properties used to control it
Features
- Azure Speech Service ASR
- Speech Markdown support in TTS
SpeechPipeline.Builder
profiles
Fixes
- Set default
vad-fall-delay
to 500ms - Simple ProGuard rules to avoid Spokestack classes being removed by the tool.