Merge the MicroslopSam engine into the repository

This commit is contained in:
Fisto
2026-09-21 12:16:33 +02:00
parent 51d42b3a16
commit bbb580deea
30 changed files with 8959 additions and 82 deletions
+15 -13
View File
@@ -22,8 +22,6 @@ pure-native build, and keep a path to a fully portable engine.
- AT&T Flextalk: Keith Bell, Kerry Watson
- Test output: `build/test_sam.wav` (22.05 kHz), `build/test_Keith_Bell.wav`,
`build/test_Kerry_Watson.wav` (11.025 kHz).
- Wrapper contract test (no Wine needed, stubs wine and the engine host):
`sh setup/test-wrapper.sh`.
## Build
@@ -61,12 +59,6 @@ without editing scripts:
Refresh the file after moving the tree: `MICROSLOP_UPDATE_ENV=1 setup/install.sh`.
In the Veskslop tree the `third_party/` assets are **not committed** (licensing; see
`docs/TTS-DESIGN.md`). This checkout has a local `setup/microslopsam.env` (gitignored) that
points `MICROSLOP_ASSETS`, `MICROSLOP_FLEXTALK_DIR`, and `MICROSLOP_SPEECH_H_DIR` at the
MicroslopSam development checkout. A manual host build needs the same override, or a local
`third_party/` with `speech.h`.
## Usage
setup/run.sh -l
@@ -97,6 +89,14 @@ command environment (`VESKSLOP_TTS_VOX_CLEAN=1` omits the `\!wH1/\!wH0` stutter
wrapper). Line-leading `/rate N` and `/pitch N` controls are also handled by the
wrapper, so the WebUI does not need to implement them. See `docs/TTS-DESIGN.md`.
A short low-level leading hum (80 ms, 75 Hz, -48 dBFS) primes Discord's audio pipeline
so the first word is not gated; tune with `VESKSLOP_TTS_HUM_MS` (0 = off),
`VESKSLOP_TTS_HUM_HZ`, and `VESKSLOP_TTS_HUM_DB`.
**Half-Life presets** (Keith Bell): `VESKSLOP_TTS_PRESET=vox` applies the approximated
Valve VOX profile and enables VOX prosody; `VESKSLOP_TTS_PRESET=hev` is a starting point
for the HEV suit voice. Values are in `docs/TTS-DESIGN.md`.
## Layout
- `host/sapi4host.c` — host: voice select, pitch/speed, text -> WAV
@@ -118,12 +118,14 @@ wrapper, so the WebUI does not need to implement them. See `docs/TTS-DESIGN.md`.
windows.
- Flextalk numeric speaker settings must be `REG_DWORD` (the installer script handles
this); `REG_SZ` values cause a monotone buzz. Pitch and speed work on all voices.
- The Flextalk archive lacks `data2.cab`; `unshield -O` extracts `data1.cab`
but one tail file (`WatsonUNInstall.dll`) is incomplete.
- Flextalk extraction needs `unshield -O` (old compression). The installer is
single-volume: the new decompressor reports a phantom `data2.cab`, but `-O` extracts
all 450 entries with exact sizes and valid PE files (the original 1997 upload log lists
`data1.cab` only).
## Reference material
- The MicroslopSam development checkout (`third_party/`): SAPI4 runtime, MSTTS voices,
Flextalk cabinet, `speech.h`, NetTTS parser source. Referenced through
`setup/microslopsam.env`; not committed here.
- `third_party/` — vendored dependencies; see `third_party/README.md`. Everything the
tool needs is in the repo (SAPI4 runtime, MSTTS voices, Flextalk cabinet, `speech.h`,
NetTTS parser source).
- `/mnt/ghidra/decomp/{msttssyn.dll,speech.dll}/` — decompiled corpora (external, optional)