# Adom TTS — Text to Speech — wiki walkthrough video

**Target duration:** 0:50–1:00 (4 clips)
**Recorded:** 2026-07-04
**Final output:** `~/project/recordings/adom-tts-walkthrough.webm`
**Wiki target:** `adom/adom-tts` (README embed + page video asset)
**Hero frame:** taken from scene 1 (player mid-karaoke)
**App version demoed:** 1.9.20

## Dependencies

- `adom-tts` 1.9.20 (narration TTS — the app narrates its own demo)
- puppeteer-core 24.x + Chrome for Testing (in-container screencast; the
  player UI is deterministic HTML so scenes are staged states of the real
  `src/player.html`, driven by scripted JS — no live audio plays while
  recording)
- `video-post` 1.0.3, `ffmpeg 6+`

## Recording config

- **Voice:** `en-US-AndrewNeural` via `adom-tts say` (house voice, pronunciation
  overrides server-side)
- **Surface:** in-container headless Chrome, `page.screencast` at 900x620.
  Every scene keeps continuous animation (karaoke advance, typing, LED
  breathing) so frames flow.
- **Captions:** rendered inside the page (small chip, top-center) — no
  Hydrogen caption tooling touched (user's live workspace stays untouched).

## Scenes

| # | id | Caption (on-screen) | Narration (TTS) | Target | Choreography |
|---|---|---|---|---|---|
| 1 | player | `One shared player for all your AI threads` | `This is Adom TTS. Your AI speaks its answers out loud through one shared player. The header shows which thread is talking and what the update is about, and the transcript follows along word by word.` | 14s | player page, clip "flight-search" playing; karaoke advances a word every 400ms; LED breathing; seek bar creeps |
| 2 | verify | `Playback is verified, never assumed` | `Every clip is verified. The A I must name its thread and describe the update, and confirm blocks until the audio truly reached your ears. If your connection drops, clips buffer and retry on their own.` | 13s | terminal page: the say command types out, ACCEPTED + CONFIRMED lines appear in sequence |
| 3 | history | `Missed a clip? It waits for you in History` | `Missed something? Every clip lands in the history with who sent it and what it says. Clips you did not fully hear are flagged. Tap replay and it plays immediately — your tap outranks the machine queue.` | 15s | player + history drawer; missed row pulses; replay button flashes; header swaps to "(replay)" and karaoke restarts |
| 4 | outro | `adom-wiki pkg install adom/adom-tts` | `Adom TTS is open source under M I T, on the Adom wiki. One install command, and your A I has a voice.` | 9s | hero image slow zoom; install command types under it |

## Reproduction

```bash
cd /home/adom/project/adom-tts
python3 demo/build_scenes.py          # writes staged scene HTML to /tmp/ttsdemo/scenes
node demo/record.mjs                  # screencasts each scene to /tmp/ttsdemo/raw
bash demo/tts_and_mux.sh              # adom-tts say per scene + ffmpeg mux -> narrated clips + manifest
video-post storyboard /tmp/ttsdemo/manifest.json   # MANDATORY user review
bash demo/finalize.sh                 # concat + keyframes + hero + wiki upload + README embed
```

## Known issues from this rev

- Scenes are staged states of the real player HTML (deterministic, no live
  audio out) rather than a capture of the live Hydrogen tab — chosen so the
  user's active workspace and speakers are untouched during recording.
