Whisper Pular - GGML Q5_1 (Mobile)

Modèle de reconnaissance vocale automatique (ASR) pour la langue Pular (Fulfulde) optimisé pour déploiement mobile.

🎯 Caractéristiques

  • Langue: Pular (Fulfulde) - Code ISO: ff
  • Architecture: Whisper Small fine-tuné
  • Format: GGML Q5_1 (quantifié)
  • Taille: 181 MB (vs 484 MB original)
  • Réduction: 63%
  • WER: ~19%
  • Offline: 100%

📊 Performance

Plateforme RTF Latence (10s audio) Status
CPU Colab (2 threads) 2.19 22s ✅ Validé
Raspberry Pi 4 ~1.5 ~15s Estimé
iPhone 13+ ~0.4 ~4s Estimé
Android Flagship ~0.6 ~6s Estimé
Android Mid-range ~1.0 ~10s Estimé

Note: RTF plus rapide sur mobile (4-8 threads + optimisations matériel)

🚀 Utilisation

Avec Whisper.cpp (Ligne de commande)

# Télécharger modèle
wget https://huggingface.co/Baamtu/whisper-pular-ggml-q5/resolve/main/ggml-pular-q5_1.bin

# Cloner Whisper.cpp
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
make

# Transcrire
./main -m ../ggml-pular-q5_1.bin -f audio.wav -l ff

Android (Kotlin)

class PularASR(context: Context) {
    private external fun initWhisper(modelPath: String): Long
    private external fun transcribe(handle: Long, audioPath: String): String
    
    companion object {
        init {
            System.loadLibrary("whisper-android")
        }
    }
    
    fun initialize() {
        val modelPath = copyAssetToCache("ggml-pular-q5_1.bin")
        handle = initWhisper(modelPath)
    }
    
    fun transcribe(audioPath: String): String {
        return transcribe(handle, audioPath)
    }
}

iOS (Swift)

import WhisperKit

class PularASR {
    private var whisper: Whisper?
    
    func initialize() {
        let modelPath = Bundle.main.path(
            forResource: "ggml-pular-q5_1",
            ofType: "bin"
        )!
        whisper = Whisper(modelPath: modelPath)
    }
    
    func transcribe(_ audioPath: String) async -> String {
        return await whisper?.transcribe(audioPath, language: "ff") ?? ""
    }
}

Flutter (Multiplateforme)

import 'package:whisper_flutter/whisper_flutter.dart';

final whisper = await Whisper.fromAsset('assets/ggml-pular-q5_1.bin');
final result = await whisper.transcribe(audioPath, language: 'ff');
print(result.text);

📱 Déploiement Mobile

Android

  1. Ajouter le modèle dans app/src/main/assets/
  2. Intégrer Whisper.cpp avec JNI
  3. Taille app finale: ~200 MB

iOS

  1. Ajouter le modèle dans Resources/
  2. Utiliser WhisperKit ou Whisper.cpp
  3. Neural Engine supporté (accélération matérielle)

⚡ Optimisations

Voice Activity Detection (VAD)

Activez la transcription seulement quand une voix est détectée pour économiser 90% de batterie.

Streaming

Transcrivez par blocs de 3-5 secondes pour affichage progressif.

📚 Modèles Associés

Modèle Taille Format Usage
asr-multi-merged-v0-1 484 MB PyTorch FP16 GPU / Dev
asr-multi-faster-int8-v0-1 234 MB CTranslate2 Raspberry Pi
whisper-pular-ggml-q5 181 MB GGML Q5_1 Mobile

📊 Dataset

Fine-tuné sur Baamtu/pular-asr-v1:

  • 31,002 exemples
  • ~43 heures audio
  • Pular du Sénégal

🔧 Conversion

Ce modèle a été créé via:

  1. Fine-tuning Whisper Small avec PEFT LoRA
  2. Fusion adaptateurs → PyTorch FP16
  3. Conversion PyTorch → GGML
  4. Quantization Q5_1

📖 Citation

@misc{whisper-pular-ggml-2026,
  title={Whisper Pular GGML: Mobile ASR for Fulfulde},
  author={Baamtu},
  year={2026},
  publisher={HuggingFace},
  url={https://huggingface.co/Baamtu/whisper-pular-ggml-q5}
}

📜 Licence

MIT License

🔗 Liens

🤝 Support

Pour questions ou issues, créez un ticket sur le dépôt GitHub ou contactez via HuggingFace Discussions.


Développé par: Baamtu
Version: 1.0
Date: Mars 2026

Downloads last month
24
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support