Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ZJU-REAL/Easelnpx agentmods add skills/zju-real/easel/tts-voiceoverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zju-real/easel/tts-voiceover)<a href="https://agentmods.dev/skills/zju-real/easel/tts-voiceover"><img src="https://agentmods.dev/badge/skills/zju-real/easel/tts-voiceover/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zju-real/easel/tts-voiceover"><img src="https://agentmods.dev/badge/skills/zju-real/easel/tts-voiceover.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00164 | $0.01738 |
| Opus 5 | $0.00082 | $0.00869 |
| Sonnet 5 | $0.00033 | $0.00348 |
| Haiku 4.5 | $0.00016 | $0.00174 |
Grade A, and why
tts-voiceover scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
文字转语音配音(TTS Voiceover)
配置检查路径铁律:先
cd到AGENTS.md末尾给出的 Easel 项目根,确认当前目录有.env和skills/shared/scripts/。云 TTS 配置只能用项目根的model_registry.py configured --group voice --env-file .env和voice_clone.py check ... --env-file .env判断;不得在 workspace 跑./shared/scripts/...,也不得用env/printenv推断 Key/URL 缺失。
把文案 / 脚本合成为 AI 语音(口播、旁白、朗读)。共享脚本 skills/shared/scripts/tts.py speak:
默认闭源优先——配了 .env 的 VOICE_PROVIDER(+ VOICE_API_KEY) 就走闭源云 TTS(voice_clone,
按句合成+拼接+分句 SRT,有情感、像真人),没 key 才退 edge(AI 味、生硬,仅兜底)。
--engine closed/edge 可强制;闭源音色用 --voice 传 voice-id(如 FunAudioLLM/CosyVoice2-0.5B:alex),
旁白默认 alex,可用 VOICE_NARRATOR_VOICE_ID 覆盖。合成后语音可交 audio_ops.py/video_ops.py 混音或加到视频。
输入
| 字段 | 必填 | 说明 |
|---|---|---|
| text / file | 是 | 待配音的文本,或文本文件路径(长文本推荐 --file) |
| voice | 否 | 音色,默认 zh-CN-XiaoxiaoNeural(晓晓) |
| rate/volume/pitch | 否 | 语速 / 音量 / 音调微调 |
| output | 否 | 默认 outputs/主题名/{name}.mp3 |
输出
- 配音音频文件(mp3,可选 wav/m4a),放入
outputs/主题名/ - 可选同步输出 SRT 字幕(
--subtitle),供视频烧字幕用 - 打印实际执行的 edge-tts 命令 + 输出文件时长/大小/音色
前置:外网代理
edge-tts 调微软在线服务,必须能访问外网。内网环境先设代理:
export https_proxy=http://<代理host>:<端口> http_proxy=http://<代理host>:<端口>
脚本会自动读环境变量代理并透传给 edge-tts(也可用 --proxy 覆盖)。
执行步骤
脚本路径(相对项目根):skills/shared/scripts/tts.py。每个子命令支持 -h。
0. 挑音色(可选)
python skills/shared/scripts/tts.py voices # 常用中文音色 + 简介
python skills/shared/scripts/tts.py voices --all # 拉全量 zh- 音色(需外网)
1. 合成配音 speak
# 最简:一句话 → mp3
python skills/shared/scripts/tts.py speak --text "欢迎来到本期内容" \
-o outputs/主题名/intro.mp3
# 长文本从文件读 + 换音色 + 加速 10%
python skills/shared/scripts/tts.py speak --file script.txt \
-o outputs/主题名/narration.mp3 --voice zh-CN-YunxiNeural --rate +10%
# 同步出 SRT 字幕(视频烧字幕用)
python skills/shared/scripts/tts.py speak --file script.txt \
-o outputs/主题名/vo.mp3 --subtitle outputs/主题名/vo.srt
# 输出 wav(需 ffmpeg,便于后续无损处理)
python skills/shared/scripts/tts.py speak --text "……" \
-o outputs/主题名/vo.wav --format wav
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 116 lines · 164 tokens per session scan A 94887d59a022
tts-voiceover is a skill published in the GitHub repository ZJU-REAL/Easel (841 stars, last pushed yesterday), licensed Apache-2.0. It adds 164 tokens to every session and 1,738 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
ppt-generation
Generate PPTX presentations from slide plan + content.
chart-visualization
Generate charts: select type, extract data, render image.
jacky-motion2-0-srt
A workflow for turning a Chinese spoken script and matching SRT subtitle file into a single 16:9 HTML information animation. SRT is a subtitle file that stores text with start and end times; the animation follows those times and adds recorded-screen placeholders when needed.
video-podcast-maker
Use when the user gives a topic and wants an automated topic-driven narrated explainer, podcast, or knowledge-summary video (Bilibili / YouTube / Xiaohongshu / Douyin / WeChat Channels), or asks to learn visual design patterns from a reference video/image. Trigger when the user mentions creating a knowledge video…
video-podcast-maker-lite
Minimal personal narrated-video pipeline — a topic becomes a talking-head-free explainer MP4 (1080p or 4K) via script → Azure TTS (SSML) → Remotion. Use when the user wants a quick narrated video from a topic without the full video-podcast-maker machinery (no extra skills, no thumbnails/shorts/publish matrix). Do NOT…
video-podcast-maker-nano
Smallest personal narrated-explainer-video pipeline (spoken narration over visuals, not an audio podcast), fully tool-agnostic and autonomous by default — topic → research ∥ asset collection → script → TTS → video → 4K render ∥ publish info + cover. The skill defines the pipeline logic and self-verified checkpoints…