Skip to main content

flutter_whisper 0.1.0 copy "flutter_whisper: ^0.1.0" to clipboard
flutter_whisper: ^0.1.0 copied to clipboard

PlatformAndroid

On-device speech-to-text transcription using whisper.cpp. Automatic model download, streaming segment results, Android support.

flutter_whisper #

On-device speech-to-text transcription using whisper.cpp. No cloud, no API keys — models run locally on Android.

⚠️ Platform status: Android is fully supported (JNI + whisper.cpp via CMake). iOS is planned but not yet implemented.

Features #

  • 🎙️ On-device transcription (works offline, privacy-first)
  • ⬇️ Automatic model download on first use (resumable, with integrity check)
  • 🧠 5 model sizes: tiny (39 MB) → large (1.5 GB)
  • 🌍 Multilingual (tiny/base are English-only, small+ are multilingual)
  • ⏱️ Segment + word-level timestamps
  • 📡 Streaming segment results (real-time UI updates)
  • 🎤 Microphone recording → WAV → transcribe (Android)

Getting started #

Add to pubspec.yaml:

dependencies:
  flutter_whisper: ^0.1.0

Usage #

import 'package:flutter_whisper/flutter_whisper.dart';

final whisper = Whisper();

// 1. Initialize — downloads model on first use
await whisper.initialize(model: WhisperModel.tiny);

// 2. Transcribe a file
final result = await whisper.transcribeFile('/path/to/audio.wav');
print(result.text);          // "hello world"
print(result.language);      // "en"
for (final seg in result.segments) {
  print('[${seg.start}s - ${seg.end}s] ${seg.text}');
}

// 3. Record from the microphone, then transcribe
await whisper.startRecording();
// ... speak ...
final wavPath = await whisper.stopRecording();
final result2 = await whisper.transcribeFile(wavPath);

// 4. Clean up
await whisper.dispose();

Options #

await whisper.initialize(
  model: WhisperModel.small,
  options: const WhisperOptions(
    language: 'en',        // '' = auto-detect
    translate: false,      // translate to English
    vad: true,             // filter silence
    wordTimestamps: true,  // word-level timestamps
    threads: 4,            // 0 = auto
  ),
);

Models #

Model Size Languages Use case
tiny 39 MB English Fastest, quick tests
base 75 MB English Fast + decent accuracy
small 150 MB Multilingual Good balance
medium 300 MB Multilingual High accuracy
large 1.5 GB Multilingual Best accuracy

Models download automatically from HuggingFace on first initialize().

Platform setup #

Android — add RECORD_AUDIO permission (only if recording):

<uses-permission android:name="android.permission.RECORD_AUDIO" />

No network permissions needed — transcription runs on-device. Model downloads use the app's own network permission.

Example #

Full demo app in example/:

cd example
flutter run

Additional information #

  • Report issues
  • Native integration uses whisper.cpp via platform channels
  • iOS support is on the roadmap (whisper.cpp static framework build)
2
likes
160
points
383
downloads

Documentation

API reference

Publisher

verified publishergovindtank.is-a.dev

Weekly Downloads

On-device speech-to-text transcription using whisper.cpp. Automatic model download, streaming segment results, Android support.

Repository (GitHub)
View/report issues

Topics

#speech-to-text #whisper #transcription #on-device #android

License

Apache-2.0 (license)

Dependencies

flutter, http, path_provider

More

Packages that depend on flutter_whisper

Packages that implement flutter_whisper