Veskslop command wrapper, optional pitch/speed, measured calibration

This commit is contained in:
Fisto
2026-09-15 11:49:13 +02:00
parent 2a00496cfe
commit 4bed006ea9
5 changed files with 254 additions and 58 deletions
+17 -4
View File
@@ -39,8 +39,8 @@ Flextalk voices (once; needs the extracted installer, see `docs/NOTES.md`):
Host:
# Winelib (native ELF + launcher)
winegcc -m32 -O2 -o build/sapi4host host/sapi4host.c -I../reference \
# Winelib (native ELF + launcher): build/sapi4host-winlib.exe + .exe.so
winegcc -m32 -O2 -o build/sapi4host-winlib host/sapi4host.c -I../reference \
-lole32 -luser32 -ladvapi32
# PE fallback (runs under wine):
@@ -55,6 +55,18 @@ Host:
Options: `-v` voice, `-t` text, `-o` output WAV, `-p` pitch, `-s` speed.
## Veskslop integration
export VESKSLOP_TTS_CMD="$PWD/setup/vekslop-tts.sh {out} {text_file}"
export VESKSLOP_TTS_VOICES="$(setup/vekslop-tts.sh --voices)"
The wrapper maps voice IDs (`sam`, `mary`, `mike`, `keith-bell`, `kerry-watson`, plus the
MSTTS variants), reads `VESKSLOP_TTS_VOICE`, `VESKSLOP_TTS_SPEED` (multiplier) and
`VESKSLOP_TTS_PITCH` (semitones), starts Xvfb when `DISPLAY` is unset, and writes a
48 kHz mono s16le WAV trimmed, faded and normalized to about -16 LUFS (-3 dBFS true peak).
Flextalk voices ignore pitch (engine limitation); everything else maps as documented in
`docs/TTS-DESIGN.md`.
## Layout
- `host/sapi4host.c` — host: voice select, pitch/speed, text -> WAV
@@ -63,6 +75,7 @@ Options: `-v` voice, `-t` text, `-o` output WAV, `-p` pitch, `-s` speed.
- `setup/setup-flextalk.sh` — Flextalk files + registry
- `setup/inf2reg.py` — INF AddReg -> `.reg` converter
- `setup/run.sh` — run helper (prefix + Xvfb)
- `setup/vekslop-tts.sh` — Veskslop command-provider wrapper (post-processing included)
- `docs/NOTES.md` — registry/CLSID facts, runtime RE notes, gotchas
- `docs/TTS-DESIGN.md` — integration contract with Veskslop plus engine clarifications
@@ -71,8 +84,8 @@ Options: `-v` voice, `-t` text, `-o` output WAV, `-p` pitch, `-s` speed.
- `xvfb-run` is flaky on this host. `setup/run.sh` starts a persistent Xvfb
(`:77`) instead; Wine needs a working X display because the runtime creates
windows.
- Flextalk's default pitch/speed report as maximum (250/390) through
`ITTSAttributes`; values are still adjustable with `-p`/`-s`.
- Flextalk ignores pitch entirely (byte-identical output at any pitch setting); use speed.
The host now leaves pitch/speed untouched unless passed, so voices use their own profile.
- The Flextalk archive lacks `data2.cab`; `unshield -O` extracts `data1.cab`
but one tail file (`WatsonUNInstall.dll`) is incomplete.