Abstract
A FastAPI service that wraps a Qwen-family speech-recognition model behind a local HTTP API, letting other applications submit audio and receive transcriptions without duplicating model-loading code. The reportable design choice is the clean split between model inference and the calling layer.
1. What This Is
I built this as a reusable ASR integration point. The goal was to turn a model-specific speech-recognition stack into an application-independent local service so that surrounding media or agent applications do not each need their own ASR setup code. The wrapper stays model-facing: callers submit audio, the service handles initialization and inference, and a transcription result comes back.
2. How It Works
The service follows a straightforward request-to-transcription pipeline. On startup the configured Qwen ASR model is loaded once; each subsequent request flows through the same five stages.
| # | Stage | Input | Tool | Output |
|---|---|---|---|---|
| 01 | Service start | Config | FastAPI | Loaded model instance |
| 02 | Audio receive | HTTP request | FastAPI endpoint | Raw audio payload |
| 03 | Audio prep | Raw audio | Model wrapper | Normalized buffer |
| 04 | Inference | Normalized audio | Qwen ASR model | Transcription text |
| 05 | Response | Transcription | FastAPI | JSON to caller |
3. Constraints
-
No public repository
No matching GitHub repo was found, and the exact Qwen checkpoint or serving backend is not documented. Reproducing the setup from the portfolio entry alone is not possible.
-
Batch-only, no streaming
The documented flow is request-then-transcribe. There is no mention of chunked or streaming audio, so latency for long recordings is unbounded by design.
-
Single-process assumption
The model is loaded once at startup. No concurrency, worker-pool, or GPU-scheduling details are described, so simultaneous requests would serialize on a single inference thread.
-
Language support unspecified
The project notes intentionally do not claim which languages the chosen checkpoint handles, so callers cannot rely on multilingual coverage without testing.
4. Next
- a. Pin the exact Qwen checkpoint, document supported languages, and publish the repo with a reproducible requirements file.
- b. Add a streaming or chunked-audio endpoint so callers can get partial transcriptions before the full clip is processed.
- c. Add basic auth and a request-rate limit before the service is exposed beyond localhost.
— end of report —