Description
whisper-large-v3-turbo de Radford et al. (2022) entraîné sur environ 700H de breton.
Ce modèle obtient un WER de 4,516 sur le split de test de commonvoice 22.0.
Voir la section Méthodologie pour plus de détails.
Ce modèle n'a aucune prétention particulière et doit être vu comme une expérience/une V0 pour établir une baseline.
Disposant d'une A100 pour un week-end, j'ai voulu en profiter en regardant ce que pouvait donner un whisper entraîné sur du breton pendant une quarantaine d'heures.
Méthodologie
D'après les auteurs du distil-whisper (Gandhi, Platen et Rush (2023)), il faut 1 000H d'audio dans une langue pour obtenir un WER < 10 pour un modèle de 750M de paramètres.
Le distil-whisper étant disponible qu'en anglais, j'ai utilisé à la place le whisper-large-v3-turbo qui est multilingue et fait 809M de paramètres. Le modèle étant légèrement plus grand mais surtout entraîné sur plus d'heures (5M contre 700K pour le distil-whiper) dont du breton et du gallois (qui est proche du breton), mon hypothèse est qu'il faille en réalité moins que les 1 000H avancées par distil-whisper.
Du fait de la limite de temps de disposition du GPU, j'estime que le modèle a pu voir environ 700H d'audios en breton.
Le breton ne disposant pas d'autant d'heures d'audio annotées, il s'agit en réalité des données de cette collection vues plusieurs fois par le modèle (= 8 epochs). Ainsi, il est très probable qu'il soit surentraîné sur ces données et puisse avoir du mal à généraliser (un WER de 4,516 sur commonvoice 22.0 semble aller dans ce sens).
Notez que les données ont été regroupées en paquet de 30s avant de les donner au modèle suite à l'observation des auteurs du distil-whisper que donner des séquences de cette taille au modèle améliorerait les résultats.
Usage
from datasets import load_dataset
common_voice = load_dataset("Bretagne/common_voice_22.0_br")
common_voice = common_voice.remove_columns(['domain', 'age', 'gender', 'accents'])
common_voice = common_voice.cast_column("audio", Audio(sampling_rate=16000))
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
processor = AutoProcessor.from_pretrained("Bretagne/whisper-large-v3-turbo-audio_breton-transcription_breton")
pipe = pipeline(
"automatic-speech-recognition",
model="Bretagne/whisper-large-v3-turbo-breton",
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor
)
n = 30
sample = common_voice["test"]["audio"][n]
result = pipe(sample["array"])
print("Modèle :",result["text"])
print("----------")
print("Réalité :",common_voice["test"]["br"][n])
Modèle : Ha koulz eo cʼhoazh da saveteiñ ar brezhoneg ?
----------
Réalité : Ha koulz eo cʼhoazh da saveteiñ ar brezhoneg ?
Améliorations
Comme indiqué, il s'agit d'un premier test pouvant être considéré comme une baseline à améliorer par la suite.
Des idées en vracs :
- utiliser ce modèle pour pseudo-labeliser des données d'audio brutes libres de droit ne disposant pas de transcription
- utiliser ce premier point pour avoir des données de 30s "naturelles" plutôt que de devoir aggréger des données de 4-5s (30s successives auront plus d'information que 5/6 phrases non liées entre elles et concaténées artificiellement)
- utiliser ce premier point pour essayer d'avoir des données plus variées dans une optique d'avoir le modèle le plus généraliste possible
- incorporer des données en gallois dans le jeu d'entraînement (Note : cette technique est surtout utilisée pour le texte, il faudrait vérifier que cela fonctionne aussi pour l'audio)
- créer un modèle de correction pour nettoyer la sortie du modèle d'ASR
- réduire la taille du modèle (notamment pruning et quantification, peut-être de la distillation) pour qu'il puisse être utilisé sur du matériel moins coûteux
Impact environnemental
Les émissions de carbone ont été estimées à l'aide de l'outil Machine Learning Impact calculator de Lacoste et al. (2019) en utilisant comme hardware une A100 PCIe 40/80GB pendant 38h 52min à 0,020kg (d'après electricitymaps lors de la période de l'entrainement).
En résulte une estimation (Consommation d'énergie x Temps x Carbone produit en fonction de l'emplacement du réseau électrique) à 195g eq. CO2 pour ce finetuning.
- Downloads last month
- 4