2024-06-12 09:52:36 +08:00
|
|
|
|
# Whisper Flutter New
|
|
|
|
|
|
2024-06-12 10:07:03 +08:00
|
|
|
|
[![pub package](https://img.shields.io/pub/v/whisper_flutter_new.svg?label=whisper_flutter_new&color=blue)](https://pub.dev/packages/whisper_flutter_new)
|
|
|
|
|
|
2024-06-12 09:52:36 +08:00
|
|
|
|
Ready to use [whisper.cpp](https://github.com/ggerganov/whisper.cpp) models implementation for iOS
|
|
|
|
|
and Android
|
|
|
|
|
|
|
|
|
|
1. Support AGP8+
|
|
|
|
|
2. Support Android 5.0+ & iOS 13+ & MacOS 11+
|
|
|
|
|
3. It is optimized and fast
|
|
|
|
|
|
|
|
|
|
Supported models: tiny、base、small、medium、large-v1、large-v2
|
|
|
|
|
|
|
|
|
|
Recommended Models:base、small、medium
|
|
|
|
|
|
|
|
|
|
All models have been actually tested, test devices: Android: Google Pixel 7 Pro, iOS: M1 iOS
|
|
|
|
|
simulator,MacOS: M1 MacBookPro & M2 MacMini
|
|
|
|
|
|
|
|
|
|
## Install library
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
flutter pub add whisper_flutter_new
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## import library
|
|
|
|
|
|
|
|
|
|
```dart
|
|
|
|
|
import 'package:whisper_flutter_new/whisper_flutter_new.dart';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Quickstart
|
|
|
|
|
|
|
|
|
|
```dart
|
|
|
|
|
// Prepare wav file
|
|
|
|
|
final Directory documentDirectory = await getApplicationDocumentsDirectory();
|
|
|
|
|
final ByteData documentBytes = await rootBundle.load('assets/jfk.wav');
|
|
|
|
|
|
|
|
|
|
final String jfkPath = '${documentDirectory.path}/jfk.wav';
|
|
|
|
|
|
|
|
|
|
await File(jfkPath).writeAsBytes(
|
|
|
|
|
documentBytes.buffer.asUint8List(),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Begin whisper transcription
|
|
|
|
|
/// China: https://hf-mirror.com/ggerganov/whisper.cpp/resolve/main
|
|
|
|
|
/// Other: https://huggingface.co/ggerganov/whisper.cpp/resolve/main
|
|
|
|
|
final Whisper whisper = Whisper(
|
|
|
|
|
model: WhisperModel.base,
|
|
|
|
|
downloadHost: "https://huggingface.co/ggerganov/whisper.cpp/resolve/main"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
final String? whisperVersion = await whisper.getVersion();
|
|
|
|
|
print(whisperVersion);
|
|
|
|
|
|
|
|
|
|
final String transcription = await whisper.transcribe(
|
|
|
|
|
transcribeRequest: TranscribeRequest(
|
|
|
|
|
audio: jfkPath,
|
|
|
|
|
isTranslate: true, // Translate result from audio lang to english text
|
|
|
|
|
isNoTimestamps: false, // Get segments in result
|
|
|
|
|
splitOnWord: true, // Split segments on each word
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
print(transcription);
|
|
|
|
|
```
|