voice declarations: mark Flextalk voices no-pitch; refresh contract snapshot

This commit is contained in:
Fisto
2026-09-15 11:55:49 +02:00
parent 4bed006ea9
commit fa4fbaf74b
3 changed files with 19 additions and 9 deletions
+14 -6
View File
@@ -137,10 +137,13 @@ Implemented on the Veskslop side (2026-09-15):
`VESKSLOP_TTS_PITCH` only when the value is set.
- The HTTP provider adds `speed` and `pitch` to the request body only when set.
- The TTS panel has speed and pitch sliders; changes are saved to the daemon preferences.
- Command mode advertises voices through `VESKSLOP_TTS_VOICES`
(`id`, `id|Name`, `id|Name|gender`, or `id|Name|gender|language`, comma separated). While a
custom command is set, the engine's declared voices replace the espeak list, so no misleading
espeak entries appear. Reading `/voices` for the HTTP provider is still future work.
- Command mode advertises voices through `VESKSLOP_TTS_VOICES`. Entries are separated by commas or
newlines and use `id`, `id|Name`, `id|Name|gender`, `id|Name|gender|language`, or
`id|Name|gender|language|flags`, where flags are `+`-separated. The `no-pitch` flag marks a voice
that ignores pitch; `/api/audio/tts/voices` then reports `supportsPitch: false` and the TTS panel
disables the pitch slider. While a custom command is set, the engine's declared voices replace
the espeak list, so no misleading espeak entries appear. Reading `/voices` for the HTTP provider
is still future work.
Do not encode settings into the voice string (for example `anna+speed1.2`). It breaks voice lists
and is hard to validate.
@@ -236,7 +239,8 @@ record what the engine needs to interpret, add, or hide._
- Mapping implemented in `setup/vekslop-tts.sh`: `speed 1.0` = the voice's natural rate
(150 MSTTS, 300 Flextalk), scaled by the multiplier and clamped to the engine range.
`pitch` for MSTTS maps ±12 semitones to engine units `100 ± 6.25·st`, clamped to 50-200.
Pitch is a no-op for Flextalk voices.
Pitch is a no-op for Flextalk voices; the wrapper's `--voices` output marks
`keith-bell` and `kerry-watson` with the `no-pitch` flag so the UI disables the slider.
- `{setting}` is unused; the wrapper reads `VESKSLOP_TTS_SPEED` and
`VESKSLOP_TTS_PITCH` from the environment when Veskslop later exports them.
@@ -299,6 +303,10 @@ _Added 2026-09-15._
the client's display.
- **Voice declarations**: list only usable IDs in `VESKSLOP_TTS_VOICES`. Veskslop hides the
espeak list while a custom command is set, so a missing declaration means an empty voice list,
not a fallback.
not a fallback. The list accepts commas or newlines, and the optional `no-pitch` flag tells the
UI to grey out the pitch slider for that voice.
- **Flextalk pitch**: confirmed that pitch is a no-op for Keith Bell and Kerry Watson. Mark those
entries `no-pitch` so users are not offered a control that does nothing. Speed applies to every
voice and needs no flag.
- **Licensing**: keep the engine DLLs and voice data local and out of any repository; Veskslop
never bundles or redistributes them.