# Free local workflow

Version 0.5.0 adds optional local planning, Qwen3-TTS narration, forced word alignment and Motion Studio. No account or hosted generation API is needed for this route after setup. You buy the toolkit once; your computer, electricity, disk space and installation downloads are your costs. Codex/Claude access and optional premium media are separate.

## Tested setup

This workflow was exercised on an Apple M1 Pro Mac with 32 GB unified memory, Python 3.12 and Node/Sharp/FFmpeg. It is an Apple Silicon MLX workflow. Windows, Linux, Intel Mac and low-memory machines are unverified. Do not promise the local model workflow on those systems. The basic supplied-audio renderer has fewer dependencies.

Install Node.js and FFmpeg/FFprobe, then `npm install` in the kit. For the optional models, create a separate environment:

```sh
python3.12 -m venv .local-voice
source .local-voice/bin/activate
python -m pip install -r requirements-local-apple.txt
python scripts/download-local-models.py --out models
node scripts/render.cjs doctor
```

Initial model downloads need network access and roughly 6.7 GB for voice, aligner and planner, plus Python packages, caches and output space. Allow substantially more free disk space for installation and videos. Weights are public upstream downloads, pinned by revision; they are not inside the ZIP. Setup does not buy credits or change subscriptions.

## A complete run

```sh
python scripts/make-local.py --models models --brief "Explain one useful idea in three short scenes." --out projects/my-first-video
```

This writes a model draft, clean script, local audio, word alignment, final audio clock, editable plan, two MP4s and captions. The model returns constrained JSON rather than executable scene code. Review the generated facts, wording, pronunciations and visual decisions. A draft is not a promise of finished art direction.

For a reviewed subject-specific example with original animated vector props:

```sh
python scripts/make-local.py --models models --source examples/rainbow-local/source.json --out projects/my-rainbow
```

Existing folders are preserved. Choose a new output folder for a new run. To change visuals without regenerating speech, edit the copied `source.json`, rerun `compile-studio.py` with the saved final words, and render that plan. The included final audio can always be rerendered without model downloads or voice generation.

## Voice, pace and captions

The default is an original synthetic British male preset in `assets/voices/`. It was designed from a generic description; it is not a named person's voice. The sales presentations use a separate permitted private clone. The raw reference and reusable speaker profile for that clone are not distributed.

Use your own permitted reference through `narrate-local.py --reference YOUR.wav --reference-text YOUR.txt`. A reference must be mono 24 kHz PCM WAV with an accurate transcript. Use speech you have permission to clone. The local model uses clean spoken text rather than ElevenLabs delivery tags. Do not paste tag labels into captions or silently replace an explicitly requested paid model in a customer's project.

`align-local.py` finds word times against the supplied transcript. This is forced alignment, not an independent check that a model said every word correctly. Listen and check the output. `prepare-narration.py` shortens detected long pauses, applies pitch-preserving speed and two-pass loudness normalization, then remaps the words. `--target-wpm 195` is a starting point; `--speed 1.15` is another. Use one pace target and check intelligibility. Measured loudness can differ from the target when peak limiting constrains it.

The scripts enforce offline model inference after setup and record attempts. Models may vary in quality, accent and pacing. No exact speaker match or identical fresh model output across machines is guaranteed. Saved final WAV/words make editing and rendering repeatable.

## Motion Studio

See [motion-studio.md](motion-studio.md) for editable scenes and [local-third-party.md](local-third-party.md) for model/library sources. The renderer does not create photorealistic footage. Use your own footage, the original vector artwork, or separately licensed optional media.

Current toolkit price: $67 once. Local planning, narration and rendering have no per-video service fee after setup. ChatGPT/Codex or Claude usage is optional, consumes your own plan limits or credits, and is billed separately by that provider. Premium media inputs are separate. Rendering supplied audio/scripts needs no AI model.
