π The claim, and why it holds
Hugging Face's speech-to-speech is a four-stage voice pipeline β VAD β STT β LLM β TTS β behind an OpenAI Realtime-compatible WebSocket API. Every stage is a swappable flag.
π One line, not one rewrite 0:18
This is the design decision everything else depends on, and it is correctly reported. The pipeline implements the OpenAI Realtime protocol, so an existing application does not learn a new API β it changes an endpoint.
127.0.0.1 in four places and base_url in thirteen. The server starts at ws://localhost:8765/v1/realtime, and the documented pattern points the LLM slot at http://127.0.0.1:8080/v1 for a local llama.cpp backend.ποΈ VAD: the personality dial 1:17
Silero VAD v5 decides when you started and stopped speaking. The video's framing of it is the sharpest observation in the piece:
--min_silence_ms: "minimum length of silence intervals for segmenting speech. Default is 64 ms." It also exposes --min_speech_ms 384 and --min_speech_continuation_ms 192 as the recommended pairing, plus a merge window and a reopen cap β considerably more turn-taking control than the video has time to mention.π Transcription without Whisper 1:55
The default STT is NVIDIA Parakeet TDT 0.6B v3, not Whisper. The video gives three numbers; two are verifiable in NVIDIA's model card and both are right.
| Claim | Verified |
|---|---|
| 600M parameters, v3 | Card: "a 600-million-parameter multilingual ASR model" |
| 25 European languages, auto-detected | Card: "expanding language support from English to 25 European languages⦠automatically detects the language⦠without requiring additional prompting" |
| 6.34% average WER on the OpenASR leaderboard | Card benchmark table: parakeet-tdt-0.6b-v3 β 6.34% |
| ~3,000Γ real time | Not stated in the card in that form; RTFx figures live on the leaderboard rather than the card |
[faster-whisper], [whisper-mlx]). The default changed; the option did not disappear.Note the licence difference the video does not mention: Parakeet is CC-BY-4.0, not Apache-2.0 like the pipeline around it. It has 747,858 downloads on v2 and 207,975 on v3, so this is a mainstream choice β but "the whole stack is Apache" is not quite right once you include the default weights.
π§ The LLM slot is a socket 2:35
Any OpenAI-compatible endpoint works: OpenAI itself, HF Inference Providers, OpenRouter, a vLLM server, a llama.cpp server β or skip the server entirely and run in-process through Transformers on a GPU or MLX-LM on Apple Silicon.
π£οΈ The voice, and first-packet time 3:03
Default TTS is Qwen3-TTS β 1.7B, voice cloning from about three seconds of reference audio. The video's numbers: streams in ~320 ms packets, first packet lands under 120 ms.
That is the correct metric for conversational systems and it is routinely reported wrong. Total synthesis time is an engineering number; time to first audio is the number the human experiences. A system that starts speaking in 120 ms and finishes in two seconds feels responsive; one that is silent for 800 ms and then delivers instantly feels broken.
π― Naming the bottleneck 3:43
The payoff, and the reason this video is worth covering at all. Having built the four stages, the presenter adds them up:
| Stage | Contribution to perceived delay |
|---|---|
| VAD (Silero) | Milliseconds |
| STT (Parakeet) | "Effectively milliseconds" |
| TTS (Qwen3) | First audio inside a tenth of a second |
| LLM | Everything else |
Note the structural constraint, which is a property of cascades rather than of this implementation: the TTS cannot start until the LLM emits its first usable text. That serialisation is the price of modularity, and it is what end-to-end audio models exist to remove.
None of those figures appear in the README β I checked for each. What the README does contain is the exact invocation:
--model_name "google/gemma-4-31B-it:cerebras" pointed at https://router.huggingface.co/v1, with reasoning disabled "for low voice latency". So the configuration is real and documented; the throughput numbers are attributed to Artificial Analysis and were not independently reproduced here. Treat them as third-party benchmark claims.π The tail, not the average 4:58
This generalises well past voice. Any interactive system where a human is waiting is graded on its tail, and reporting medians hides exactly the failures that lose users. It is the same reason a fluent-but-occasionally-wrong answer is worse than a consistently cautious one: people remember the outlier, not the distribution.
πΈ Offline, and the cost trap 5:11
The reverse direction: nothing here requires a cloud. Run llama-server with a Gemma 4 GGUF, point the pipeline at 127.0.0.1:8080, done. On a Mac it collapses to a single optimal-settings flag putting all three models on Metal β Parakeet for ears, MLX-LM for thinking, Qwen3-TTS through mlx-audio for the mouth. "Works in airplane mode."
CPU-only is covered too: Kokoro-82M with 54 voices at roughly 6Γ real time without a GPU, or Pocket TTS at ~100M with first audio in about 200 ms.
The economics, checked
gpt-realtime-2.1 audio at $32.00 per 1M input tokens and $64.00 per 1M output β the two figures quoted, verbatim.The video then does the arithmetic most coverage skips: your speech is billed at one token per 100 ms, its speech at one per 50 ms. So a minute of you talking is 600 tokens; a minute of it answering is 1,200. Measured sessions land between roughly 5Β’ and 46Β’ per conversation minute.
gpt-realtime-2.1-mini at $10 / $20 per million audio tokens β roughly a third of the headline rate. The cost argument for self-hosting survives that comparison, but a fair version would have named the cheaper tier rather than pricing only the flagship.βοΈ What it costs you to own 6:35
The section that earns the video its credibility, and it is unprompted:
And the closing advice is the right one: "install it, run the recipe, and time each of the four stages yourself on your own hardware. The entire argument for this repo is that you can finally measure which stage is slow." The product being sold here is measurability, not speed.
π¦ Reading this from a bank
| Property | Implication in a regulated setting |
|---|---|
| Fully local, airplane-mode capable | Customer voice never leaves the perimeter β the decisive argument for regulated telephony, where recordings are personal data by default |
| OpenAI-protocol compatible | An exit path from a hosted vendor that does not require rewriting the application β concentration-risk mitigation you can actually evidence |
| Apache-2.0 pipeline | Commercially usable, auditable, self-hostable |
| Default STT is CC-BY-4.0, not Apache | Mixed licensing inside one stack β attribution obligations differ per component and need checking before deployment |
| Four components, no support contract | Four upgrade paths, four CVE surfaces, four things to pin. Named by the presenter, and it is the real operating cost |
| Voice cloning from ~3 s of audio | A capability with obvious fraud implications in a bank. Whatever else you do, this argues for consent controls and synthetic-speech detection on the inbound side |
| Interruption handling | Barge-in is table stakes for real telephony, and it is transport-level here rather than a model feature |
The flip side is the honest one the video names: four parts is four things to maintain, and nobody is on the other end of the phone when one of them breaks.
π Claims checked
| Claim | Result |
|---|---|
| Repo exists, Apache-2.0, four-stage swappable pipeline | Confirmed β 10,161 β, 1,245 forks, README matches the description |
| OpenAI Realtime protocol; change the base URL to 127.0.0.1 | Confirmed β 127.0.0.1 Γ4, base_url Γ13 in the README |
| Silero VAD, 64 ms default silence | Confirmed β --min_silence_ms, "Default is 64 ms" |
| Parakeet TDT 0.6B v3, 25 European languages, auto-detect | Confirmed verbatim in NVIDIA's model card |
| 6.34% average WER | Confirmed in the card's benchmark table |
| ~3,000Γ real time | Not in that form on the card; leaderboard figure, not reproduced here |
| Qwen3-TTS: 320 ms packets, first packet under 120 ms | Not in the README. Presenter's or vendor's measurement β no benchmark cited |
| OpenAI Realtime audio: $32/1M in, $64/1M out | Exact. OpenAI pricing page, gpt-realtime-2.1 |
| β¦but a cheaper tier exists | Omitted. gpt-realtime-2.1-mini is $10/$20 β roughly a third |
| Gemma 4 31B on Cerebras at 1,851 tok/s, ~35Γ a GPU endpoint | Not in the README. Attributed to Artificial Analysis; the :cerebras invocation itself is documented |
| Runs in production on thousands of Reachy Mini robots | README: "thousands of Reachy Mini robots". Video says 9,000+ β same order |
| Repo is from August 2024, backends have churned | Created 7 Aug 2024. The video says this itself β a volunteered correction |
| Kokoro-82M, Pocket TTS, ChatTTS, MMS, Faster-Whisper as options | All present as documented pip extras |
| "The whole stack is Apache 2.0" | Imprecise. The pipeline is; the default STT weights are CC-BY-4.0 |
π‘ Key takeaways
- Three of the four stages are effectively free. VAD, STT and TTS are milliseconds; the language model holds the entire perceived delay by itself.
- Which means most voice-agent optimisation targets the wrong stage. If it feels slow, the model is thinking β faster ASR will not save you.
- Protocol compatibility is the distribution strategy. Reimplementing OpenAI's Realtime API means an existing app changes a URL, not an architecture.
- One number is most of the assistant's personality. 64 ms default silence before your turn ends: raise it and it waits, drop it and it interrupts.
- Barge-in is a transport property, not a model feature β which is why request-response APIs cannot offer it.
- Time to first audio beats total synthesis time. The moment the first syllable lands, the human stops feeling ignored.
- Hunt the 95th percentile, not the average. The occasional three-second stall is what makes an assistant feel broken; your median was fine.
- $32/$64 per million audio tokens is real β verified on OpenAI's pricing page β but a mini tier at $10/$20 exists and went unmentioned.
- A minute of you is 600 tokens; a minute of it is 1,200. Sessions land at 5β46Β’ per conversation minute, before you multiply by a support queue.
- This ships on hardware. Thousands of Reachy Mini robots run it in production β a better argument than any benchmark.
- Modularity's price is serialisation. Nothing can be spoken until the model produces text; that is the cascade tax an end-to-end model avoids.
- Four parts, four ways to fail, no support contract. Named by the presenter, unprompted, alongside "pin your versions" β the repo is two years old and its defaults have already turned over once.
π Resources & links
- Run Local Real-Time Voice AI at 1,800+ Tokens/SecSource video β Cloud Codes, 7:30, 31 July 2026
- huggingface/speech-to-speech10,161 stars, Apache-2.0. The README is detailed and worth reading directly
- NVIDIA Parakeet TDT 0.6B v3Default STT β 25 European languages, 6.34% average WER, CC-BY-4.0
- Silero VADThe turn-taking layer β where the 64 ms personality dial lives
- Kokoro-82MThe CPU-only TTS option β 54 voices, ~6Γ real time without a GPU
- OpenAI pricingWhere the $32/$64 audio rates are confirmed β and the $10/$20 mini tier is listed
- Reachy MiniThe robot running this pipeline in production