Skip to content

Spec 1.20: Speech, text read aloud (DESIGN §38; stacked on #41) - #42

Merged
NoSQLKnowHow merged 1 commit into
prompt-builderfrom
speech-spec
Nov 9, 2026
Merged

NoSQLKnowHow merged 1 commit into
prompt-builderfrom
speech-spec

Conversation

@NoSQLKnowHow

Copy link
Copy Markdown
Owner

What this is

A specification only for version 1.20, the Speech tab (text read aloud). One file changes, docs/DESIGN.md: a new §38 (17 subsections), decision #57, a 1.20 row in the status table, the STUDIO_SPEECH_* settings in §13, and a row in the "which decisions are built" table. No code, no tests, nothing built or run.

Stacked on #41 (the 1.19 Prompt builder, still open). The base is prompt-builder so the diff shows only the spec; §38 follows §37, which exists only there. Merge #41 first. GitHub moves this PR to main when #41's branch is deleted. It should not be merged before #41.

What §38 settles

Your fourteen answers and three free-text wishes (a female American, UK or Irish voice if possible; open to other models; clone your own voice) are recorded in a table at the top of §38.

  • Engines behind one adapter (a model is one file and one registry line): Qwen3-TTS (CustomVoice, VoiceDesign, Base), Voxtral, Kokoro-82M, and Piper with the Jenny (Irish) voice. VibeVoice is not built: Microsoft removed its TTS code in September 2025. It can be added later as one file.
  • Voices: presets with a Play sample button, voices designed from a description, and your own voice cloned from a passage you read and upload. A designed voice is saved and used through the clone route so a book keeps one voice.
  • Sources: pasted text, a web address (public sites only, with a guard against private addresses), .txt, .md, PDF, EPUB and Word.
  • Reading and playback: a reading is one queue entry that is re-queued after every part, so other jobs run between parts. Parts follow chapters, each piece plays as soon as it is made, the read-along is paragraph-level, the output is WAV only, and readings never expire.
  • Schema 10, the API, the settings, 37 acceptance criteria (258 to 294), 22 small choices to overrule (§38.12), the Spark checks (§38.14) and the build order (§38.17).

Please look at

  1. No documented voice is a female American, UK or Irish voice from Qwen3-TTS or Voxtral. The candidates are Kokoro's af_bella, af_heart, af_nicole and bf_emma, Piper's Jenny, Voxtral's neutral_female, casual_female and cheerful_female (accent unknown), and a voice you design. Only the Spark and your ears can pick; every voice gets a Play sample button.
  2. Cloned and designed voices take no style note. They run on Qwen3-TTS's Base checkpoint, which its card does not mark as taking an instruction (§38.1).
  3. Voxtral is the riskiest engine: no reported run on a Spark, a non-commercial licence, and a vLLM-Omni serving stack. It is specified as an optional install that reports not installed with a reason (§38.3).
  4. New libraries are proposed, not confirmed: trafilatura, a PDF reader, and ffmpeg for decoding voice recordings (§38.12, choices 16 and 17).

What was and was not checked

  • Checked mechanically: every §38.x reference points at a heading that exists; criteria 258 to 294 are contiguous (37); 22 small choices; backend/tests/test_docker_context.py passes, the one test that names docs/DESIGN.md.
  • Not checked: the model facts come from the model cards, READMEs and file listings as a page-reading tool returned them on 2026-11-08. I did not open the model files. Section 26 records why that matters, so step 0 of the build re-reads the primary files before any code relies on a number. Download sizes other than Voxtral's 8 GB are my arithmetic. There is no GPU here.

Found while writing this (belongs to #41, not changed here)

Decision row 56 in the decision log still says "not built", although §37 is built in 1.19.


Generated by Claude Code

A specification only; nothing is built or run. Section 38 records the
owner's fourteen answers and three free-text wishes (a female American,
UK or Irish voice if possible; open to other models; clone their own
voice) and specifies a fifth tab that reads text aloud.

What it settles:
- Engines behind one adapter (a model is one file and one registry line):
  Qwen3-TTS (CustomVoice, VoiceDesign, Base), Voxtral, Kokoro-82M and
  Piper with the Jenny (Irish) voice. VibeVoice is not built: Microsoft
  removed its TTS code.
- Voices: presets with a Play sample button, voices designed from a
  description, and the owner's own voice cloned from a passage read aloud
  and uploaded. A designed voice is saved and used through the clone
  route so a book keeps one voice.
- Sources: pasted text, a web address (public sites only, with a guard
  against private addresses), .txt, .md, PDF, EPUB and Word.
- A reading is one queue entry that is re-queued after every part, so
  other jobs run between parts; parts per chapter, each piece playable as
  soon as it is made, a paragraph-level read-along, WAV only, and
  readings that never expire.
- Schema 10, the API, the settings, 37 acceptance criteria (258 to 294),
  the Spark checks and the build order.

Facts about the models come from their cards as a page-reading tool
returned them on 2026-11-08; step 0 of the build re-reads the primary
files first, as section 26 learned to do.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
@NoSQLKnowHow
NoSQLKnowHow merged commit a018055 into prompt-builder Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants