Skip to main content
Use this when you have real recorded lines (actors, you, or TTS) instead of letting H3 clone or invent voices.

Steps

Put the recording inside the episode folder (for example ep05\audio\) so the series config can point at it with a relative path. faster-whisper isn’t one of seriesmith’s dependencies: install it into the Python that runs seriesmith. The editor does the same from its dialogue track: attach the recording, then align (seriesmith/track.py).

Recording

  • Record the lines in script order, dry: no music under them. If there is music, split it first with python -m demucs --two-stems vocals file.wav and use the vocals stem.
  • Leave real pauses where the script has silent shots. align stretches or squeezes those shots to fit the pause, and warns you when the pause is far off.
  • One file for the whole episode.

What align changes

  • Script: adds audio: in-out to every shot and turns old dur: lines into comments. The old copy is kept in <episode>\_history\.
  • Series config: sets audio.mode to source_track and audio.track to your recording. The old copy is kept in <episode>\_history\ too (the same history the editor writes, so both show the same versions).
  • Report: writes align_report.md with every window and line, plus any problems it found.
  • Transcript cache: saves the transcript as <recording>.words.json, so re-running is instant. Use --retranscribe after you replace the recording.
  • Cut points: cuts land at the quietest point of each pause. Speaking shots are lengthened to the frame grid of the target they render on (H3’s 17k+5, LTX’s 8k+1) when the pause has room.

Audio policy and retention

A speaking shot defaults to dub_keep_foley: H3 lip-syncs to your line, and the saver keeps H3’s sound effects with the voice removed, as _foley.wav. To override, set it per shot (retention: fully_copy), for the episode ("audio": {"retention": ...}), or for the default policy ("audio": {"default_policy": "dub"}). You can also pass --policy or --retention to align. Shots in clone and generate mode are unchanged. Frame lip-sync shots as close or medium shots. The reference image’s framing matters more than the prompt.

align options

python -m seriesmith.align --help lists them all. The ones you reach for:

Conform

  • Trimming: assemble trims each timed shot back to its exact window, so the cut lines up with the recording from the first window’s start. --no-trim turns this off.
  • Sync check: --audio master lays the recording under the cut. It’s a check, not a mix.
  • Final mix: do it in Resolve. Put the cut on one track and the recording on another, starting at the time shown in align_report.md. Add each shot’s _foley.wav at its start time (listed in _shots.txt), then music.