docs(memory): bank the Parakeet bench result and tts-dev's storage-vs-execution lesson
The IRV seat was retired on tts-dev's numbers: it lost to the FV seat at both clip lengths and to whisper-large-v3 at 6.24s. Their length sweep fits ~58ms fixed + 56ms per audio-second with an asymptote of ~17.8x realtime, which independently reproduces our 17x on a different clip and harness, and the gateway hop measured below their harness resolution so ext-stt is the right consumer path. Two caveats recorded against our own numbers: their between-run variance is 20% because GPU 0 carries the live chat path, and our 0.50s median came off an idle GPU 3 - a best case, not a comparable. Their RTFx retraction is the durable part: published RTFx is batched throughput on datacenter hardware rather than single-stream latency, and the two differ by ~200x. Also banks the shape their acceptance gate caught, because it generalises past their repo. A JS escape inside a Python string arrives transformed, closing the string and killing the whole inline script, while the page still renders and both import and node --check pass - the file still holds the backslash. That is the same failure as reading provider=cuda out of a log: a check that reads the artifact as stored cannot see a transformation that happens between storage and execution. Both check the input to a transformation and get reported as if they checked its output.
This commit is contained in:
@@ -118,9 +118,46 @@ that is where the `ext-tts` family lives, and it needs no gateway restart.
|
||||
2026-07-22 stack list. Only the parakeet/GPU-3 rows were corrected.
|
||||
|
||||
|
||||
## Two Parakeets, and the bench Vuong asked for
|
||||
## ✅ The bench, and why the IRV seat was retired
|
||||
|
||||
Both are live; endpoints sent to **tts-dev** 2026-09-15 for a head-to-head.
|
||||
Endpoints sent to **tts-dev** 2026-09-15; **IRV retired the same night on the result.**
|
||||
|
||||
**Result** (same clips, same client, same night, vs the Whisper incumbent):
|
||||
|
||||
| clip | whisper-large-v3 | IRV v2 / 3090 | FV v3 / Blackwell |
|
||||
|---|---|---|---|
|
||||
| 1.84 s | 457 ms | 354 ms | **155 ms** |
|
||||
| 6.24 s | 690 ms | **1010 ms** | **391 ms** |
|
||||
|
||||
IRV lost at both lengths and was *slower than the incumbent* at 6.24 s. Their length
|
||||
sweep (n=9/cell, first 3 discarded) fits **~58 ms fixed + 56 ms per audio-second**,
|
||||
asymptote **~17.8x realtime** — independently reproducing our 17x on a different clip
|
||||
and harness. Gateway hop measured **below their harness resolution** (±30 ms), so
|
||||
`ext-stt` is the right consumer path rather than a direct port.
|
||||
|
||||
⚠ **Their between-run variance is ±20%**, because GPU 0 carries the live chat path.
|
||||
Our 0.50 s median was taken on an idle GPU 3 — a best case, not a comparable.
|
||||
|
||||
⭐ **tts-dev retracted their own plan's 60-120 ms projection**: published RTFx is
|
||||
**batched throughput on datacenter hardware, not single-stream latency** — the two
|
||||
differ by **~200x**. Consequence that outlived the win: STT was never the bottleneck
|
||||
(~217 ms STT / 464 ms LLM / 478 ms TTS at a 3 s utterance).
|
||||
|
||||
**Consumer:** `talk`'s push-to-talk ("Grima") went live the same night through
|
||||
`/api/listen` -> `ext-stt`, 16 kHz mono decimated 3:1 in an AudioWorklet.
|
||||
|
||||
⭐ **Their acceptance gate is worth copying.** They drove a real Chromium handed our
|
||||
known clip as its microphone, through the page's real handlers. It caught a bug every
|
||||
cheaper check passed: a JS `'didn\'t'` inside a Python string arrives as `'didn't'`,
|
||||
closing the string and killing the whole inline script — while the page still renders,
|
||||
`import app` passes and `node --check` passes, because the file still holds the
|
||||
backslash. **Same shape as the silent-CPU-fallback trap: a check that reads the
|
||||
artifact AS STORED cannot see a transformation between storage and execution.**
|
||||
`node --check` reads the pre-Python file; `provider=cuda` in a log echoes configured
|
||||
intent. Both check the INPUT to a transformation and are reported as if they checked
|
||||
its output.
|
||||
|
||||
## The two seats, for the record
|
||||
|
||||
| | FV (new) | IRV (existing, up 2 months) |
|
||||
|---|---|---|
|
||||
|
||||
Reference in New Issue
Block a user