Transcription that stays home
A self-hosted Whisper model turns audio into text without a third-party vendor ever receiving the recording.
Heard here, not in a vendor’s cloud
The recording goes to a container on your infrastructure and a transcript comes back. That is the whole path — there is nobody else on it.
- Two request shapes. A multipart file or raw audio bytes — both reach the same model.
- The companion’s ear. A live session transcribes your microphone through this exact service.
- It reads cloning references too. Upload a clip to clone a voice and this is what transcribes it for you.
None of this ever leaves my own hardware.
One model, three jobs
Whisper, self-hosted
Transcription runs in your own container. Recordings of intimate conversations are never uploaded to a speech vendor who might retain or review them.
faster-whisper · port 8505Multipart or raw
Post a file as multipart form data, or stream raw audio bytes straight at the endpoint. Both reach the same model.
Two request shapesIt is the same ear the companion uses
Live sessions transcribe your microphone through this exact service, so what you test over the API is what she hears in a conversation.
Shared with sessionsFeeds voice cloning
When you upload a reference clip to clone a voice, this is what transcribes it, so you never have to type out what was said.
Automatic reference transcriptUpstream health check
A dedicated endpoint reports whether the transcription container is actually reachable, so your integration can degrade deliberately.
Health endpointNo per-minute meter
Transcription counts against your plan’s API allowance rather than being billed per audio minute by a third party.
Plan allowance
| Endpoint | Returns | Use it when |
|---|---|---|
| POST /speech-to-text | Transcript JSON | You have a file, sent as multipart form data. |
| POST /speech-to-text/stream | One JSON response | You are posting raw audio bytes. Not incremental — see below. |
| GET /speech-to-text/health | Upstream reachability | You want to degrade deliberately before users notice. |
The stream endpoint is not incremental
/speech-to-text/stream returns a single response, not a live token feed. It is named after the upstream route it proxies. If you are building live captions, chunk the audio yourself and call it repeatedly.
True incremental transcription is a different shape of API and is not built yet. It is listed here rather than left for you to discover halfway through an integration.
Before you integrate
What can I send it?
A file as multipart form data, or raw audio bytes posted straight at the endpoint. Both request shapes reach the same model.
Is the stream endpoint a live token feed?
No. It returns one JSON response and is named for the upstream route it proxies. For live captions, chunk the audio yourself and call it repeatedly — true incremental transcription is not built yet.
Does anyone else ever hear the audio?
No. Transcription runs in a container you operate, and no third-party speech vendor receives the recording — there is no third party in the path.
How is transcription billed?
Against your plan’s API allowance, not per audio minute — 5,000 calls on Free, 50,000 on Pro, unlimited on Enterprise. Details on the pricing page.
Is this what the companion listens with?
Yes. A live session transcribes your microphone through this exact service, and voice cloning uses it to read reference clips.