Whisper-large-v3-turbo Russian — Code-Switching variant

Specialized variant of coriollon/whisper-large-v3-turbo-russian optimized for Russian speech with embedded English tech terms ("Открой Python и сделай git push").

When to use this vs the standard model

Use case Recommended model
Pure Russian dictation coriollon/whisper-large-v3-turbo-russian (9.43% AGG WER)
RU+EN code-switching (IT dictation, tech podcasts) this model

This variant trades ~2 pp on pure Russian WER for a massive code-switching gain.

Code-switching benchmark (540 RU sentences with EN tech terms)

Metric Standard RU model This model Δ
WER 24.64% 9.08% −15.56 pp
Term accuracy¹ 12.59% 74.26% +61.67 pp

¹ Term accuracy = fraction of utterances where the English tech term (e.g. "Python", "GitHub", "Docker") appears verbatim in latin script in the transcript.

Pure-Russian regression

Dataset Standard RU This model Δ
Common Voice 21 RU 5.33% 6.87% +1.54
RuLibriSpeech 8.50% 8.57% +0.07
Sberdevices Golos farfield 11.05% 10.38% −0.67
Sberdevices Golos crowd 10.15% 9.81% −0.34
SOVA RuDevices 13.61% 14.87% +1.26
Podlodka Speech 10.85% (noisy n=20)
AGG (N=200) ~9.4% ~11.8% +2.3

Usage

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch

repo = "coriollon/whisper-large-v3-turbo-russian-codeswitch"
processor = WhisperProcessor.from_pretrained(repo)
model = WhisperForConditionalGeneration.from_pretrained(repo, torch_dtype=torch.float16).to("cuda")

inputs = processor(audio_array, sampling_rate=16000, return_tensors="pt")
feats = inputs.input_features.to("cuda", dtype=torch.float16)
ids = model.generate(feats, language="ru", task="transcribe", num_beams=5)
print(processor.batch_decode(ids, skip_special_tokens=True)[0])

Pre-quantized faster-whisper variant

Folder Quantization Size
ct2_int8_float16/ int8 weights + fp16 compute 782 MB
from huggingface_hub import snapshot_download
from faster_whisper import WhisperModel

ct2_path = snapshot_download(
    repo_id="coriollon/whisper-large-v3-turbo-russian-codeswitch",
    allow_patterns="ct2_int8_float16/*",
)
model = WhisperModel(f"{ct2_path}/ct2_int8_float16", device="cuda", compute_type="int8_float16")
segments, _ = model.transcribe("audio.wav", language="ru", beam_size=5)

How it was built

LoRA r=32 (q+k+v+o+fc1+fc2, 27.85M params) trained on:

  • 2,160 RU sentences with EN tech terms (Silero TTS-bootstrapped, 50 templates × 53 terms × 5 voices)
  • 5,000 pure-RU anti-forgetting samples
  • 2,000 EN anti-forgetting samples

Reference labels in mixed script ("Открой Python") teach the model to natively output latin tokens for English terms instead of cyrillic transliteration ("питон").

Limitations

  • Pure-RU WER is ~2 pp worse than the standard model. Don't use this model if you don't need code-switching.
  • Training data was TTS-generated (Silero v4 RU) — real human pronunciation may differ slightly
  • Currently covers 53 common tech/brand terms; rare terms may still appear in cyrillic

License

Apache 2.0 (inherited from base Whisper model).

Downloads last month
31
Safetensors
Model size
0.8B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for coriollon/whisper-large-v3-turbo-russian-codeswitch