Views
No views yet
swh,sw,Aswh)| Model | WER (%) |
|---|---|
openai/whisper-small (baseline) | 103.10 |
adoamesh/whisper-small-swh-finetuned (this model) | 32.07 |
openai/whisper-small architecture, which features a Transformer-based encoder-decoder structure. It has been specifically adapted for Swahili by continuing pre-training on Swahili audio data.1import torch
2import librosa
3from transformers import WhisperProcessor, WhisperForConditionalGeneration
4
5# --- 1️⃣ Load processor (shared between models) ---
6processor = WhisperProcessor.from_pretrained("openai/whisper-small")
7
8# --- 2️⃣ Load models ---
9# Fine-tuned Swahili Whisper-Small from Hugging Face Hub
10finetuned_model = WhisperForConditionalGeneration.from_pretrained("adoamesh/whisper-small-swh-finetuned")
11finetuned_model.generation_config.language = "swahili"
12finetuned_model.generation_config.task = "transcribe"
13finetuned_model.eval()
14
15# Original OpenAI Whisper-Small
16original_model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")
17original_model.generation_config.language = "swahili"
18original_model.generation_config.task = "transcribe"
19original_model.eval()
20
21# --- 3️⃣ Load audio file using librosa ---
22audio_path = "Recording.wav"
23try:
24 waveform, sample_rate = librosa.load(audio_path, sr=16000)
25 waveform = torch.from_numpy(waveform).float().unsqueeze(0)
26except Exception as e:
27 print(f"Error loading audio with librosa: {e}")
28 exit(1)
29
30# Prepare input features
31input_features = processor(
32 waveform.numpy()[0],
33 sampling_rate=16000,
34 return_tensors="pt"
35).input_features
36
37# --- 4️⃣ Transcribe ---
38with torch.no_grad():
39 # Fine-tuned
40 predicted_ids_finetuned = finetuned_model.generate(input_features)
41 transcription_finetuned = processor.batch_decode(predicted_ids_finetuned, skip_special_tokens=True)[0]
42
43 # Original
44 predicted_ids_original = original_model.generate(input_features)
45 transcription_original = processor.batch_decode(predicted_ids_original, skip_special_tokens=True)[0]
46
47# --- 5️⃣ Print results ---
48print("\n=== Transcriptions ===")
49print(f"Fine-tuned Swahili Whisper-Small: {transcription_finetuned}")
50print(f"Original Whisper-Small (OpenAI): {transcription_original}")1Fine-tuned Swahili Whisper-Small: Ni limwambia yulebindi kwamba na mpenda.
2Original Whisper-Small (OpenAI): Nili mwabi ayule bindi kwa mba nampe dha.sw) split of the FLEURS-SLU dataset.| Dataset Split | Duration (hours) |
|---|---|
| Training | 3.62 |
| Test | 0.60 |
| Total | 4.22 |
| Metric | Value |
|---|---|
| Final Training Loss | 0.0007 |
| Validation Loss | 0.8038 |
| Final WER | 32.07% |
| Training Runtime | ~2.3 hours |
| Total Epochs | 19.6 |
| Model | WER (%) | Relative Improvement |
|---|---|---|
openai/whisper-small | 103.10 | - |
adoamesh/whisper-small-swh-finetuned | 32.07 | +68% |
| Model | Transcription |
|---|---|
| Fine-tuned Model | Ni limwambia yulebindi kwamba na mpenda. |
| Base Model | Nili mwabi aiyule bindi kwa mba nampe dha. |
1@misc{odhiambo2025whispersmallswahili,
2 author = {Odhiambo, Daniel Amemba},
3 title = {Whisper Small Swahili Fine-tuned},
4 year = {2025},
5 publisher = {Hugging Face},
6 howpublished = {\url{https://huggingface.co/adoamesh/whisper-small-swh-finetuned}}
7}1@misc{radford2022whisper,
2 title = {Robust Speech Recognition via Large-Scale Weak Supervision},
3 author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
4 year = {2022},
5 eprint = {2212.04356},
6 archivePrefix = {arXiv},
7 primaryClass = {eess.AS}
8}