MohamedRashad/arabic-english-code-switching
Viewer • Updated • 12.5k • 195 • 35
Fine-tuned openai/whisper-large-v3-turbo for Egyptian Arabic with Arabic↔English code-switching support.
| Property | Value |
|---|---|
| Base model | openai/whisper-large-v3-turbo (809M params) |
| Fine-tuned on | MohamedRashad/arabic-english-code-switching |
| Language | Egyptian Arabic + English (code-switching) |
| Training | Encoder frozen, decoder fine-tuned |
| Precision | bfloat16 |
The base Whisper model transcribes everything in Arabic script, even English words. This fine-tuned version outputs English words in English when the speaker code-switches.
Audio content: A speaker saying "تعالوا نبني مع بعض برنامج توصيل أكل... من غير ما نكتب ولا سطر code... عن طريق منصة Replit... منزلين عندهم Agent 4"
| Model | Output |
|---|---|
| Base whisper-large-v3-turbo | تعالوا نبني مع بعض برنامج توصيل أكل من غير ما نكتب ولا سطر كود عن طريق منصة ريبليت منزلين عندهم إيجنت فور |
| This model | تعالوا نبني مع بعض برنامج توصيل أكل من غير ما نكتب ولا سطر code عن طريق منصة Replit منزلين عندهم Agent 4 |
pipeline (simplest)
from transformers import pipeline, AutoProcessor
import torch
model_id = "mohammedaly22/whisper-large-v3-turbo-egyptian-code-switching"
# Manually load the processor
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model_id,
processor=processor,
torch_dtype=torch.float16, # Better for CUDA
device="cuda",
chunk_length_s=30,
)
result = pipe(
"/path/to/audio.wav",
generate_kwargs={"language": "arabic", "task": "transcribe"},
)
print(result["text"])
Processor + Model
import torch
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
model_id = "mohammedaly22/whisper-large-v3-turbo-egyptian-code-switching"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16).to("cuda")
# Load audio
audio, sr = librosa.load("path/to/audio.wav", sr=16000)
# Process
input_features = processor.feature_extractor(
audio, sampling_rate=16000, return_tensors="pt"
).input_features.to(device="cuda", dtype=torch.bfloat16)
# Generate
with torch.no_grad():
generated_ids = model.generate(
input_features,
max_new_tokens=444,
language="ar",
task="transcribe",
)
# Decode
text = processor.tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(text)
import torch
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
model_id = "mohammedaly22/whisper-large-v3-turbo-egyptian-code-switching"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16).to("cuda")
audio_files = ["audio1.wav", "audio2.wav", "audio3.wav"]
audios = [librosa.load(f, sr=16000)[0] for f in audio_files]
inputs = processor.feature_extractor(
audios, sampling_rate=16000, return_tensors="pt", padding=True
)
input_features = inputs.input_features.to(device="cuda", dtype=torch.bfloat16)
with torch.no_grad():
generated_ids = model.generate(
input_features,
max_new_tokens=444,
language="ar",
task="transcribe",
)
texts = processor.tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
for t in texts:
print(t)
If you use this model, please cite the base model and dataset:
@misc{whisper-large-v3-turbo-egyptian-cs,
title={Whisper Large V3 Turbo — Egyptian Arabic Code-Switching},
author={Mohammed Aly},
year={2025},
url={https://huggingface.co/mohammedaly22/whisper-large-v3-turbo-egyptian-code-switching}
}
Base model
openai/whisper-large-v3