Türkçe ve İngilizce speech-to-text modellerini karşılaştırmak için modüler bir benchmark framework'ü.
- Çoklu Model Desteği: Whisper, Wav2Vec2, HuBERT ailelerini destekler
- Docker-First: Her şey container'da çalışır, kurulum derdi yok
- Custom Model Desteği: Kendi finetuned modellerini (CT2 formatında) ekleyebilirsin
- Streaming Test: Real-time latency ölçümü
- Modüler Mimari: Yeni modeller kolayca eklenebilir
- Offline Mod: İnternet olmadan sunucuda çalışabilir
- Otomatik Metrikler: WER, CER, RTF, latency hesaplama
| Model | HuggingFace ID / Path | Diller |
|---|---|---|
| faster-whisper-large-v3-turbo | Systran/faster-whisper-large-v3-turbo | TR, EN |
| faster-whisper-large-v3 | Systran/faster-whisper-large-v3 | TR, EN |
| faster-whisper-medium | Systran/faster-whisper-medium | TR, EN |
| faster-whisper-small | Systran/faster-whisper-small | TR, EN |
| whisper-small-tr-finetuned | models/whisper-small-tr-ct2-int8 (lokal) | TR |
| distil-whisper-tr | Sercan/distil-whisper-large-v3-tr | TR |
| Model | HuggingFace ID | Diller |
|---|---|---|
| wav2vec2-turkish-large | m3hrdadfi/wav2vec2-large-xlsr-turkish | TR |
| wav2vec2-turkish-base | cahya/wav2vec2-base-turkish | TR |
| wav2vec2-xlsr-53 | facebook/wav2vec2-large-xlsr-53 | Multi |
| Model | HuggingFace ID | Diller |
|---|---|---|
| hubert-large-ft | facebook/hubert-large-ls960-ft | EN |
- Docker Desktop kurulu olmalı
- GPU kullanacaksan: NVIDIA Container Toolkit
cd docker
# CPU versiyonu (GPU yoksa)
docker-compose build stt-benchmark-cpu
# GPU versiyonu (NVIDIA GPU varsa)
docker-compose build stt-benchmarkdocker-compose run --rm stt-benchmark-cpu python scripts/run_benchmark.py --list-models# Türkçe test (test_data/tr klasöründe veriler olmalı)
docker-compose run --rm stt-benchmark-cpu python scripts/run_benchmark.py \
--model faster-whisper-small --language tr --device cpu --test-data test_data/tr
# İngilizce test
docker-compose run --rm stt-benchmark-cpu python scripts/run_benchmark.py \
--model faster-whisper-small --language en --device cpu --test-data test_data/en
# Custom finetuned model test
docker-compose run --rm stt-benchmark-cpu python scripts/run_benchmark.py \
--model whisper-small-tr-finetuned --language tr --device cpu --test-data test_data/tr# 500ms chunk boyutuyla streaming test
docker-compose run --rm stt-benchmark-cpu python scripts/run_benchmark.py \
--model faster-whisper-small --language tr --device cpu --test-data test_data/tr \
--streaming --chunk-size 500test_data/
├── tr/
│ ├── audio/
│ │ ├── sample1.mp3
│ │ └── sample2.mp3
│ └── transcripts.json
└── en/
├── audio/
│ ├── audio1.mp3
│ └── audio2.mp3
└── transcripts.json
{
"dataset": "my_dataset",
"files": [
{
"filename": "sample1.mp3",
"transcript": "Bu bir test cümlesidir."
},
{
"filename": "sample2.mp3",
"transcript": "İkinci örnek metin."
}
]
}Kendi finetuned modelini eklemek için:
- Modeli CTranslate2 formatına dönüştür (int8 quantized önerilir)
models/klasörüne koy (örn:models/my-model-ct2-int8/)scripts/run_benchmark.py'de MODEL_REGISTRY'ye ekle:
"my-custom-model": lambda device: FasterWhisperModel(
"my-model-ct2-int8",
model_path=Path("models/my-model-ct2-int8"),
device=device,
compute_type="int8",
),stt-benchmark/
├── src/
│ ├── benchmark/ # Benchmark runner ve metrikler
│ │ ├── runner.py # Ana benchmark sınıfı
│ │ ├── metrics.py # WER, CER hesaplama
│ │ └── utils.py # Yardımcı fonksiyonlar
│ ├── models/ # Model wrappers
│ │ ├── base.py # Abstract base class
│ │ ├── whisper_model.py # Whisper implementations
│ │ ├── wav2vec2_model.py
│ │ └── hubert_model.py
│ ├── data/ # Veri yükleme
│ │ ├── loader.py # Test data loader
│ │ └── downloader.py # Dataset downloader
│ └── realtime/ # Real-time test modülleri
├── docker/ # Docker dosyaları
│ ├── Dockerfile # GPU image
│ ├── Dockerfile.cpu # CPU-only image
│ └── docker-compose.yml # Compose konfigürasyonu
├── models/ # Custom/finetuned modeller
├── scripts/ # CLI script'leri
├── test_data/ # Test audio ve transkriptler
└── results/ # Benchmark sonuçları (JSON)
| Model | WER | CER | RTF | Yükleme Süresi |
|---|---|---|---|---|
| faster-whisper-small | 51.39% | 21.93% | 0.713 | 52s |
| whisper-small-tr-finetuned | 40.28% | 15.36% | 0.582 | 5.4s |
Sonuçlar results/ klasörüne JSON formatında kaydedilir:
{
"model_name": "faster-whisper-large-v3-turbo",
"model_family": "whisper",
"language": "tr",
"aggregate_metrics": {
"wer": 0.12,
"cer": 0.08,
"avg_rtf": 0.15,
"avg_latency_ms": 450
},
"per_file_results": [...]
}| Metrik | Açıklama |
|---|---|
| WER | Word Error Rate - Kelime hata oranı (düşük = iyi) |
| CER | Character Error Rate - Karakter hata oranı |
| RTF | Real-Time Factor - İşleme süresi / ses süresi (< 1.0 = gerçek zamandan hızlı) |
| Latency | İşleme süresi (ms) |
| First Word Latency | İlk kelime algılama süresi (streaming için) |
# Tüm Whisper modellerini indir
docker-compose run --rm stt-benchmark-cpu python scripts/download_models.py --family whisper
# Tek model indir
docker-compose run --rm stt-benchmark-cpu python scripts/download_models.py --model faster-whisper-smallİnterneti olmayan sunucuda çalıştırmak için:
# 1. İnterneti olan makinede modelleri indir
docker-compose run --rm stt-benchmark python scripts/download_models.py --family whisper
# 2. models/ ve test_data/ klasörlerini sunucuya kopyala
# 3. Sunucuda offline modda çalıştır
docker-compose run --rm stt-benchmark-offline python scripts/run_benchmark.py \
--model faster-whisper-large-v3 --language tr# Interactive shell
docker-compose run --rm stt-benchmark-cpu bash
# Test çalıştır
docker-compose run --rm stt-benchmark-cpu python -c "import src; print('OK')"MIT License