Files
calesthio 50891a75b7 hyperframes: add HTML/CSS/GSAP as a parallel composition runtime
Separates creative grammar (renderer_family) from technical engine
(render_runtime) so HyperFrames can stand alongside Remotion as a
first-class runtime instead of masquerading as a Remotion sub-case.
Locks runtime choice at proposal stage and enforces it end-to-end: the
schemas require it, video_compose routes by it, the reviewer fails
closed on silent swaps, and a parametrized contract test walks every
pipeline manifest to ensure each planning-stage skill explains the
conversation to the user. Adds hyperframes_compose (scaffold/lint/
validate/render/doctor/add_block), a playbook -> CSS style bridge, and
vendored HyperFrames Layer 3 skills from commit d291358, pinned via
PROVENANCE.md for future re-sync. Final_review now records
render_runtime_used and runtime_swap_detected so compose lies are
catchable after the fact.
2026-04-18 18:37:00 -07:00

1.6 KiB

Text-to-Speech

Generate speech audio locally using Kokoro-82M (no API key, runs on CPU).

Voice Selection

Match voice to content. Default is af_heart.

Content type Voice Why
Product demo af_heart/af_nova Warm, professional
Tutorial am_adam/bf_emma Neutral, easy to follow
Marketing af_sky/am_michael Energetic or authoritative
Documentation bf_emma/bm_george Clear British English
Casual af_heart/af_sky Approachable, natural

Run npx hyperframes tts --list for all 54 voices (8 languages).

Speed Tuning

  • 0.7-0.8 — Tutorial, complex content
  • 1.0 — Natural pace (default)
  • 1.1-1.2 — Intros, upbeat content
  • 1.5+ — Rarely appropriate

Usage

npx hyperframes tts "Your script here" --voice af_nova --output narration.wav
npx hyperframes tts script.txt --voice bf_emma --output narration.wav

In compositions:

<audio
  id="narration"
  data-start="0"
  data-duration="auto"
  data-track-index="2"
  src="narration.wav"
  data-volume="1"
></audio>

TTS + Captions Workflow

npx hyperframes tts script.txt --voice af_heart --output narration.wav
npx hyperframes transcribe narration.wav  # → transcript.json with word-level timestamps

Requirements

  • Python 3.8+ with kokoro-onnx and soundfile
  • Model downloads on first use (~311 MB + ~27 MB voices, cached in ~/.cache/hyperframes/tts/)