Skip to content
This repository has been archived by the owner on May 6, 2022. It is now read-only.

Releases: spokestack/spokestack-android

v11.0.1

25 Jan 13:43
2609177
Compare
Choose a tag to compare

Fixes

This release updates the receptive field for the keyword recognizer which, along with a new model architecture, improves both its accuracy and computational efficiency.

v11.0.0

17 Dec 19:02
43d40ce
Compare
Choose a tag to compare

Breaking changes

  • Spokestack.start() and stop() control all modules; pause() and resume() handle the speech pipeline

    The NLU module has been brought to parity with the other modules in that its services implement AutoCloseable and can release their internal resources (e.g., TensorFlow Lite interpreters). This, in turn, adjusted the higher-level Spokestack API: start and stop now manage resources for all registered modules (ASR, NLU, TTS). To temporarily suspend passive listening (so, for example, the app cannot receive a false positive wakeword activation during a TTS prompt), call pause; to resume, call resume. Spokestack calls pause and resume automatically in response to TTS events so you don't have to remember to do so.

  • TTS module no longer responds to lifecycle events

    Lifecycle responsiveness has been removed from the TTS module, as Spokestack is expected to be a long-lived component that survives Activity transitions. This allows TTS audio to continue playing even as the app transitions between Activitys but changes the builder API for the TTS module and Spokestack itself.

Features

  • Allow access to the current NLU service

    To match the other modules, NLUManager now provides access to its underlying NLUService via getNlu().

Fixes

  • Tighten task submission in TTS player

    Tasks submitted to the media player thread have been consolidated to avoid a potential race condition when attempting to play two TTS prompts in quick succession.

  • Timeout event when no keyword is recognized

    In order to match other speech recognizers, KeywordRecognizer has been adjusted to send a TIMEOUT event when no keyword is recognized after its activation limit.

v10.0.0

20 Nov 23:04
aa1d83b
Compare
Choose a tag to compare

Breaking changes

  • A refactor to the NLU module has changed the type of Spokestack's nlu field from TensorflowNLU to NLUManager. This allows for future expansion to the NLU module to support new providers, like ASR currently works. No new providers are included in this release, but custom implementations can be supplied at build time.
  • A draft dialogue management API is also included, and wired into the Spokestack setup class. The API is undocumented, and its use is optional, so it should be considered experimental for now.

Features

  • References to the Android Context and Lifecycle can now be updated by convenience methods on Spokestack. This is useful for multi-activity applications that need to adjust component lifecycles along with activity transitions.

Fixes

  • Runtime addition/removal of a TTS listener is now propagated to the TTS output class so that the intended objects receive playback events.
  • Fixed a potential NPE in SpokestackTTSOutput that occurred when it was released before any synthesized speech had been played.

v9.1.0

12 Oct 18:34
d393fc7
Compare
Choose a tag to compare

Features

  • clearer SpokestackAdapter method names
    We've added module-specific listener method names so it's easier to tell what you're overriding in your listeners

Fixes

  • allow clients to remove event listeners
    Previously, only speech pipeline listeners could be removed, which could lead to a memory leak if a multi-activity application registered Activity classes as listeners, as they would not be garbage collected.

v9.0.0

06 Oct 20:38
a358e25
Compare
Choose a tag to compare

This release introduces a turn-key setup wrapper (the Spokestack) class used to build and initialize all Spokestack modules at once. Events can be consumed via the unified SpokestackAdapter interface or old-style listeners attached to the individual modules at build time. See the documentation for more details.

Breaking changes

  • ASR activation property names have been reverted from active-(min|max) to wake-active-(min|max) to allow the React Native library to set them properly for both platforms.

Fixes

  • Don't send empty ASR transcripts (#107)
    • If an ASR returns the empty string as either a partial or final result, it will not be reported to the client.
  • Force pipeline stages to reset on deactivate
    • This allows AndroidSpeechRecognizer to be properly stopped when deactivate() is called on the speech pipeline.
  • Send timeout events for empty transcripts
    • If an ASR returns the empty string as a final result, it will be reported to the client as a timeout.
  • Don't send irrelevant playback events
    • PLAYBACK_COMPLETE events were being dispatched from the audio player for audio events unrelated to Spokestack TTS, such as when the Assistant activation beep was complete.

v8.1.0

20 Aug 20:13
cbefa46
Compare
Choose a tag to compare

Features

This release includes the new KeywordRecognizer component, which uses TensorFlow Lite models similar to the wakeword models but designed for multiclass detection. KeywordRecognizer is capable of serving as a lightweight on-device ASR for a limited set of commands.

Fixes

Errors reading from the device microphone now stop the speech pipeline instead of attempting to read again on the next dispatch loop. This prevents error spam in host apps, but also means that the app will have to manually call start on a pipeline that has experienced such an error.

v8.0.2

17 Aug 17:42
6915811
Compare
Choose a tag to compare

This fixes an issue with AndroidSpeechRecognizer where it was possible to stop the speech pipeline without freeing the speech context, which made wakeword and ASR inoperable on a pipeline restart.

v8.0.1

13 Aug 14:41
eb90db6
Compare
Choose a tag to compare

This release addresses an error that could be reached when resetting or closing AndroidSpeechRecognizer without first activating it.

v8.0.0

11 Aug 14:35
f2b82d0
Compare
Choose a tag to compare

This release resolves issues with stale state left over after Spokestack regains control of the microphone from a component that previously had it. It's a major release because the fix required adding a new method to the SpeechProcessor interface, so any custom implementations will also need to include this method.

v7.0.2

10 Aug 15:25
1b35a0e
Compare
Choose a tag to compare

This release addresses an issue with control flow when using the AndroidSpeechRecognizer. Programmatic reactivation of the pipeline was occasionally being blocked due to internal management of the microphone; this should no longer happen.