About tk-tts
A skill for generating and validating local script-to-WAV narration with pinned models and runtimes. It is intended for narration workflows that need explicit engine selection, audio checks, measured duration, and retained human listening review.
Key features
- 01List supported local synthesis routes
- 02Use pinned models and runtimes
- 03Validate decoded audio and reject silence
- 04Measure duration and report synthesis details
- 05Normalize multi-clip audio into new files
Use cases
- 01Creating local narration from prepared scripts
- 02Comparing available device and dependency setups
- 03Checking generated audio before delivery
- 04Preparing normalized batches of narration clips
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ mtgvim/ tiger-kit --skill tk-ttsAfter installing, type/tk-ttsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
LICENSE.txtagents/openai.yamlreferences/artifact-paths.mdauthentication.mdinstallation.mdpostprocessing.mdquestions.mdsources.mdsynthesis.mdscripts/list_options.pymlx_backend.pymlx-8bit-files.jsonmlx-files.jsonnormalize_audio.pyppaso-files.jsonppaso.pyqwen3-files.jsonqwen3.pysupertonic3-files.jsonsupertonic3.pyDetails
From the project READMEGenerate Local Narration
Own script-to-WAV synthesis, pinned models/runtime, approved cache reuse and audio validation.
tk-video owns scenes/encoding; the teaching caller owns lesson content. Return ordinary audio and
measured duration; do not import or modify sibling packages. Creation grants no publication.
Run scripts/list_options.py for supported local routes without importing engines. Compare the
actual device/dependencies/cache before proposing options: Qwen3 0.6B CustomVoice MLX 5bit is the
Apple Silicon recommendation, ppaso ONNX CPU the lightweight Korean option; retain explicit
Qwen MLX 8bit and official PyTorch. Discovery is not runtime/model readiness or a quality ranking.
Supertonic 3 ONNX CPU/F1 is an explicit alternative, not a new default. Its upstream is archived.
When selected, tell the user that AI-synthesis disclosure is required and return the receipt's
disclosure_required and disclosure_notice; do not claim the audio/video was automatically labeled.
Present every list_options.py route with its device/platform, voices and dependency/cache setup
status; past evaluations affect recommendations only, never which engines are shown. Reuse the
ordinary-chat question format below and retain unsupported/uninstalled routes with their limits.
Read installation and pins before verification, download or synthesis.
Reuse verified setup and matching approval. Resolve material engine/voice choices before work;
never silently switch engines after a failure or install into a global environment.
Read synthesis and inspection for selected synthesis. Use authored UTF-8
pronunciation-corrected text, complete sentences, sequential requests and a new WAV path. Keep
captions/UI literals faithful separately. Run only the selected local adapter in a fresh owned
process with a bounded deadline/stall check. Decode and reject invalid/nonfinite/silent audio;
return measured duration, engine/model revision, sentence/cache/memory facts and
human_action: listen. Actual meaning, pronunciation, proper names/numbers and clipped endings
remain pending until heard. Non-silence is not intelligibility. Do not add ASR, voice cloning,
paid/cloud synthesis, a resident server or an automatic engine fallback.
For multi-clip narration, read audio postprocessing before delivery. Normalize the batch into new files, preserve raw WAVs and return the measured treatment/limits.
Report unavailable prerequisites with safe module or actual/expected version details and the approved recovery route. Preserve original audio/cache bytes and clean only proven run-owned transients. Return concise paths and actual validation/remaining listening limits. Existing explicit narration choices need no second question; a voice preference alone does not select TTS.
For source provenance and deliberate omissions, see sources.
Artifact Paths
Artifacts require task authority. Before writes/checkout/transport/ignore setup, read artifact paths for Git exclusion/path/ownership checks. Reuse identical in-context content; hash-check uncertainty and reread changes/loss; always recheck safety. Use .tigerkit/ unless a destination is explicit or the eligible durable-root branch applies. Chat-only: skip file/ignore setup and this reference. This grants no unrelated mutation/publication authority. Prefer fresh directories and supported trash for authorized non-secret cleanup; target only recorded literal resolved absolute run-owned paths, never cd plus glob/relative deletion.
User Questions
Investigate facts; reuse authorization. For user-owned decisions read
question rounds; otherwise proceed.
Plain chat, even one approval: standalone ---, then
❓ **Q<n> · <title>**: <question> and ➡️ <recommendation> per item.
Ask only settled-prerequisite questions; separate approval.
Questions come last; put status, risks and plans before them.
Skill Feedback
For a reusable incident, retain minimal non-secret evidence in the current conversation
and suggest tk-retro; do not write it to persistent memory unless the user asks.
Invocation, feedback artifacts, installed-skill edits and publication require separate
authorization through the owning workflow; this pointer grants none.
Reader-facing Result Summary
Return a brief result with the outcome, actual verification, material limitations and direct deliverable links. Distinguish plans/skipped checks from executed work; retain outstanding manual checks and real cleanup, blocker or human-action details. Never claim unverified completion or cleanup. Preserve the owner's required artifact, publication preview, approval boundary, machine return, exact status/footer and final question block; keep nested returns compact and omit empty sections.
Output Notation
Use ASCII numbering (1. Item, (1) Item) and - Item, not enclosed/keycap numerals.
Show complete absolute clickable file paths, including examples, without ellipses.
Preserve exact code, commands, identifiers, URLs, quotations and verified UI labels
unless their edit is authorized.
For chat comparisons with multiple shared attributes, use narrow GFM pipe tables (about four columns, header, short cells); otherwise use lists. No box-drawing, fenced or empty tables. Owner-specific previews take precedence; publication bodies and file artifacts retain their own table formats.
In rendered Markdown prose, use hyphens for ranges and escape literal tildes as \~;
preserve exact code, quotations and identifiers.
For authorized temporary input files, follow Artifact Paths before creation and consumption; a prefilled template is not completed input. This grants no write authority.