playhead-cli 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -142,6 +142,24 @@ Scaffold one with `npx playhead init`.
142
142
  Add `--vision` to `render`/`verify` for an optional Claude review of the contact sheet (needs
143
143
  `ANTHROPIC_API_KEY`; skipped cleanly without one, so CI stays deterministic).
144
144
 
145
+ ### Narration voices
146
+
147
+ `output.audio.narration: tts` speaks each step's narration line. Two providers:
148
+
149
+ | `provider` | Voice | Deps | Platforms |
150
+ |---|---|---|---|
151
+ | `kokoro` (recommended) | Natural neural (Kokoro-82M). `voice:` = `heart` (**default**) or `michael` | `npm i -g kokoro-js` (~400MB, one-time; model ~90MB auto-downloads on first use) | Mac · Linux · Windows |
152
+ | `say` | macOS built-in (robotic). `voice:` = a `say` voice name | none | macOS only |
153
+
154
+ ```yaml
155
+ output:
156
+ audio: { narration: tts, provider: kokoro } # → Heart, offline, cross-platform
157
+ ```
158
+
159
+ Behind a TLS-intercepting proxy, the one-time model download needs the system CA:
160
+ `NODE_EXTRA_CA_CERTS=/etc/ssl/cert.pem playhead render …`. `playhead doctor --ci` reports which
161
+ providers are available.
162
+
145
163
  **Exit codes are a contract:** `0` publishable · `1` the app broke the flow (a partial bundle
146
164
  **and a watchable failure clip** are written) · `2` rendered but failed verification ·
147
165
  `3` infra · `4` bad spec/arguments.
@@ -1,8 +1,10 @@
1
1
  export interface NarrationOptions {
2
- /** Only 'say' (macOS local TTS) is implemented today; the seam is here for cloud providers. */
3
- provider: 'say';
2
+ /** 'say' macOS built-in (zero deps, Mac-only). 'kokoro' natural neural voice, offline,
3
+ * cross-platform, via the optional kokoro-js package. */
4
+ provider: 'say' | 'kokoro';
5
+ /** say: a macOS voice name (Samantha). kokoro: a voice id (af_heart, am_michael, …). */
4
6
  voice?: string;
5
- /** Words per minute (say-specific). */
7
+ /** say: words per minute. kokoro: playback speed × 100 (100 = 1.0×). */
6
8
  rate?: number;
7
9
  }
8
10
  export interface NarrationLine {
@@ -1 +1 @@
1
- {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/audio/tts.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAqCD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAWrC"}
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/audio/tts.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,gBAAgB;IAC/B;8DAC0D;IAC1D,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AA6FD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAYrC"}