Skip to content

feat: generate offline Qwen narration clips (#4) - #12

Merged
codeonym merged 2 commits into
mainfrom
feat/4-tts-adapter-local-voice
Nov 10, 2026
Merged

codeonym merged 2 commits into
mainfrom
feat/4-tts-adapter-local-voice

Conversation

@codeonym

Copy link
Copy Markdown
Contributor

Summary

Record now turns narration into local Qwen3-TTS 0.6B speech using Ryan in English, with pinned offline assets and the official CPU runtime.

capture → close browser/display → synthesize narration
  → demo.audio/NNN.wav
  → transcript voice, duration and SHA-256 metadata

Blank narration has no clip. Reruns replace this demo's generated clips and preserve unrelated files. CI has a 45-minute budget for image building and CPU synthesis.

Evidence

  • Before: the new recording test failed because voice metadata was absent.
  • After: type checking, build, 50 unit tests and all 10 Docker E2E checks pass in one clean run (968 seconds).
  • Fresh network-disabled processes produce identical WAV hashes, including repeated text at different indexes. Final recording step starts differ by 2, 2 and 3 ms; existing caption playback and frame-alignment checks pass.
  • Missing assets fail the worker and recording command without publishing a success transcript. Sample narration was listened to and approved.

Merge Danger

Door: two-way

Blast Radius: recording

The image is about 7 GB; observed synthesis peaks at about 5.6 GiB of process memory and takes minutes on the tested CPU. MP4 remains silent until GH-5 adds holds and muxing. Schema version 1 and recorded timing are preserved. The existing odd-viewport encoder hang is recorded as a separate approved follow-up.

Closes #4

@codeonym
codeonym merged commit 2e1e32d into main Nov 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Voice narration through a TTS adapter with a local default voice

1 participant