The Rehearsal
预测会议,然后让当事人在会议发生之前听到、看到并翻阅会议内容。
| 输出 | 文件 | 说明 |
|---|---|---|
| 预测 | script.md | 可能的对话,每行一轮对话,带有幻灯片标记 |
| 对话音轨 | out/rehearsal.mp3 | 两方各自的声音 |
| 视频 | out/rehearsal.mp4 | 每个对话部分一张幻灯片,与音频同步,字幕内嵌 |
| 字幕 | out/rehearsal.srt | 带说话人名称的句子级字幕 |
| 演示文稿 | out/deck.html | 离线的翻页版演示文稿;每个幻灯片显示该部分的准确台词 |
以下路径相对于本技能所在文件夹。请在自己的项目文件夹中工作(script.md、slides/、out/)。
1. 收集会议信息
在开始撰写任何内容之前,先收集以下信息:对方是谁(角色、背景、负责的内容)、会议目标、时长和形式、当事人自身的事实(简历、数据、计划、已批准的答复),以及对方可能会追问什么。阅读当事人已有的资料:通话记录、计划、研究报告、电子邮件、职位描述。
只询问那些会改变脚本的事实。如果问题是当事人必须根据自身经验回答的,则将其列为准备项;绝不要用编造的答案填充。排练只有在当事人的发言真实时才值得进行:排练中自信的编造数据在真实会议上也会变成编造数据。
2. 预测对话
按照 references/script-format.md 中规定的格式编写 script.md。
- 按真实会议顺序排列:开场、对方框架、当事人背景、追问问题、当事人计划或提案、棘手问题、后续事宜、当事人提问、结束语。
- 对方的发言是预测。在脚本文件头中说明这一点。如果可能编造关于对方公司的事实,则保持其发言笼统(例如“我无法透露具体条款”)。
- 当事人的发言只能使用其提供的事实或其拥有的文件中的信息,以及其已批准的措辞(若有)。
- 先给出答案,再提供一个例子,然后停止。对于大多数会议,每个答案一到三句即可。
- 数字要按人们说话的方式书写(例如“500万”、“161%”),以便语音朗读自然。
- 在每个对话部分的开始处添加
<!-- slide: id -->标记:通常每个问题对应一个部分。 - 在文件末尾附上准备列表:列出所有无法根据事实回答的问题。
可选的压力测试(在生成媒体之前):安排一到两位审阅者扮演对方和对方上级(如果可以启动子智能体),并对当事人的答案或计划提出批评。根据事实支持的范围应用修改;其余内容留给当事人自己处理。
3. 语音生成
pip install -r requirements.txt # edge-tts, pydub;还需要安装 ffmpeg
python scripts/make_audio.py script.md out --voice "Dana=en-US-AvaNeural" --voice "Sam=en-US-AndrewNeural"
为两方分别指定明显不同的声音(edge-tts --list-voices 可列出可用声音)。脚本会生成 out/rehearsal.mp3 和包含句子时间信息的 out/timeline.json(用于字幕)。Edge 服务会随机丢失少数请求;脚本会自动重试。
4. 为每个对话部分绘制一张幻灯片
按照 references/slide-format.md 中的格式,为每个幻灯片标记编写 slides/<id>.html。每张幻灯片将其对应的部分转化为可视化内容:以问题为标题,然后以时间线、编号步骤、对比图、实际数字的柱状图、决策路径或术语表来呈现答案。将完整的对话内容逐字放入幻灯片的 <aside> 演讲者备注中。在当事人需要特别注意的地方添加标注(例如“准备:从同意到签约的时间线”),因为演示文稿也是学习辅助材料。
5. 渲染视频和演示文稿
python scripts/render_video.py slides out --fonts "https://fonts.googleapis.com/css2?family=..."
python scripts/build_deck.py slides out --fonts "https://fonts.googleapis.com/css2?family=..." --title "排练:<会议名称>"
render_video.py 需要 Google Chrome 或 Chromium(如果未找到,请设置 CHROME= 环境变量)以及带有 libass 构建的 ffmpeg。--fonts 参数指定幻灯片使用的 Google Fonts 的 URL;如果幻灯片使用系统字体则可省略。如果 Slides 构件类型可用,同一组幻灯片文件可以发布为一个可分享的演示文稿。
6. 检查并交付
- 为每张幻灯片抽取一帧画面(
ffmpeg -ss <秒数> -i out/rehearsal.mp4 -frames:v 1 frame.png)并检查:文本位于框内,不被字幕条遮挡,字体已加载。 - 确认视频时长与音频时长一致。
- 交付文件时附带三条简单的注意事项:对方的发言是预测;准备列表需要当事人填写自身事实;脚本文本已发送到 Microsoft 的语音服务。
隐私
edge-tts 会将脚本文本发送到 Microsoft 的语音服务。在生成音频之前,请告知当事人脚本中是否包含敏感内容(薪资、健康信息、未公开的协议或姓名),并提供选项将其从语音版本中排除。不使用任何 API 密钥或付费服务。
文件
scripts/make_audio.py- 用于生成带时间轴的双人 MP3 和timeline.json的脚本scripts/render_video.py- 将幻灯片和音频合成为带字幕的 MP4 及 SRT 的脚本scripts/build_deck.py- 将幻灯片生成为离线翻页版deck.html的脚本references/script-format.md- 如何编写script.md的说明references/slide-format.md- 如何编写幻灯片的说明