
ASR Service
2026
What it is. ASR Service is a self-hosted speech-to-text platform I built around one idea: keep the client contract dead simple while the backend routes each request to whichever recognition model fits the job. It ships with a dark, focused web console — a usage dashboard, an API-key manager, a model registry, a Model Manager, a live playground, and docs — sitting on top of an audio-routing core that speaks WebRTC, WebSocket, and plain HTTP, with an ElevenLabs-compatible STT surface so existing clients drop in unchanged.
What it does. I register multiple ASR engines side by side and the service load-balances across them by name. In the current deployment that's kyutai/stt-2.6b-en (a streaming moshi-stt model), Qwen/Qwen3-ASR-1.7B, and openai/whisper-large-v3-turbo — each running as its own container on a dedicated port, each reporting Connected/Healthy status, concurrency limits, and its supported language set (Qwen and Whisper cover 30-plus languages between them). The dashboard tracks total requests, minutes of audio transcribed, average and percentile latency, active model count, error rate, and a per-model performance table. The playground lets me record from a mic or drag in a file, pick a model, watch the transcript stream back, and save clips to a reusable test suite.
The interesting engineering. The piece I'm proudest of is the Model Manager: instead of hand-writing a wrapper for every new model, I point it at a Hugging Face or GitHub link and it analyzes the model, builds a compatible ASR Docker container, deploys it, and auto-registers it in the console — so onboarding a new engine is a URL, not a coding task. For live transcription I fall back to a lightweight Whisper model to stream interim results while a heavier main model finishes, and the input stack is built for VAD gating plus pluggable stages like speaker identification/separation and noise cancellation. Health checks, per-model endpoints, and concurrency controls keep the fleet observable and safe to route against.
Stack: Python ASR core, Docker-per-model containers, WebRTC/WebSocket/HTTP transports, a React admin console, and an ElevenLabs-compatible API. Tracked in Orchestrator as ASR Service (repo yolanother/asrservice).
Links: asr.doubtech.com
Image Gallery


