tts-skill
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTTS Skill
TTS Skill
Route every request into exactly one lane.
将每个请求准确归入一条通道。
Hard Routing Rules
硬性路由规则
- For local video production, use local IndexTTS2 only. Do not call MiniMax,
even when MiniMax credentials exist in .
.env - Use voice id and the canonical lossless WAV in
pluvio-indextts2-calm-v1. Never use an MP3 as the speaker reference and never replace the canonical reference with the latest output; that would accumulate cloning drift.automation/config/tts-routing.json - Generate the locked narration as lossless WAV. MP3 may be emitted only as a portable audition copy, never as the source for another clone or for final subtitle timing.
- Apply the declared in
default_delivery.playback_speedto every audition and final WAV. The production default isautomation/config/tts-routing.json, implemented with FFmpeg1.12xso pitch is preserved. Record the effective multiplier inatempo.voice_manifest.json - Do not silently fall back to macOS , browser speech, MiniMax, or another generic/cloud voice. If IndexTTS2, its model weights, Apple MPS/CPU, or the canonical reference is unavailable, repair the local lane or stop.
say - Every final narration render must leave with provider, voice id, model, canonical reference path and SHA-256, segment contract, output path, and
voice_manifest.json.used_fallback=false - TTS segment durations are planning metadata only. Run
against the exact concatenated lossless narration and use its word timestamps for final captions.
ra-audio-to-subtitles - For digital-human production, treat the full narration as an audition until the user explicitly approves that exact audio version. Do not describe an unapproved audition as locked or forward it to HeyGen.
- Before every local audition or final render, enforce
. A user-approved pronunciation in that file overrides generic phonetic heuristics. Keep the display spelling separate from TTS text when needed, and stop rather than render a forbidden spelling.
references/pronunciation-lexicon.json
- 对于本地视频制作,仅使用本地 IndexTTS2。即使 中存在 MiniMax 凭据,也不得调用 MiniMax。
.env - 使用 voice id ,以及
pluvio-indextts2-calm-v1中规范的无损 WAV。不得将 MP3 用作说话人参考,也不得使用最新输出替换规范参考音频,否则会累积克隆漂移。automation/config/tts-routing.json - 将锁定的旁白生成为无损 WAV。MP3 仅可作为便携式试音副本生成,绝不能作为另一次克隆或最终字幕计时的源文件。
- 对每次试音和最终 WAV 应用 中声明的
automation/config/tts-routing.json。生产环境默认值为default_delivery.playback_speed,使用 FFmpeg1.12x实现,以保持音高不变。将实际使用的倍速记录在atempo中。voice_manifest.json - 不得静默回退到 macOS 、浏览器语音、MiniMax 或其他通用云端语音。如果 IndexTTS2、模型权重、Apple MPS/CPU 或规范参考音频不可用,应修复本地通道或停止执行。
say - 每次最终旁白渲染后,必须包含 provider、voice id、model、规范参考音频路径及 SHA-256、分段契约、输出路径和
voice_manifest.json。used_fallback=false - TTS 分段时长仅作为规划元数据。对精确拼接后的无损旁白运行 ,并使用其单词时间戳生成最终字幕。
ra-audio-to-subtitles - 对于数字人制作,在用户明确批准该精确音频版本之前,应将完整旁白视为试音。不得将未经批准的试音描述为已锁定,也不得将其转发给 HeyGen。
- 每次本地试音或最终渲染前,必须执行 。该文件中经用户批准的读音优先于通用音素推断规则。必要时,应将显示拼写与 TTS 文本分开处理;如果需要渲染的拼写属于禁用形式,则停止执行。
references/pronunciation-lexicon.json
Local Video Lane: IndexTTS2
本地视频通道:IndexTTS2
Read the machine-readable route from:
automation/config/tts-routing.jsonGenerate a narration from a JSONL segment contract with:
bash
python3 .claude/skills/tts-skill/scripts/generate_indextts2_narration.py \
--batch-file <segments.jsonl> \
--output <final-narration.wav> \
--manifest <voice_manifest.json>Each non-empty JSONL line must follow the official IndexTTS2 batch contract and
contain ; it may also contain , , and
. Default to a calm delivery. Add stronger emotion only when
the user explicitly asks for it.
textemotion_vectoremotion_weightsilence_after_msRun before a new contract or after changing the local model setup.
The helper verifies that the canonical speaker reference is a lossless PCM WAV,
invokes the official local IndexTTS2 CLI, normalizes the result, and writes the
manifest. Keep the raw WAV beside the normalized WAV for auditability.
--dry-runFor mixed Chinese/English scripts, inspect model names, brands, abbreviations,
and numbers before the full render. Load
first. Entries there are approved
production contracts: use their value exactly and reject every
form. In particular, keep as the raw English token;
never transliterate it as “扣代克斯”, “扣戴克斯”, or “扣德克斯”. For a term
that is not yet in the lexicon, audition alternatives while keeping canonical
spelling in the display script and final captions. After the user chooses,
record that decision in the lexicon before the full render.
references/pronunciation-lexicon.jsonttsforbidden_ttsCodex从以下位置读取机器可读的路由配置:
automation/config/tts-routing.json使用 JSONL 分段契约生成旁白:
bash
python3 .claude/skills/tts-skill/scripts/generate_indextts2_narration.py \
--batch-file <segments.jsonl> \
--output <final-narration.wav> \
--manifest <voice_manifest.json>每个非空 JSONL 行必须符合官方 IndexTTS2 批量契约,并包含 ;也可以包含 、 和 。默认采用平静的演绎方式。只有当用户明确提出要求时,才可增强情绪表现。
textemotion_vectoremotion_weightsilence_after_ms创建新契约或更改本地模型配置后,先运行 。该辅助脚本会验证规范说话人参考音频是否为无损 PCM WAV,调用官方本地 IndexTTS2 CLI,规范化处理结果并写入 manifest。为便于审计,应将原始 WAV 与规范化后的 WAV 保留在一起。
--dry-run对于中英文混合脚本,在完整渲染前检查模型名称、品牌、缩写和数字。首先加载 。其中的条目是已批准的生产契约:必须完全使用其 值,并拒绝所有 形式。尤其要将 保留为原始英文 token,绝不能转写为“扣代克斯”“扣戴克斯”或“扣德克斯”。如果某个术语尚未收录在词典中,应对不同候选读音进行试音,同时在显示脚本和最终字幕中保留规范拼写。用户选定后,应先将决定记录到词典中,再进行完整渲染。
references/pronunciation-lexicon.jsonttsforbidden_ttsCodexPublic Article Lane: MiniMax Relay
公开文章通道:MiniMax Relay
MiniMax is retained only as the public solution used in articles, tutorials,
course examples, and relay-station onboarding. It is not a local production
provider. When this lane is requested, read
and use only for
the article/demo example.
references/minimax-relay-article.mdassets/minimax_tts.pyMiniMax 仅保留作为文章、教程、课程示例和中继站入门所使用的公开方案。它不是本地生产 provider。需要使用此通道时,读取 ,并且仅在文章或演示示例中使用 。
references/minimax-relay-article.mdassets/minimax_tts.pyQC
QC
Before using narration in a final video:
- confirm is
provider/IndexTTS2indextts2-local - confirm is
voice_idpluvio-indextts2-calm-v1 - confirm the reference SHA-256 matches the routing config
- confirm the recommended output is PCM WAV and decodes successfully
- confirm is
playback_speedunless the production contract explicitly overrides the workspace default1.12 - confirm and no segment provider is MiniMax
used_fallback=false - confirm the pronunciation contract is present in and the approved mixed-language terms were used
voice_manifest.json - generate captions from that exact WAV and require PASS
caption-qc.json - for a digital human, require explicit user approval of the exact audition WAV before any paid avatar generation; changing the audio invalidates approval
在最终视频中使用旁白之前:
- 确认 为
provider/IndexTTS2indextts2-local - 确认 为
voice_idpluvio-indextts2-calm-v1 - 确认参考音频的 SHA-256 与路由配置一致
- 确认推荐输出为 PCM WAV,并且能够成功解码
- 确认 为
playback_speed,除非生产契约明确覆盖工作区默认值1.12 - 确认 ,且没有任何分段 provider 使用 MiniMax
used_fallback=false - 确认 中包含发音契约,并且已使用获批的中英文混合术语
voice_manifest.json - 从该精确 WAV 生成字幕,并要求 为 PASS
caption-qc.json - 对于数字人,在生成任何付费 avatar 之前,必须获得用户对精确试音 WAV 的明确批准;更改音频后,该批准即失效