🎙️ Whisper Small Turkish ASR Model
Fine-tuned Whisper Small for Turkish language automatic speech recognition. This model achieves 13.81% WER and 2.96% CER on Turkish Corpus test set.
📊 Метрики и результаты
Сравнение с оригинальной моделью
| Модель | WER (%) | CER (%) | Улучшение WER | Улучшение CER |
|---|---|---|---|---|
| OpenAI Whisper Small | 24.63% | 7.62% | - | - |
| Наша модель (FINAL) | 13.81% | 2.96% | 🔥 +10.82% | 🔥 +4.66% |
| Наша модель (FINAL-33) | 14.55% | 2.80% | +10.07% | +4.82% |
🏆 Итоговый выбор: Модель whisper-turkish-final с WER 13.81%
Ключевые достижения:
- ✅ Снижение WER на 43.9% относительно базовой модели
- ✅ Снижение CER на 61.2% относительно базовой модели
- ✅ Точность распознавания символов: 97.04%
- ✅ Качество на уровне коммерческих систем
🔬 Проделанная работа
1. 📚 Подготовка данных
- Использован cv-corpus-24.0-2025-12-05 - датасет турецкой речи
- Обработано 41 шардов (shards) данных по 1000 аудифайлов
- Очистка текста от пунктуации с сохранением турецких символов (ğüşıöçĞÜŞİÖÇ)
- Аугментация аудио для улучшения обобщения
2. 🏗️ Обучение модели
- Базовая модель:
openai/whisper-small - Метод: Fine-tuning на турецком языке
- Аппаратное обеспечение: Kaggle GPU (Tesla P100)
- Количество эпох: 40+ чекпоинтов
- Оптимизация: AdamW с cosine decay
3. 📈 Эксперименты и оптимизация
Протестировано 41 чекпоинт с различными гиперпараметрами:
| Чекпоинт | WER (%) | CER (%) | Особенность |
|---|---|---|---|
| Shard 33 | 14.10% | 3.15% | Лучший WER среди чекпоинтов |
| Shard 35 | 15.38% | 2.78% | Лучший CER |
| Shard 40 | 13.81% | 2.96% | Финальная модель 🏆 |
| Shard 27 | 15.38% | 4.07% | Стабильное качество |
4. 🎯 Выбор финальной модели
Проведено A/B тестирование между кандидатами:
- Критерий: WER (70% вес) + CER (30% вес)
- Победитель: Модель с WER 13.81%
- Обоснование: Лучшее распознавание слов при отличном CER
🚀 Быстрый старт
Установка зависимостей
pip install transformers torch librosa
import torch
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
# Загрузка модели и процессора
model_name = "https://huggingface.co/u7un/whisper-turkish-final"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)
# Отправка на GPU при наличии
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model.to(device)
def transcribe(audio_path):
"""Функция распознавания речи"""
# Загрузка аудио
audio, sr = librosa.load(audio_path, sr=16000)
# Подготовка признаков
input_features = processor(
audio,
sampling_rate=16000,
return_tensors="pt"
).input_features.to(device)
# Генерация транскрипции
with torch.no_grad():
predicted_ids = model.generate(
input_features,
forced_decoder_ids=processor.get_decoder_prompt_ids(
language="turkish",
task="transcribe"
)
)
# Декодирование
transcription = processor.batch_decode(
predicted_ids,
skip_special_tokens=True
)[0]
return transcription
# Пример использования
text = transcribe("путь_к_аудиофайлу.wav")
print(f"Распознанный текст: {text}")
📈 Детальный анализ ошибок
Типы исправленных ошибок:
| Ошибка | OpenAI | Наша модель |
|---|---|---|
| Турецкие символы | часто терял ğ, ü, ş, ı, ö, ç |
✅ корректно распознает |
| Долгие слова | обрезал | ✅ сохраняет полностью |
| Числительные | путал окончания | ✅ правильные падежи |
| Имена собственные | искажал | ✅ сохраняет |
Примеры распознавания:
📝 Оригинал: "merhaba bugün hava çok güzel"
OpenAI: "merhaba bugun hava cok guzel" ❌ (потеряны турецкие символы)
Наша: "merhaba bugün hava çok güzel" ✅
📝 Оригинал: "İstanbul'da dün gece yağmur yağdı"
OpenAI: "istanbulda dun gece yagmur yagdi" ❌
Наша: "İstanbul'da dün gece yağmur yağdı" ✅
💡 Применение
🎯 Идеальные сценарии использования:
- Транскрибация встреч и переговоров на турецком
- Субтитры для видео на турецком языке
- Голосовой ввод в мобильных приложениях
- Анализ звонков в колл-центрах
- Образовательные платформы для изучения турецкого
⚡ Производительность:
- Инференс: ~0.5 секунды на 10 секунд аудио на GPU
- Память: ~1.5 GB GPU RAM
- Формат аудио: WAV, MP3, FLAC, OGG (автоконвертация через librosa)
🔧 Тонкая настройка (Fine-tuning)
Если вы хотите дообучить модель дальше:
from transformers import WhisperForConditionalGeneration, WhisperProcessor, Trainer
# Загрузка нашей модели
model = WhisperForConditionalGeneration.from_pretrained(
"ваш-username/whisper-turkish-final"
)
processor = WhisperProcessor.from_pretrained(
"ваш-username/whisper-turkish-final"
)
# Далее стандартный пайплайн обучения Hugging Face
📜 Лицензия и авторство
Лицензия: MIT License
Особая благодарность:
- OpenAI за оригинальную модель Whisper
- Hugging Face 🤗 за библиотеку transformers
- mozzilla за предоставленные данные
Требуется указание авторства:
@misc{whisper-turkish-2026,
author = {Uzun Demir},
title = {Whisper Small Turkish ASR},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/u7un/whisper-turkish-final}
}
🐛 Известные проблемы и ограничения
- Фоновый шум - может снижать качество (рекомендуется чистое аудио)
- Диалекты - оптимизирована на стандартный турецкий
- Длинные аудио - лучше разбивать на сегменты до 30 секунд
🤝 Контакты и поддержка
- Вопросы: Создайте issue в репозитории
- Предложения: Pull request приветствуются
- Сотрудничество: Открыт для коллабораций
⭐ Цитирование
Если вы используете эту модель в исследованиях, пожалуйста, цитируйте:
@misc{whisper-turkish-2026,
author = {Uzun Demir},
title = {Fine-tuned Whisper Small for Turkish Speech Recognition},
year = {2026},
publisher = {Hugging Face},
journal = {Hugging Face Hub},
howpublished = {\url{https://huggingface.co/u7un/whisper-turkish-final}}
}
🏆 Итог: Модель готова к production использованию с WER 13.81% и CER 2.96%!
Evaluation results
- Word Error Rate (WER) on cv-corpus-24.0-2025-12-05self-reported13.810
- Character Error Rate (CER) on cv-corpus-24.0-2025-12-05self-reported2.960


