Overview
dsh-phononspeak
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
- **The Pocket model speaks like a parliament.** It was trained on 976 hours of Czech parliamentary speech: adults, formal register, many men. Conversational Czech, children and casual word order are weaker. Good narration, not a voice actor. - **Piper mispronounces Czech words.** Measured on the raw engine: "Vltava" comes out as "Voltava" and "Kč" as "káčej". The normaliser rewrites money before synthesis, so "Kč" reaches the engine as "korun"; place names and loanwords are not rewritten, and those still slip. Piper is the cheapest engine, not the best one. - **Supertonic has no streaming API.** We stream by sentence: the first sentence is synthesised and played while the next one is being made. That keeps the first sound early, but it is not a sample-level stream. - **macOS-first.** Linux and Windows have no `say`, no `afplay` and no `osascript`. The engines still work, but sound comes from the page, and notification plus repeat-until-acknowledged are macOS features. When no tab is visible on a non-macOS host, the system-playback path has nothing to play. - **Pocket costs about 1 GB** of Python and torch before the 438 MB model. Choose Supertonic or Piper if that is too much. - **The plugin speaks what it is told.** It normalises and shortens text, but it cannot tell whether the model's summary is a good summary. A vague summary is read out as confidently as a precise one. - **Speed is engine-dependent.** The host clamps every value to 0.7–1.6; `say` maps it to words per minute, Piper falls back to its default rate if its CLI rejects the flag, and Pocket TTS Czech has no speed control at all, so the slider does nothing on that engine. - **Paragraph-level, not conversation-level.** There is no history of what was read, no per-message "read this" button, no keyboard shortcut and no slash command in 0.1.0. - **The queue is bounded.** At most 24 waiting jobs: beyond that the oldest waiting job is dropped, and a single job is capped at 20 000 characters before normalisation.
