diff --git a/architecture/voicestudio-comparison.md b/architecture/voicestudio-comparison.md index f9e4b81..4dabd6c 100644 --- a/architecture/voicestudio-comparison.md +++ b/architecture/voicestudio-comparison.md @@ -46,7 +46,7 @@ an **MCP server** for agents. Default TTS engine is k2-fsa/OmniVoice; 15+ other | PDF/magazine → audiobook pipeline | **Yes — this app's whole magazine feature**: vision OCR, box/region review UI, undo/redo, spelling & acronym agents, article linking, per-article MP3 | **No equivalent** — no document ingestion or layout review of any kind | | Video dubbing | No | Yes | | Live dictation | No | Yes (floating widget, Rust sidecar) | -| Transcription | Basic (Whisper via conversation routes) | Multiple ASR engines, 646 languages, speaker diarization | +| Transcription | Whisper (conversation routes); speaker diarization exists too (`routes/stt.py`, pyannote/speaker-diarization-3.1, gated behind accepting that model's HF license) | Multiple ASR engines, 646 languages, speaker diarization | | REST API | Yes | Yes | | MCP server | Yes (`speak`, `transcribe`, `list_captures`, `list_profiles`, `list_books`) | Yes (`generate_speech`, `clone_voice`, `transcribe`, `list_voices`, …) | | License | Private/internal (per CLAUDE.md: never open-sourced without asking) | AGPL-3.0 (commercial license available) | @@ -92,3 +92,101 @@ magazine pipeline has no counterpart to compare against. Worth revisiting narrow without wiring a new backend into this app first. No integration was started; this is an evaluation record only, per the TODO item. + +## UI/UX and feature-parity deep dive — 2026-09-29 + +**Methodology, stated plainly:** no browser was available to render either live UI this +session (no Chromium binary for Puppeteer, no connected DevTools extension). VoiceStudio's +screens below are its **own published screenshots**, fetched from its repo +(`docs/media/electron/*.png`) and viewed directly — real product screenshots, not a live +session. This app's side is grounded in its actual served navigation +(`curl https://voice.martin-bierschenk.de/`, parsed for `data-nav-section`) and this +session's own knowledge of its routes/templates — not a rendered screenshot. Anything below +attributed to "this app" is checked against a file or route; anything about VoiceStudio's +*screens* is what its own screenshot shows, not a guess. + +### VoiceStudio's screens (from its repo) + +- **Voice cloning** (`voice-cloning.png`): left sidebar (Voice → Clone/Design/Saved/Gallery, + Stories, Dubbing, Transcribe, Projects, Tools, Integrations), a script editor with + import/paste/insert, a bottom dock of **third-party integrations already wired into the + chrome itself** (Twilio, Plivo, Telnyx, n8n, Zapier, Make, GitHub, GitHub Container + Registry, Docker, …), and a top-right **global search / command palette** and "Recent + takes" history spanning the whole app, not one workspace. +- **Voice design** (`voice-design.png`): a free-text description box, but also a **curated + gallery of named starting-point personas** ("The Librarian", "The Anchor", "Captain + Crusty", …) each with a one-line pitch, a play button for a real demo clip, and + "Use this design →". Plus quick descriptor tags (Narrator/Casual/News Anchor/Storyteller/ + Corporate/Energetic/Whisper/…) and a "Details" editor (age, pitch). +- **Video dubbing** (`dubbing.png`): upload/paste a YouTube URL → transcribe → pick target + language + dialect + translator (an **offline NLLB-200 (Local, Heavy)** option is offered + right next to "Translate with AI") → timing/production overrides → generate. A synced + side-by-side waveform player plays the **original and dubbed audio together**, with a + language switcher to preview other dubs of the same demo before running your own file. +- **Model management** (`models.png`): one-click **model-pack tiers** (Fast/Balanced/ + Quality/Max) that bundle a whole TTS+ASR+dictation+translation stack with the disk size + shown before you commit ("8.5 GB installed size"), per-category model pickers (TTS/ASR/ + Dictation/Diarisation/Translation/LLM), a voice-preview pre-rendering toggle, an explicit + compute-device picker, and a Hugging Face mirror selector. The Settings sidebar alone has + 19 sections (General, Appearance, Models, Pronunciation dictionary, Updates, Network, + Sharing & Remote Access, Credentials, Compute device, Usage, Remote workers, Privacy, + Permissions, Storage, Support, …). + +### This app's screens (from its served nav and routes) + +Sidebar: **Voices** (Clone a Voice / Design a Voice / Get a Voice Online), **Quick Play**, +**Conversation**, **Cast Studio**, **Reader** (audiobook), **Magazine**, **Rehearser**, +**Library**, **Benchmark**, **Engines** (LLM routing), **App Routing**, **Connect Apps**, +**Settings**. Settings itself has 4 pages (General, Payloads, Storage, API keys) — thin +next to VoiceStudio's 19. "Connect Apps" is a real counterpart to VoiceStudio's integration +dock, just aimed at a different audience: ready-made snippets for SillyTavern, Open WebUI, +Home Assistant, Claude Code MCP, a raw `/speak` REST call, and a **global hotkey daemon** — +AI-tooling integrations rather than VoiceStudio's telephony/business-automation set +(Twilio, Plivo, Telnyx, Zapier, Make). Voice Design already has save/load/delete named +presets (`design-preset-*`), just as a plain dropdown, not a curated gallery with demo audio. + +### Features VoiceStudio has that this app doesn't (real gaps, not nitpicks) + +1. **Video dubbing end to end** — upload/URL → transcribe → translate (with an offline + model option) → re-synthesize timed to the original. This app has nothing upstream of + TTS for video at all. +2. **Live STT dictation into any focused app** (its Rust sidecar + floating widget). This + app's "hotkey daemon" triggers *playback* of a voice, not speech-to-text insertion — a + different feature wearing a similar name; do not conflate the two. +3. **Telephony integrations** (Twilio, Plivo, Telnyx) for inbound/outbound call voice — + this app's integration list is chat/automation tools, not telephony. +4. **Standalone offline translation** (NLLB-200 as a first-class, selectable model) — this + app has no translation step anywhere in its pipeline. +5. **Model-pack tiers and an explicit compute-device picker in the UI** — this app's engine + endpoints (Qwen3-TTS, vision OCR, the LLM) are configured as URLs in Settings/Payloads, + not chosen from an in-app catalog with disk-size and device shown up front. +6. **A global command palette / search and cross-app "recent takes" history** — this app's + history (undo/redo, generation history) is per-feature (e.g. the magazine's own 20-step + undo stack), not a single cross-app view. +7. **A curated voice-design preset gallery with demo audio** — a real UX idea worth + borrowing even without adopting anything else: a handful of named, demo-backed starting + points lower the bar for someone who doesn't know how to word a voice description, versus + this app's blank textarea plus a plain preset dropdown. + +### Where this app is ahead that VoiceStudio's screens don't show + +Confirms the earlier verdict: the **entire magazine pipeline**, **Cast Studio**/character +casting, the **Rehearser**, and the **Reader**'s audiobook-specific workflow have no +counterpart anywhere in VoiceStudio's four screens or its feature catalog — it has no +document ingestion, no per-article review, and no multi-character casting concept at all. + +### What is worth actually adopting here + +Two low-risk, high-value ideas, independent of any VoiceStudio integration: + +- **A curated voice-design preset gallery** (a handful of named personas with a demo clip + and one-click "use this design") in `s-design.html` — the single most transferable idea + above, since this app already has the preset save/load machinery to hang it on. +- **An explicit compute-device indicator** somewhere in Settings, mirroring VoiceStudio's — + cheap to add (query the backend once) and answers "is this actually using the GPU?" + without opening a shell, a question this app's Settings currently has no answer to at all. + +Video dubbing, telephony integrations, and a full model-pack catalog are real gaps but not +small asks — each is its own multi-day feature, not a quick addition, and none of them +serve the magazine/audiobook workflow this app is actually for. They belong on a future +roadmap decision, not this evaluation.