NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #504 most downloaded on pub.dev
A Flutter plugin that exposes device specific speech to text recognition capability.
Last release 13 days ago
25 Sep 2026
Release timing varies
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 57 of 59 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
84 releases · first in 2019
Adds native handling for the has_on_device_support platform method on iOS, macOS and Android, so callers can check whether the device can recognize sp
has_on_device_support platform method on iOS,
macOS and Android, so callers can check whether the device can recognize
speech offline before requesting onDevice recognition. Requires
speech_to_text_platform_interface 2.5.0.listen continuing after the unsupported-onDevice error, which
left the microphone active with no listener and blocked all later listen
calls for the life of the process.SpeechToText.iosVoiceProcessing config option enables the iOS/macOS voice
processing I/O unit, applying acoustic echo cancellation so audio the device is
playing is removed from the captured signal. Useful when the app speaks (TTS)
while listening. Off by default. See #591.contextualPhrases to SpeechListenOptions to bias recognition toward
domain-specific vocabulary or proper nouns. Maps to
SFSpeechRecognitionRequest.contextualStrings on iOS and
RecognizerIntent.EXTRA_BIASING_STRINGS on Android 13+ (silently ignored on
earlier Android versions and on web).cancel() now destroys and recreates the SpeechRecognizer, so a
listen() right after it is no longer rejected with error_client and the
cancelled session's late error no longer reaches the new session.preserveExistingAudioSession SpeechListenOptions,
defaults to true. When enabled AND an existing .playback,
.playAndRecord, or .multiRoute AVAudioSession was active before
recognition, the plugin now restores that configuration on stop and
leaves the session ACTIVE instead of deactivating it. Fixes a "goes
silent after first STT turn" regression for apps running speech
recognition alongside WebRTC / LiveKit remote-audio playback — because
AVAudioSession is process-wide, the previous unconditional
setActive(false) on stop was tearing the peer's playout unit down
along with recognition. Standalone STT apps (no other media session in
play) see identical behavior with the default: their pre-recognition
category is typically .soloAmbient, which isn't in the preserve list,
so the code falls through to the historical deactivation path. Callers
who explicitly want the pre-existing unconditional deactivation can pass
preserveExistingAudioSession: false. See
csdcorp/speech_to_text#479 and livekit/client-sdk-flutter#996.One column per quarter.
Adds native handling for the has_on_device_support platform method on iOS, macOS and Android, so callers can check whether the device can recognize sp
has_on_device_support platform method on iOS,
macOS and Android, so callers can check whether the device can recognize
speech offline before requesting onDevice recognition. Requires
speech_to_text_platform_interface 2.5.0.listen continuing after the unsupported-onDevice error, which
left the microphone active with no listener and blocked all later listen
calls for the life of the process.SpeechToText.iosVoiceProcessing config option enables the iOS/macOS voice
processing I/O unit, applying acoustic echo cancellation so audio the device is
playing is removed from the captured signal. Useful when the app speaks (TTS)
while listening. Off by default. See #591.contextualPhrases to SpeechListenOptions to bias recognition toward
domain-specific vocabulary or proper nouns. Maps to
SFSpeechRecognitionRequest.contextualStrings on iOS and
RecognizerIntent.EXTRA_BIASING_STRINGS on Android 13+ (silently ignored on
earlier Android versions and on web).cancel() now destroys and recreates the SpeechRecognizer, so a
listen() right after it is no longer rejected with error_client and the
cancelled session's late error no longer reaches the new session.Adds native handling for the has_on_device_support platform method on iOS, macOS and Android, so callers can check whether the device can recognize sp
has_on_device_support platform method on iOS,
macOS and Android, so callers can check whether the device can recognize
speech offline before requesting onDevice recognition. Requires
speech_to_text_platform_interface 2.5.0.listen continuing after the unsupported-onDevice error, which
left the microphone active with no listener and blocked all later listen
calls for the life of the process.SpeechToText.iosVoiceProcessing config option enables the iOS/macOS voice
processing I/O unit, applying acoustic echo cancellation so audio the device is
playing is removed from the captured signal. Useful when the app speaks (TTS)
while listening. Off by default. See #591.contextualPhrases to SpeechListenOptions to bias recognition toward
domain-specific vocabulary or proper nouns. Maps to
SFSpeechRecognitionRequest.contextualStrings on iOS and
RecognizerIntent.EXTRA_BIASING_STRINGS on Android 13+ (silently ignored on
earlier Android versions and on web).Adds native handling for the has_on_device_support platform method on iOS, macOS and Android, so callers can check whether the device can recognize sp
has_on_device_support platform method on iOS,
macOS and Android, so callers can check whether the device can recognize
speech offline before requesting onDevice recognition. Requires
speech_to_text_platform_interface 2.5.0.listen continuing after the unsupported-onDevice error, which
left the microphone active with no listener and blocked all later listen
calls for the life of the process.SpeechToText.iosVoiceProcessing config option enables the iOS/macOS voice
processing I/O unit, applying acoustic echo cancellation so audio the device is
playing is removed from the captured signal. Useful when the app speaks (TTS)
while listening. Off by default. See #591.Updates minimum supported SDK version to Flutter 3.44/Dart 3.12.
Updates minimum supported SDK version to Flutter 3.44/Dart 3.12.
Android now respects the pauseFor value
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Partial Windows speech support thanks to @asherchok for the PR. This is the first draft. version of Windows support and is not yet working properly. H
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Updated to latest build configuration for Android
Nothing published for this version
support for web search recognition type on Android thanks to @vongrad for the PR
Nothing published for this version
Nothing published for this version
Nothing published for this version
Remove support for deprecated v1 Android registration #545
Nothing published for this version
Nothing published for this version
Nothing published for this version
on iOS now mixes audio with other uses to allow multiple audio plugins to coexist
More detailed error returns on iOS
Some of the separate parameters have been deprecated as a result. See the listen method for documentation.
listen now has a new SpeechListenOptions listenOptions parameter to specify the recognizer
options for the listen session. Some of the separate parameters have been deprecated as a
result. See the listen method for documentation.SpeechListenOptions.enableHapticFeedback is a new option which allows haptic feedback during
speech recognition on iOS. Usually haptics are disabled to avoid interfering with the microphone.SpeechListenOptions.autoPunctuation is a new option which turns on automatic punction inference
during speech recognition on iOS.Nothing published for this version
Add setPauseFor method for late setup by @JekaNS in #403
Full Changelog: v6.2.0...v6.5.1
SpeechToText.webDoNotAggregate option for use in the option parameter of the initialize method. This can be used to change the behaviour on some brows
SpeechToText.webDoNotAggregate option for use in the option
parameter of the initialize method. This can be used to change the
behaviour on some browsers that implement the speech API differently.
Test the user agent to decided whether to set this option. Currently
it seems to be required on mobile Android to prevent duplicate results.Removed incorrect MODIFY_PHONE_STATE permission from Android manifest
Fix web handling of alternates and multiple phrases was incorrect. Before this change multiple phrases were being seen as alternates. This properly co
Fix web handling of alternates and multiple phrases was incorrect. Before this change multiple phrases were being seen as alternates. This properly combines those phrases into a single set of recognized words and produces alternates as appropriate.
Android 33+ now returns a valid list from locales. It returns the supported on device
languages. This is (probably) smaller than the full list of online languages but better than
the current list that only has the default language in it. It also seems to be the only
option that's available.
New changePauseFor method allows the pause duration to be modified during a listen session.
changePauseFor method allows the pause duration to be modified during a
listen session.Upgrades and fixes for Flutter 3.0
listen call.Nothing published for this version
Updated to the latest Kotlin version to meet newer build requirements
Now has minimal support for Mac apps where it will always report speech as unavailable. This allows the plugin to be used in apps where speech is an o
Bluetooth permission not granted no longer crashes on Android
Rejecting Bluetooth permission no longer blocks subsequent recognition using non-bluetooth inputs.
initialize method on the SpeechToTextProvider adds the finalTimeout and options parameters that match the same parameters on SpeechToText
initialize method on the SpeechToTextProvider adds the finalTimeout and
options parameters that match the same parameters on SpeechToTextpauseFor and waitFor parametersnew Android option androidNoBluetooth can be used in initialize to disable Bluetooth support on Android devices which removes the need for Bluetooth p
androidNoBluetooth can be used in initialize to disable Bluetooth support
on Android devices which removes the need for Bluetooth permission.Now asks for Bluetooth permission on SDK 31 and above. When upgrading an already installed app the permission will not be requested. Users will have t
Android permission documentation
Support for bluetooth headsets in Android
Documentation improvements for listen parameters
listen parameterslisten call…error code is visible. This is a potentially breaking change if you behaviour for the error_unkown value.
compileSdkVersion 31 to build, check your build.gradleerror_unknown return to error_unknown ({error_code}) so that the
native Android error code is visible. This is a potentially breaking change if you
behaviour for the error_unkown value.error_language_not_supportederror_language_unavailableerror_server_disconnectederror_too_many_requestsFix for Android compile issue on latest SDK #259
The example app now supports Web as a run target
done condition better, especially in case of erroronStatus now receives the new done status after all listening is complete. This is a potentially breaking change as it adds a new status to handle.
onStatus now receives the new done status after all listening is complete. This is a potentially
breaking change as it adds a new status to handle.initialize and hasPermission now checks if speech is supported on webnot listening status sent on iOShandle deprecation of setMockMethodHandler #229
setMockMethodHandler #229minor code format issue that lost me 10 points, this shall not stand!
Flutter 2.0 / Dart 2.12 null safety features are now the main release
systemLocale now reports the device locale rather than the app locale. Previously it was constrained to
only be one of the localized languages of the application. #200Web support has changed to use the Flutter class definitions and now works in release mode
pauseFor and listenFor accuracy improvedNew property finalTimeout on the initialize method to set how long the plugin will wait for a final result from the device before manuafacturing one.
finalTimeout on the initialize method to set how long the plugin will wait for a final result
from the device before manuafacturing one. This used to be a pre-defined value of 100 ms in earlier releases. The
default is now 2 seconds.Now supports Flutter 2.0 / Dart 2.12 null safety features.
New property finalTimeout on the initialize method to set how long the plugin will wait for a final result from the device before manuafacturing one.
finalTimeout on the initialize method to set how long the plugin will wait for a final result
from the device before manuafacturing one. This used to be a pre-defined value of 100 ms in earlier releases. The
default is now 2 seconds.now compatible with Android SDK 30
initialize now supports the options parameter to supply platform specific options during initialization.SpeechToText.androidAlwaysStop supported as an option. Forces the plugin to use the speech recognizer stop
method even on SDK versions where that might fail. See https://github.com/csdcorp/speech_to_text/issues/150SpeechToText.androidIntentLookup looks up the intent name instead of using the default. This can work around
some issues with security exceptions when trying to use the default. See
https://github.com/csdcorp/speech_to_text/issues/153locales callYour coding agent can read these notes before it upgrades. Set up the MCP server →