ASR · v1.0

Qwen3 Uzbek ASR

Gearnode/qwen3-asr-uzbek-v2 · FastAPI · bfloat16

Audio Input
00:00
Mikrofon orqali yozib oling
📂
Audio faylni tashlang yoki bosing
WAV · MP3 · OGG · FLAC · M4A
Streaming
Audio yuklang yoki mikrofon bilan yozib oling
Natija
Endpointlar
GET /health
Model holati va qurilma ma'lumotlari.
POST /transcribe
To'liq transkriptsiya — barcha segmentlar tayyor bo'lgach qaytadi.
# cURL misoli
curl -X POST http://localhost:8000/transcribe \
  -F "file=@audio.wav" \
  -F "language=Uzbek" \
  -F "return_timestamps=true"
# Javob (JSON)
{
  "text": "Salom, bu sinov.",
  "language": "Uzbek",
  "duration_seconds": 3.12,
  "processing_time_seconds": 1.05,
  "segments": [
    { "start": 0.0, "end": 1.4, "text": "Salom," },
    { "start": 1.4, "end": 3.1, "text": "bu sinov." }
  ]
}
POST /transcribe/stream
Streaming SSE — segmentlar aniqlanganda real-time uzatiladi.
# JavaScript — EventSource with fetch
const form = new FormData();
form.append('file', audioBlob, 'rec.wav');
form.append('language', 'Uzbek');

const res = await fetch('/transcribe/stream', { method: 'POST', body: form });
const reader = res.body.getReader();
const dec = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  // parse SSE lines ...
  console.log(dec.decode(value));
}
# SSE oqimi
event: status
data: {"message": "Audio received", "duration": 3.12}

event: segment
data: {"start": 0.0, "end": 1.4, "text": "Salom,"}

event: segment
data: {"start": 1.4, "end": 3.1, "text": "bu sinov."}

event: done
data: {"text": "Salom, bu sinov.", "processing_time_seconds": 1.05}
GET /languages
Qo'llab-quvvatlanadigan tillar ro'yxati.
{ "languages": ["Uzbek", "English", "Russian"] }
Interaktiv Swagger UI: /docs  ·  ReDoc: /redoc
Ishga tushirish
# O'rnatish
pip install fastapi uvicorn python-multipart librosa torch qwen-asr

# Ishga tushirish
uvicorn main:app --host 0.0.0.0 --port 8000 --reload