feat(site): split playground into STT / TTS / Analysis pages - #51
Merged
Conversation
The playground split (one page per function) needs to filter the engine catalog per page. Category lives on the registry entry so new engines are routed to the right page at registration time instead of via page-side id lists.
One all-in-one playground page becomes three function-specific pages, each a
thin entry over a shared core:
- index.html (src/stt.ts) — Speech to Text: the five ASR engines, live mic
mode, SRT/VTT caption downloads, Parakeet custom-vocabulary + ITN row,
transcription progress. Root URL stays the flagship transcription demo.
- tts.html (src/tts.ts) — Text to Speech: TTS engines from the registry;
text box, audio player, WAV download.
- analyze.html (src/analyze.ts) — Analysis: Silero VAD + Sortformer
diarization; file in, segment listing out.
src/main.ts moves bodily into src/pages/playground.ts as
initPlayground({ category, ... }): the engine picker filters the registry by
category (availability probes intact), page-only UI (mic, captions, vocab,
player, WAV link) is gated on flags plus element presence, and the run /
load / live-mic flows are unchanged. tts.html gains the WAV download the
old combined page never had; the player element moves off index.html with
the text row since only TTS used them.
live.html and music.html get the five-item nav; all pages mark the current
page unlinked. vite rollupOptions gains tts + analyze inputs.
README live links, quick start, layout tree, and the registry category note; ARCHITECTURE entry-points section; STREAMING mic-loop references follow main.ts → pages/playground.ts.
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
fluidaudio-web | b9dbaad | Aug 23 2026, 08:38 PM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #50 (feat/transcribe-progress) — the shared run flow carries that PR's transcription-progress reporting, so this branches from it rather than main. Rebase onto main after #50 merges.
Structure
One all-in-one playground becomes one page per function, all deriving their engine picker from the registry:
index.html— Speech to Text (root URL stays the flagship demo)src/stt.tsasr-parakeet,asr-whisper,asr-nemotron,eou-parakeet,asr-voicechattts.html— Text to Speechsrc/tts.tstts-kokoro-en,tts-kokoro-zh(+ anything the registry gains, e.g. a futuretts-voicechat)analyze.html— Analysissrc/analyze.tsvad-silero(detect),diarization-sortformer(diarize)All five pages (incl.
live.html,music.html) share the nav "Speech to Text · Text to Speech · Analysis · Live captions · Music" with the current page bold/unlinked.Registry category field
EngineEntrygainscategory: "stt" | "tts" | "analysis"; each page filtersENGINESby it, so a newly registered engine lands on the right page with no page-side id lists. Availability probes (e.g.asr-voicechat) still prune per page.EngineCategoryis re-exported from the SDK root.Shared core
src/main.tsmoved bodily intosrc/pages/playground.tsasinitPlayground({ category, defaultEngineId?, mic?, captions?, vocab? })— pick→load→run, live-mic, captions, and vocab/ITN logic unchanged; page-only UI is gated on flags + element presence. The three entries are thin one-liners. Only additive behavior:tts.htmlgets a WAV download the combined page never offered.Gates
npx tsc --noEmitclean;npm run buildemits all five pages todist/prettier/npm run format:checkclean;npm run conformanceOKci-smoke-parakeet+ci-smoke-kokoroOK against cached weightsvite previewcurl-checked: each page serves its title, nav, and its own entry chunk