video-agent-voice — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited video-agent-voice (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
script.md + storyboard.md(可选,用于情绪标注)audio/voiceover.mp3audio/subtitles.srtaudio/voice-direction.md(配音指导表)| 引擎 | 成本 | 中文质量 | 情绪控制 | 适用场景 |
|---|---|---|---|---|
| MiniMax Speech-02 | 低 | 最高(全球#1) | emotion 参数 + 停顿标记 | 正式发布(中文首选) |
| Edge-TTS | 免费 | 中等 | SSML 语速/音调 | 快速测试、草稿 |
| ElevenLabs | 高 | 差(WER 16%) | Prompt 情感描述 | 英文视频 |
| 自录音 | 免费 | 最高 | 完全自控 | 追求最佳效果 |
tts_engine: edge,使用 Edge-TTS(免费草稿)tts_engine: elevenlabs,使用 ElevenLabs API(仅适合英文)tts_engine: manual,跳过语音生成,仅生成字幕模板和配音指导表支持用 10 秒录音克隆自己的声音,克隆后可反复使用:
python scripts/minimax_tts.py clone <你的录音.mp3> --voice-id myvoice001克隆语音 7 天不使用会被自动删除,需重新克隆。克隆价格:9.9 元/次。
python scripts/extract_plain_text.py <project>/script.md <project>/script-plain.txt过滤规则(从 script.md 中去除非朗读内容):
> 场景提示:... 行【出处:...】 行## 案例一:...)> 逐字稿 | 目标时长:...)---)如果存在 storyboard.md,读取每个镜头的情绪/节奏标注,生成情绪映射:
python scripts/build_emotion_map.py <project>/storyboard.md <project>/script-plain.txt <project>/audio/emotion-map.json输出 emotion-map.json:
[
{
"segment": 1,
"text": "你有没有想过一个问题:为什么你学了那么多时间管理方法...",
"mood": "焦虑、快切",
"pace": "fast",
"ssml_rate": "+15%",
"ssml_pitch": "+5%",
"elevenlabs_style": "urgent, slightly anxious",
"direction_note": "语速偏快,带一点焦虑感,像在追问观众"
},
{
"segment": 5,
"text": "Cal Newport 在《Deep Work》这本书里提出了一个概念...",
"mood": "权威、可信",
"pace": "normal",
"ssml_rate": "+0%",
"ssml_pitch": "-3%",
"elevenlabs_style": "calm, authoritative",
"direction_note": "语速正常,声音沉稳,引用专家时要有权威感"
},
{
"segment": 12,
"text": "一天 8 小时,真正能用来做深度工作的时间,可能连 2 小时都不到",
"mood": "震惊、冲击",
"pace": "slow_then_pause",
"ssml_rate": "-10%",
"ssml_pitch": "+0%",
"elevenlabs_style": "dramatic pause, emphasis on the number",
"direction_note": "说到'2 小时'之前稍微停顿,然后重音落在这个数字上,让观众感受冲击"
}
]情绪到语速的映射规则:
| 情绪关键词 | 语速 | SSML rate | 说明 |
|---|---|---|---|
| 焦虑、压迫、快切 | fast | +15% ~ +20% | 制造紧迫感 |
| 冲击、震惊、醒悟 | slow_then_pause | -10% ~ -15% | 关键信息前放慢,制造冲击 |
| 权威、可信、平稳 | normal | +0% | 沉稳叙述 |
| 共鸣、温暖、日常 | slightly_slow | -5% | 贴近观众,像聊天 |
| 希望、力量、行动 | slightly_fast | +5% ~ +10% | 带动情绪,收束有力 |
| 讽刺、荒诞、反差 | normal | +0% | 语气平淡反而更讽刺 |
| 悬念、期待 | slow | -10% | 吊胃口 |
如果没有 storyboard.md,则跳过此步骤,所有段落使用默认语速。
无论使用哪种引擎模式,都生成 audio/voice-direction.md:
# 配音指导表 — 视频标题
> 总时长目标:约 8 分钟 | 总字数:约 1800 字
## 开头(0:00-0:30)
**语速:快** | **情绪:焦虑、追问**
> 你有没有想过一个问题:为什么你学了那么多时间管理方法,下载了那么多效率工具,看了那么多生产力视频,你还是觉得时间不够用?
🎯 配音要点:像在追问观众,语速偏快,带一点焦虑感
---
**语速:慢,停顿** | **情绪:悬念、权威**
> 今天我想告诉你一个反直觉的事实——生产力的公式里,其实只有一个变量。
🎯 配音要点:"反直觉"之前微微停顿,"只有一个变量"放慢、加重
---
## 案例一:忙碌不等于生产力(0:30-2:30)
**语速:正常** | **情绪:权威、沉稳**
> Cal Newport 在《Deep Work》这本书里提出了一个概念,叫做"忙碌即生产力"谬误。
🎯 配音要点:引用专家时声音沉稳,语速正常,体现可信度
...这份指导表有三个用途:
#### 模式 A:自录音(manual)
script-plain.txt + voice-direction.mdaudio/voiceover.mp3subtitles.srt#### 模式 B1:Edge-TTS(免费)
python scripts/edge_tts_generate.py \
<project>/script-plain.txt \
<project>/audio \
--voice zh-CN-YunxiNeural \
--emotion-map <project>/audio/emotion-map.jsonEdge-TTS 情绪控制方式:
<prosody rate="..." pitch="..."> 标签SSML 示例:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="zh-CN">
<voice name="zh-CN-YunxiNeural">
<prosody rate="+15%" pitch="+5%">
你有没有想过一个问题:为什么你学了那么多时间管理方法,
下载了那么多效率工具,看了那么多生产力视频,
你还是觉得时间不够用?
</prosody>
<break time="500ms"/>
<prosody rate="-10%" pitch="-3%">
今天我想告诉你一个反直觉的事实。
</prosody>
<break time="300ms"/>
<prosody rate="-10%" pitch="-3%">
生产力的公式里,其实只有一个变量。
</prosody>
</voice>
</speak>默认语音选项:
zh-CN-YunxiNeuralzh-CN-XiaoxiaoNeural#### 模式 B2:MiniMax Speech-02(高质量,中文首选)
python scripts/minimax_tts.py \
<project>/script-plain.txt \
<project>/audio \
--voice <voice_id> \
--emotion autoMiniMax 情绪控制方式:
speech-02-hd(最高质量)或 speech-02-turbo(更快)auto(自动)/ happy / sad / calm<#0.5#> 表示停顿 0.5 秒clone 命令克隆,再用克隆的 voice_id 生成#### 模式 B3:ElevenLabs(仅英文视频)
python scripts/elevenlabs_tts.py \
<project>/script-plain.txt \
<project>/audio \
--voice-id [voice_id] \
--emotion-map <project>/audio/emotion-map.jsonElevenLabs 情绪控制方式:
eleven_multilingual_v2elevenlabs_style 作为 style prompt 传入audio/voiceover.mp3 存在且可播放audio/subtitles.srt 存在且格式正确audio/voice-direction.md 已生成| 环境变量 | 用途 |
|---|---|
| MINIMAX_API_KEY | MiniMax 语音生成(模式 B2,推荐) |
| MINIMAX_GROUP_ID | MiniMax 声音克隆(仅克隆时需要) |
| ELEVENLABS_API_KEY | ElevenLabs 语音生成(模式 B3,仅英文) |
| 依赖 | 用途 | 必需 |
|---|---|---|
| edge-tts | Edge-TTS 语音生成 | 模式 B1 |
| whisper | 语音转字幕 | 模式 A / B2 |
| ffmpeg / ffprobe | 音频合并与时长检测 | 是 |
scripts/extract_plain_text.py — 从 script.md 提取纯文本(更新过滤规则)scripts/build_emotion_map.py — 从分镜表生成情绪节奏映射scripts/minimax_tts.py — MiniMax Speech-02 语音生成 + 声音克隆(中文首选)scripts/edge_tts_generate.py — Edge-TTS 语音+字幕生成(支持 SSML 情绪控制)scripts/elevenlabs_tts.py — ElevenLabs 语音生成(仅英文,支持 style prompt)scripts/generate_subtitles.py — Whisper 字幕生成~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.