NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3787 most downloaded on pub.dev
VAD is a cross-platform Voice Activity Detection system, allowing Flutter applications to seamlessly handle various VAD events using Silero VAD v4/v5 models.
Last release 4 months ago
18 May 2026
Ships fairly regularly
a new release about every 4 months
Nearly every release is documented
notes for 9 of 9 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
9 releases · first in 2024
One column per month.
No breaking changes — onLog is optional and defaults to current behavior ( print /logcat).
Adds an onLog callback to VadHandler.create for routing the package's production log lines into your app's crash reporter (Crashlytics, Sentry, Bugsnag, etc.), plus an always-on breadcrumb logged immediately before each ONNX
Runtime session creation on native platforms. Useful for diagnosing native crashes inside libonnxruntime.so on low-end Android devices.
Highlights:
VadLogCallback? onLog parameter to VadHandler.create and matching VadLogCallback typedef exported from package:vad/vad.dartVadModel: creating OrtSession (model=... bytes=... sampleRate=... os=... osVersion=...) breadcrumb before each native session creation — the last line in logcat before any crash inside libonnxruntime.soonLog when set: session-creation errors (native + web), inference errors, frame-processing errors, audio-stream and microphone-permission failuresadb logcat capture instructions and a Crashlytics wiring exampleNo breaking changes — onLog is optional and defaults to current behavior (print/logcat).
Full Changelog:
See CHANGELOG.md
onLog callback to VadHandler.create for routing production log lines to consumer-side telemetry (Crashlytics, Sentry, Bugsnag, etc.) without zone or debugPrint overrides
VadLogCallback? onLog parameter to VadHandler.createVadLogCallback typedef (void Function(String message)) exported from package:vad/vad.dartonLog through VadIterator.create → VadInference.create → native/web inference factories → Silero v4/v5 modelsonLog is null, log lines continue to go to print/logcat as before. Verbose if (isDebug) print(...) state-transition logs are intentionally not routed through the callbackVadModel: creating OrtSession (model=... path=... bytes=... sampleRate=... intraOp=... interOp=... os=... osVersion=...) from both SileroV4Model.create and SileroV5Model.createlibonnxruntime.so, so crash reports always carry the context needed to diagnose device-specific failures (especially on low-end 32-bit armeabi-v7a Android devices)onLog parameter on VadHandler.createadb logcat capture instructions and a Crashlytics/Sentry/Bugsnag wiring example for onLogThis is a patch release to meet pub.dev static analysis requirements.
This is a patch release to meet pub.dev static analysis requirements.
Changes:
No functional changes from v0.0.7.
Full Changelog:
See CHANGELOG.md
Major Update: Android 16KB Page Size Support & Custom Audio Streams
Highlights:
Breaking Changes:
'legacy' to 'v4'onEmitChunk stream type changed to include isFinal flagFull Changelog:
For detailed changes, see CHANGELOG.md
libonnxruntime.so, libonnxruntime4j_jni.so) are now properly aligned for 16KB page sizes@keyurmaru/vad to host ONNX model files via jsDelivr CDNbaseAssetPath and onnxWASMBasePath parameters to default to CDN URLs (can be overridden for offline/self-hosted use)lib/assets directory and its contentsbaseAssetPath parameter in startListening()model: 'legacy' to model: 'v4' in startListening() callsVadHandlerWeb, VadHandlerNonWeb, VadIteratorWeb, VadIteratorNonWeb)VadHandlerBase, VadIteratorBase)VadInference abstraction layer as platform split pointrecord package for cross-platform audio capture, replacing custom web audio implementationRecordingModel enum to VadModel in example apponnxruntime package dependency with direct FFI-based implementationffigenOrtEnv, OrtSession, OrtValue)OrtIsolateSession to run native inference in separate isolatelib/ into core and platform directoriesVadModel class to unify inference logiconnxruntime-objc poddart:js_interop to directly communicate with onnxruntime-webMicVAD class in lib/src/web/audio_node_vad.dart to manage audio pipeline using AudioContext and dynamically generated AudioWorkletProcessoronnxruntime-web in lib/src/web/onnx_runtime_web.dartonEmitChunk stream type changed to include isFinal flag
onEmitChunk from Stream<List<double>> to Stream<({List<double> samples, bool isFinal})>onEmitChunk stream for real-time audio chunk emission during active speechisFinal flag to mark the last chunk of a speech utterancenumFramesToEmit parameter to startListening() to enable chunking (default: 0, disabled)endSpeechPadFrames parameter to startListening() to control audio padding at speech end (default: 1 for v4, 3 for v5)VadIterator implementations to manage frame buffers and emit chunk events periodically and at speech endvadHandler.onEmitChunk.listen((samples) { ... }) to vadHandler.onEmitChunk.listen((chunk) { final samples = chunk.samples; final isFinal = chunk.isFinal; ... })HttpClientAndroidUsageType.media instead of voiceCommunicationAndroidAudioFocus.gainTransientMayDuck to prevent recorder from receiving AUDIOFOCUS_LOSS when playing back recordingsvad.podspec to align with onnxruntime-objc dependency supportrecord dependency for macOS echo cancellation fix
record and record_macos packages to point to git repository with echo cancellation fixcom.example.vad_examplehomepage and issue_tracker fieldsRecordConfig from record package for detailed audio input configurationpermission_handler to latest versionaudioplayers to latest versionStream<Uint8List>? audioStream parameter to startListening() methodCustomAudioStreamProvider demonstration class using the record librarymanageAudioSession: false when custom stream is used_audioRecorder from final to nullable field to allow recreation after disposalstartListening() if it was previously disposed_audioRecorder to null after disposal in both stopListening() and dispose() methodsFull Changelog : v0.0.5...v0.0.6
Full Changelog: v0.0.5...v0.0.6
startListening(), stopListening(), pauseListening(), and dispose() methods in VadHandlerBase to return Future<void>VadHandlerWeb implementation to use async method signaturesVadHandlerNonWeb implementation to use async method signatures and properly await internal async operationspauseListening feature
pauseListening() to VadHandlerBase.pauseListeningImpl() in vad_web.js and expose via JS bindings._isPaused flag in VadHandlerNonWeb; ignore incoming frames when paused; if submitUserSpeechOnPause is true, call forceEndSpeech()._isPaused in startListening(); guard vadInstance in stopListeningImpl() with null-check and log.startListening() to resumeisListening and isPaused trackingRecordConfig parameter in startListening() for non-web platforms
RecordConfig? recordConfig parameter to startListening() in VadHandlerBase.RecordConfig if provided, otherwise fall back to default configuration with 16kHz sample rate, PCM16 encoding, echo cancellation, auto gain, and noise suppression.record package to version 6.0.0permission_handler package to version 12.0.0+1audioplayers package to version 6.5.0Full Changelog : v0.0.2...v0.0.5
Full Changelog: v0.0.2...v0.0.5
onRealSpeechStart event to notify when the number of speech positive frames exceeds the minimum speech frames (i.e. not a misfire event).onFrameProcessed event to track VAD decisions by exposing speech probabilities and frame data for real-time processing.onRealSpeechStart callback in action and introduce VAD Settings dialog to change the VAD model and other settings at runtime.onFrameProcessed details for debugging.Fixed a bug where default modelPath was not picked up, resulting in silent failure if modelPath was not provided.
modelPath was not picked up, resulting in silent failure if modelPath was not provided.VadIterator class for manual control over the VAD process for non-streaming use cases. Only available on iOS/Android.Switch to onnxruntime package for inference on a separate isolate on iOS and Android to avoid using a full browser in the background, overall reducing
onnxruntime package for inference on a separate isolate on iOS and Android to avoid using a full browser in the background, overall reducing the app size and improving performance.Full Changelog : https://github.com/keyur2maru/vad/commits/v0.0.2
Full Changelog: https://github.com/keyur2maru/vad/commits/v0.0.2
* Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →