📊 Natijalar
Table with columns: Ko'rsatkich, Qiymat| Ko'rsatkich | Qiymat |
|---|
| WER (Word Error Rate) | 28.64% |
| Validation Loss | 0.2634 |
| Model hajmi | ~242M parametr (Whisper-small) |
Table with columns: Training Loss, Epoch, Step, Validation Loss, WER| Training Loss | Epoch | Step | Validation Loss | WER |
|---|
| 3.0847 | 0.68 | 400 | 0.3161 | 32.49 |
| 2.4038 | 1.35 | 800 | 0.2827 | 29.58 |
| 2.0104 | 2.03 | 1200 | 0.2708 | 30.53 |
| 1.9056 | 2.70 | 1600 | 0.2647 | 28.92 |
| 1.9695 | 3.00 | 1776 | 0.2634 | 28.64 |
🚀 Tezkor boshlash
O'rnatish
pip install transformers torch librosa soundfile
1-usul: pipeline bilan (eng oson)
from transformers import pipeline
transcriber = pipeline(
"automatic-speech-recognition",
model="maqsudxo1ja/uz-whisper-small-stt-v2"
)
result = transcriber("audio_fayl.mp3")
print(result["text"])
2-usul: to'g'ridan-to'g'ri model bilan (batafsil nazorat)
import torch
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
MODEL_ID = "maqsudxo1ja/uz-whisper-small-stt-v2"
processor = WhisperProcessor.from_pretrained(MODEL_ID, language="uzbek", task="transcribe")
model = WhisperForConditionalGeneration.from_pretrained(MODEL_ID)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
audio, sr = librosa.load("audio_fayl.mp3", sr=16000)
input_features = processor(
audio, sampling_rate=sr, return_tensors="pt"
).input_features.to(device)
predicted_ids = model.generate(input_features, language="uzbek", task="transcribe")
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
print(transcription)
3-usul: mikrofondan real vaqtda (namuna)
import sounddevice as sd
import numpy as np
from transformers import pipeline
transcriber = pipeline("automatic-speech-recognition", model="maqsudxo1ja/uz-whisper-small-stt-v2")
duration = 5
print("🎙️ Gapiring...")
audio = sd.rec(int(duration * 16000), samplerate=16000, channels=1, dtype="float32")
sd.wait()
result = transcriber({"array": audio.flatten(), "sampling_rate": 16000})
print("Natija:", result["text"])
🎯 Qo'llanish sohalari
- O'zbek tilidagi audio/video kontentni matnga aylantirish
- Ovozli buyruqlar va ovozli yordamchilar
- Suhbat/qo'ng'iroqlarni avtomatik transkripsiya qilish
- Subtitr (subtitle) generatsiya qilish
- IT/texnik mavzudagi nutqni tanish (dataset shu yo'nalishga moslashtirilgan)
⚠️ Cheklovlar
- Model so'zlashuv uslubidagi (natural, notekis) nutqqa moslashtirilgan — diktant uslubidagi rasmiy nutqda (masalan, Common Voice uslubi) natija farq qilishi mumkin
- Fon shovqini yuqori bo'lgan audio yozuvlarda aniqlik pasayishi mumkin
- Juda qisqa (1 soniyadan kam) audio kliplarda ishonchli natija bermasligi mumkin
- Asosan IT/texnologiya mavzusidagi so'z boyligiga moslashtirilgan — boshqa sohalarda (tibbiyot, huquq va h.k.) aniqlik pastroq bo'lishi mumkin
🏋️ Training haqida
Asosiy model: maqsudxo1ja/uz-whisper-small-stt
Dataset: islomov/it_youtube_uzbek_speech_dataset — 21,000 audio klip, IT mavzusidagi YouTube videolardan (Mohir Dev)
Hyperparametrlar
Table with columns: Parametr, Qiymat| Parametr | Qiymat |
|---|
| Learning rate | 1e-5 |
| Train batch size | 4 (effektiv: 32, gradient accumulation orqali) |
| Optimizer | AdamW (fused) |
| LR scheduler | linear, 200 warmup step |
| Epochs | 3 |
Framework versiyalari
- Transformers 5.13.1
- PyTorch 2.13.0+cu130
- Datasets 5.0.0
- Tokenizers 0.22.2
📄 Litsenziya
Apache 2.0
🙏 Minnatdorchilik