Persona hablando + animaciones 是做什么的?
创作者录制了自己讲话的视频。他的录音就是旁白:无需生成语音(不要运行 tools/tts.py 或 standin_words.py)。所有其他步骤遵循 reel-studio 技能和视频的风格技能:风格定义了动画的外观;本格式定义了如何剪辑他的素材以及动画放置的位置。formats/persona-hablando/format.json 列出了他在“格式”页面上看到的规则——请遵守它们。
文件
footage/—— 他的视频片段,按播放顺序排列(名称以01-、02-……开头)。他在工作室中上传(新建Reel,或视频页面 → 录制)。无版本控制;切勿编辑或删除。audio/takes.json—— 每个片段的文字及时间戳(通过footage.py transcribe生成)。audio/edit.json—— 剪辑结果:保留的片段及其顺序。由你编辑,需经他批准。public/footage.mp4、public/vo.wav—— 剪辑后的视频及其音频(通过footage.py cut生成)。vo.wav是旁白:audio/mix.py将其像生成的语音一样混合。src/words.json、src/vo_env.json、src/footage.json、audio/vo.txt—— 由剪辑过程生成:剪辑时钟上的文字(因此cue()、ACTS和字幕正常工作),以及每个片段的起始位置(JUMPS)。src/talk/Footage.tsx——<Footage />,作为静音视频层的剪辑结果;cutZoom(t)按片段交替缩放。
工具在虚拟环境中运行(使用 faster-whisper:Ajustes → Requisitos → Transcripción;若缺失,请让他在此处安装):从视频文件夹执行 ../../../../.venv/bin/python ../../../../tools/footage.py …。
步骤
- 转录 —— 运行
footage.py transcribe --lang <配置的语言代码,例如 es>。它会打印出第一次剪辑的片段(按停顿 >0.4 秒分割语音),编号并带文字。之后添加的新片段会被转录并追加到末尾,不触碰已有片段。 - 提出剪辑建议 —— 以剪辑师的视角阅读这些片段:假开始、口误、“呃”/“这个”之类的填充词(如果拖沓)、重复的句子(保留最后一个好的条取,除非第一个明显更好)、不服务于视频主题的离题、弱开头(当之后有更强有力的钩子时)。给他一个简短的编号列表——片段、说了什么、你打算怎么做及原因——以及针对目标时长剪辑后的长度。一条消息中包含你的建议,这样“是”就是完整答案。未经批准切勿剪辑。
footage.py show N在剪辑点落在片段内部时打印该片段的文字及时间戳:将edit.json中的片段围绕口误分割成两部分(在单词开始前约0.05秒和结束后约0.15秒剪切,切勿在单词中间剪切)。 - 剪辑 —— 编辑
audio/edit.json(删除、修剪、分割或重新排序片段),然后运行footage.py cut。检查打印的长度,查看几帧画面(一旦<Footage />出现在影片中,运行./snap.sh out/cut <秒数> ……),并让他在动画制作前在工作室播放器中观看剪辑:“Guion”和“Cortes”均从此处计数。如果他要修改,编辑edit.json并重新剪辑:文字、字幕文本和时间戳会自动更新。audio/vo.txt每次剪辑都会被重写:它记录他说了什么,所以不要通过编辑它来更改脚本——修改剪辑。像往常一样根据其行标注audio/beats.json。 - 脚本检查 ——
video-script检查清单仍然适用于他所说的内容:开头几秒有钩子,一个主题,不提前透露答案的回答,回报,CTA。如果钩子弱,建议重新排序(使用后面片段)或让他重新录制一行,而不是围绕它制作动画。 - 动画 —— 使用风格的视觉语言为每个点子构思图片(reel-studio → Pictures)。根据节拍选择三种放置方式:
- 在他旁边(大多数情况):他保持全画幅;动画位于画面的空闲部分(通常远离他脸部的上三分之一或下三分之一)或作为卡片。用于数字、列表、术语、比较。
- 全屏(几秒钟):动画覆盖整个画面,他的声音继续。适用于通过视觉比语言更好地表达的内容(流程、地图、图表)。在他提出下一个观点前回到他的脸部。
- 无动画:当他表达情感或个人观点时,他的脸部就是画面。 首先找到他脸部在画面中的位置(从剪辑中取一帧),并保持清晰:永远不要遮挡他的眼睛或嘴巴。
- 构建 ——
src/film/Film.tsx:将<Footage zoom={cutZoom(t)} />作为最底层(代替风格的背景),场景在其上,字幕覆盖两者,照常使用<Audio src={staticFile('mix.wav')} />。只有全屏节拍才使用风格的背景和纸张纹理。照常从cue()在src/lib.ts中定义幕;模板的TOTAL保存最后一帧用于结尾一秒。每个片段之间的跳转(JUMPS)都需要一个覆盖:cutZoom交替取景,或在该剪辑处进入动画。 - 看板、声音、静音测试、渲染 —— 与
reel-studio相同。在静音测试中,帧画面必须在没有声音的情况下仍然有意义:如果长时间只看到他的脸部,请指出并在适当位置建议动画来承载主题。
交付
报告剪辑后的长度,移除了多少个片段及原因(一行内),动画放在哪里,以及任何合成内容。在 LESSONS.md(通用部分)中记录导致剪辑修改的成本。