whisper_ggml 1.8.0
whisper_ggml: ^1.8.0 copied to clipboard
OpenAI Whisper ASR (Automatic Speech Recognition) for Flutter
Supported platforms #
| Platform | Supported |
|---|---|
| Android | ✅ |
| iOS | ✅ |
| MacOS | ✅ |
Features #
-
Automatic Speech Recognition integration for Flutter apps.
-
Supports automatic model downloading and initialization. Can be configured to work fully offline by using
assetsmodels (see example folder). -
Seamless iOS and Android support with optimized performance.
-
Can be configured to use specific language ("en", "fr", "de", etc) or auto-detect ("auto").
-
Utilizes CORE ML for enhanced processing on iOS devices.
Installation #
To use this library in your Flutter project, follow these steps:
- Add the library to your Flutter project's
pubspec.yaml:
dependencies:
whisper_ggml: ^1.8.0
- Run
flutter pub getto install the package.
Usage #
To integrate Whisper ASR in your Flutter app:
- Import the package:
import 'package:whisper_ggml/whisper_ggml.dart';
- Pick your model. Smaller models are more performant, but the accuracy may be lower. Recommended models are
tinyandsmall.
final model = WhisperModel.tiny;
- Declare
WhisperControllerand use it for transcription:
final controller = WhisperController();
final result = await controller.transcribe(
model: model, /// Selected WhisperModel
audioPath: audioPath, /// Path to .wav file
lang: 'en', /// Language to transcribe
initialPrompt: 'Optional text to bias decoding', /// See note below
);
The optional initialPrompt is passed to whisper.cpp as
whisper_full_params.initial_prompt. Whisper uses it to bias decoding toward
the vocabulary, proper nouns, and punctuation it contains — useful for
domain-specific transcription (medical, legal, product names, etc.) where
those words otherwise get misrecognised. Leave it null (the default) to
disable biasing. Note that decoding also mimics the prompt's style, so an
unpunctuated prompt tends to produce unpunctuated output.
The optional noContext flag sets whisper_full_params.no_context
(equivalent to Python whisper's condition_on_previous_text=False). When
true, whisper.cpp does not feed prior-segment transcripts into the decoder
as context — useful for short, independent utterances where carry-over
context can cause hallucinated repetition. Defaults to false, matching
whisper.cpp's default.
- Use the
resultvariable to access the transcription result:
if (result?.transcription.text != null) {
/// Do something with the transcription
print(result!.transcription.text);
}
Notes #
Transcription processing time is about 5x times faster when running in release mode.