CoolFace
Modelpublic

Jeremy-p/whisper-small-qc-fr

sourceHugging Facemitupdated 2mo agoView on Hugging Face
1likes20downloads
Model Card

whisper-small-qc-fr

openai/whisper-small, fully fine-tuned on a Quebec-French-weighted French/English mix (fr sampling probability 0.90 / en 0.10).

Two formats are published:

RepoFormatSizeUse with
this repofp32 (Transformers)926 MBtransformers
Jeremy-p/whisper-small-qc-fr-ct2-int8CTranslate2 int8242 MBfaster-whisper (recommended — smaller & faster)

Training

Full fp32 fine-tune (fp16-autocast mixed precision), gradient checkpointing, 2-GPU DDP. French and English training data mixed via datasets.interleave_datasets(probabilities=[0.90, 0.10], stopping_strategy="first_exhausted"). Labels truncated/filtered at a 448-token max length.

Results

French, n=100:

ModelWER
openai/whisper-small (stock)49.0%
faster-whisper base int866.9%
Qwen3-ASR-0.6B40.3%
this model, fp3237.9%
this model, ct2 int835.1%

English, n=324:

ModelWER
openai/whisper-small (stock)5.67%
faster-whisper base int86.13%
Qwen3-ASR-0.6B2.34%
this model, fp323.51%
this model, ct2 int83.69%

This model improves on stock Whisper-small and faster-whisper base on both languages, and beats Qwen3-ASR-0.6B on French while trailing it on English. int8 quantization costs roughly 0.2pt WER on English (fp32 3.51% → int8 3.69%, ~5% relative); on the smaller French sample it was directionally better, more likely sampling noise than a real effect.

Usage

fp32 via transformers

python
from transformers import WhisperProcessor, WhisperForConditionalGeneration

processor = WhisperProcessor.from_pretrained("Jeremy-p/whisper-small-qc-fr")
model = WhisperForConditionalGeneration.from_pretrained("Jeremy-p/whisper-small-qc-fr")

CTranslate2 int8 via faster-whisper — recommended

python
from faster_whisper import WhisperModel

model = WhisperModel("Jeremy-p/whisper-small-qc-fr-ct2-int8", compute_type="int8")
segments, info = model.transcribe("audio.wav", language="fr")
print("".join(seg.text for seg in segments))

License

MIT