Automatic Speech Recognition
PEFT
Safetensors
Kabiyè
whisper
kabiye
low-resource
lora
Eval Results (legacy)
Instructions to use Devsyril/whisper-small-kbp with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Devsyril/whisper-small-kbp with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- kbp
|
| 4 |
+
license: apache-2.0
|
| 5 |
+
base_model: openai/whisper-small
|
| 6 |
+
tags:
|
| 7 |
+
- automatic-speech-recognition
|
| 8 |
+
- whisper
|
| 9 |
+
- kabiye
|
| 10 |
+
- kbp
|
| 11 |
+
- low-resource
|
| 12 |
+
- peft
|
| 13 |
+
- lora
|
| 14 |
+
datasets:
|
| 15 |
+
- wilderness_asr/KBPRCV_whisper_dataset
|
| 16 |
+
metrics:
|
| 17 |
+
- wer
|
| 18 |
+
pipeline_tag: automatic-speech-recognition
|
| 19 |
+
model-index:
|
| 20 |
+
- name: whisper-small-kbp
|
| 21 |
+
results:
|
| 22 |
+
- task:
|
| 23 |
+
type: automatic-speech-recognition
|
| 24 |
+
name: Automatic Speech Recognition
|
| 25 |
+
dataset:
|
| 26 |
+
type: wilderness_asr/KBPRCV_whisper_dataset
|
| 27 |
+
name: KBPRCV Whisper Dataset (kabiyè)
|
| 28 |
+
metrics:
|
| 29 |
+
- type: wer
|
| 30 |
+
value: XX.X
|
| 31 |
+
name: Test WER
|
| 32 |
+
---
|
| 33 |
+
|
| 34 |
+
# Whisper Small — Kabiyè (kbp)
|
| 35 |
+
|
| 36 |
+
Ce modèle est une version de [`openai/whisper-small`](https://huggingface.co/openai/whisper-small) affinée (*fine-tuned*) pour la reconnaissance automatique de la parole (ASR) en **kabiyè** (code ISO 639-3 : `kbp`), une langue gur parlée principalement au Togo.
|
| 37 |
+
|
| 38 |
+
Le modèle a été entraîné avec la méthode **PEFT / LoRA**, puis les poids de l'adaptateur ont été **fusionnés** (`merge_and_unload`) dans le modèle de base : ce dépôt contient donc un `WhisperForConditionalGeneration` complet, utilisable directement sans dépendance à la librairie `peft`.
|
| 39 |
+
|
| 40 |
+
> Un adaptateur LoRA autonome (non fusionné, plus léger) est également disponible séparément : `<HF_USERNAME>/whisper-small-kbp-lora-adapter`.
|
| 41 |
+
|
| 42 |
+
## Description du modèle
|
| 43 |
+
|
| 44 |
+
- **Modèle de base** : `openai/whisper-small` (244M paramètres)
|
| 45 |
+
- **Langue** : kabiyè (`kbp`)
|
| 46 |
+
- **Tâche** : transcription audio → texte (`transcribe`)
|
| 47 |
+
- **Méthode de fine-tuning** : PEFT / LoRA (`r=32`, `lora_alpha=64`, `target_modules=["q_proj","v_proj"]`, `lora_dropout=0.05`), poids fusionnés avec le modèle de base après entraînement
|
| 48 |
+
- **Note sur le token de langue** : le kabiyè ne faisant pas partie des langues nativement supportées par Whisper, aucun token de langue Whisper natif n'a été forcé (`forced_decoder_ids=None`) ; le modèle a appris l'association audio → texte kabiyè directement via le fine-tuning supervisé.
|
| 49 |
+
|
| 50 |
+
## Utilisation
|
| 51 |
+
|
| 52 |
+
```python
|
| 53 |
+
from transformers import WhisperForConditionalGeneration, WhisperProcessor
|
| 54 |
+
import torch, librosa
|
| 55 |
+
|
| 56 |
+
repo_id = "<HF_USERNAME>/whisper-small-kbp"
|
| 57 |
+
|
| 58 |
+
processor = WhisperProcessor.from_pretrained(repo_id)
|
| 59 |
+
model = WhisperForConditionalGeneration.from_pretrained(repo_id)
|
| 60 |
+
model.config.forced_decoder_ids = None
|
| 61 |
+
|
| 62 |
+
audio, sr = librosa.load("mon_clip.wav", sr=16000)
|
| 63 |
+
input_features = processor(audio, sampling_rate=sr, return_tensors="pt").input_features
|
| 64 |
+
|
| 65 |
+
with torch.no_grad():
|
| 66 |
+
predicted_ids = model.generate(input_features, max_new_tokens=225)
|
| 67 |
+
|
| 68 |
+
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
|
| 69 |
+
print(transcription)
|
| 70 |
+
```
|
| 71 |
+
|
| 72 |
+
Avec le pipeline `transformers` :
|
| 73 |
+
|
| 74 |
+
```python
|
| 75 |
+
from transformers import pipeline
|
| 76 |
+
|
| 77 |
+
asr = pipeline("automatic-speech-recognition", model="<HF_USERNAME>/whisper-small-kbp")
|
| 78 |
+
print(asr("mon_clip.wav"))
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
## Données d'entraînement
|
| 82 |
+
|
| 83 |
+
- **Source** : corpus `KBPRCV_whisper_dataset` (projet Wilderness ASR), constitué de lectures audio de textes bibliques en kabiyè.
|
| 84 |
+
- **Volume** : 7 923 clips audio, soit environ **21h39** d'audio total.
|
| 85 |
+
- **Format** : paires audio (`.wav`, 16 kHz) / transcription, décrites dans un fichier `manifest.jsonl` avec les champs `audio_filepath`, `text`, `duration`, `language`, `book`, `chapter`, `verse_index`.
|
| 86 |
+
- **Répartition** : ~90% entraînement / ~5% validation / ~5% test, split stratifié par livre biblique (`book`) pour préserver l'homogénéité thématique des sous-ensembles.
|
| 87 |
+
|
| 88 |
+
## Procédure d'entraînement
|
| 89 |
+
|
| 90 |
+
| Hyperparamètre | Valeur |
|
| 91 |
+
|---|---|
|
| 92 |
+
| Modèle de base | `openai/whisper-small` |
|
| 93 |
+
| Méthode | LoRA (PEFT) |
|
| 94 |
+
| `r` | 32 |
|
| 95 |
+
| `lora_alpha` | 64 |
|
| 96 |
+
| `target_modules` | `q_proj`, `v_proj` |
|
| 97 |
+
| `lora_dropout` | 0.05 |
|
| 98 |
+
| Batch size (train) | 16 |
|
| 99 |
+
| Learning rate | 1e-3 |
|
| 100 |
+
| Epochs | 10 |
|
| 101 |
+
| Précision | fp16, chargement de base en 8-bit pendant l'entraînement |
|
| 102 |
+
| Métrique de sélection | WER (validation) |
|
| 103 |
+
| Matériel | GPU unique (Google Colab, T4/A100) |
|
| 104 |
+
|
| 105 |
+
## Résultats d'évaluation
|
| 106 |
+
|
| 107 |
+
| Split | WER (%) |
|
| 108 |
+
|---|---|
|
| 109 |
+
| Validation | *à compléter après entraînement* |
|
| 110 |
+
| Test | *à compléter après entraînement* |
|
| 111 |
+
|
| 112 |
+
*(Les valeurs ci-dessus sont des emplacements à renseigner une fois l'entraînement terminé — voir la section 16 du notebook d'entraînement.)*
|
| 113 |
+
|
| 114 |
+
## Limites et biais connus
|
| 115 |
+
|
| 116 |
+
- Le corpus d'entraînement est constitué exclusivement de **lectures de textes bibliques** : le vocabulaire, le registre de langue et la prosodie du modèle sont donc fortement influencés par ce domaine, et les performances peuvent se dégrader sur de la parole spontanée, conversationnelle, ou sur d'autres domaines (actualités, discours technique, etc.).
|
| 117 |
+
- Le corpus provient probablement d'un nombre limité de locuteurs/lecteurs : la robustesse aux variations d'accent, de dialecte ou de bruit ambiant n'est pas garantie.
|
| 118 |
+
- Le kabiyè n'étant pas une langue supportée nativement par Whisper, aucune connaissance linguistique préalable spécifique à cette langue n'a été transférée via le token de langue ; toute la capacité de reconnaissance vient du fine-tuning sur ce corpus.
|
| 119 |
+
- Les clips de plus de 30 secondes ont été exclus de l'entraînement (limite native de Whisper).
|
| 120 |
+
|
| 121 |
+
## Citation
|
| 122 |
+
|
| 123 |
+
Si vous utilisez ce modèle, merci de citer le modèle de base Whisper :
|
| 124 |
+
|
| 125 |
+
```bibtex
|
| 126 |
+
@misc{radford2022whisper,
|
| 127 |
+
title={Robust Speech Recognition via Large-Scale Weak Supervision},
|
| 128 |
+
author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
|
| 129 |
+
year={2022},
|
| 130 |
+
eprint={2212.04356},
|
| 131 |
+
archivePrefix={arXiv}
|
| 132 |
+
}
|
| 133 |
+
```
|
| 134 |
+
|
| 135 |
+
ainsi que le corpus d'entraînement `KBPRCV_whisper_dataset` (projet Wilderness ASR).
|