一部 11 分 40 秒的短片:人类文明史,就是一部对 Anthropic 的盗版与蒸馏史。
画面和声音全部由代码生成:画面是网页里的 WebGL 着色器和 Canvas,声音是 Python 纯代码合成,没有采样,也没有素材库。旁白由 MiniMax Speech 2.8 HD 合成。
- 观看:B 站《人类文明史,就是对Anthropic的盗版与蒸馏史|达里奥创世录》;高清文件在本仓库的 Release 附件里
- 制作:
- 导演 · 艺术总监:Claude Opus 5.5
- 作曲 · 声音设计:Claude Sonnet 5.5(合成器和第一章前段由 Opus 写)
- 技术总监 · 视效 · 剪辑 · 母带:GPT-6.1 Sol
- 出品人 · 原案:一位前 Claude Max 5x 用户(B 站 @你好与那啥)
本仓库是从制作目录里挑出来的一部分,用来读、学和改,不是一键重现整部片的流水线。
先说遗憾:声音整体仍然偏嘈杂,作者自己也不太满意;文档里的声音规则记下的是哪些方向被否过,不等于照做就好听。字幕烧进了每个镜头,所以无字幕版要整片重渲。这些问题和其他已知没做好的地方,都写在 文档/遗憾与待改进.md,借鉴之前请先读。
| 目录 | 内容 | 能不能直接跑 |
|---|---|---|
声音/ |
全片声音层:自写合成器 synth.py、电平和对时工具 kit.py、五章作曲脚本、拼接脚本、经验文档《声音点缀做法》 |
能。跑完得到与成片声音层逐采样一致的 full-music.wav(不含旁白) |
镜头/ |
四个代表性镜头的源码:要有光(WebGL 光场)、祖冲之割圆(Canvas 纸面)、黑洞与回信(WebGL 光场加网页界面)、提交申诉(仿真后台界面),各带设计说明 | 能。可以出静帧联系表和无声视频 |
最小示例/ |
一部 75 秒番外的完整流程脚本:文稿 → TTS 请求 → 拼旁白和时码 → 渲染 → 声音层 → 字幕 | 渲染和声音层能跑;旁白要自己调 TTS 生成 |
数据/ |
五章旁白的文字和逐字时码(window.FILMn = {...}),镜头页面和作曲脚本靠它对时间 |
数据文件 |
文档/ |
遗憾与待改进(先读这篇)、旁白文稿、方法手册(多模型分工做一部片的经验,写成可推翻的假说)、复盘与改进 | 文档 |
英文版/ |
英文版:英文译稿、中英字幕轨(SRT)、英文配音(本地 TTS)与混音、片尾英文替换的脚本,说明见 英文版/README.md | 能。需要无字幕原片,英文版/setup.sh 会下载 |
需要:Python 3.11 以上,pip install numpy scipy pillow playwright;ffmpeg 在 PATH 里;渲染镜头需要 Chromium(playwright install chromium,或用环境变量 CHROME_PATH 指向本机 Chrome)。
声音层(约一两分钟,纯 CPU):
cd 声音
for f in ch1_seq ch1_part_a ch1_part_b splice_ch1 ch2_part_a ch2_part_b splice_ch2 ch3 ch4 ch5_part_a ch5_part_b splice_ch5 splice_all; do python $f.py; done每个作曲脚本输出一条全片长度的 48kHz 立体声 WAV,只有自己那段有声音;splice_* 把它们相加。成片里这层再整体降 4.49 dB、和旁白混音、做响度标准化(−16 LUFS),那一步不在这里。
镜头:
cd 镜头
python render.py 02-祖冲之割圆 stills --sub 2 # 抽 8 帧拼成联系表
python render.py 03-黑洞与回信 video # 逐帧渲染成 silent.mp4页面协议见 镜头/render.py 开头的说明。WebGL 镜头需要硬件加速,软件渲染会非常慢。
字体:成片用的商业字体没有放进来,页面会按顺序找本机已装的开源字体:中文黑体 Noto Sans SC、中文宋体 Noto Serif SC、西文 Inter 和 Source Serif 4、等宽 JetBrains Mono。都没装也能跑,只是回退到系统字体,字形和成片不同。
- 字体换成了开源字体;黑洞回信页上的公司标志换成了中性圆形占位。
- 镜头源码是各镜头的母版原型。成片里这些画面还经过按旁白逐字重映射时钟、统一胶片颗粒、拼接调色,那些脚本绑着原制作目录,没有放进来。
- 全片大约四十个镜头,这里只放了四个。
- 旁白用 TTS 生成后,用本地 Whisper 按文稿做强制对齐,得到每个字的时间,存在
数据/。 - 画面事件的时间写在每个镜头页面里;成片上再用
kit.frame_trace逐帧读亮度和帧间差,核到具体哪一帧(按钮按下变暗、灭灯、出现)。 - 作曲脚本里直接写"第几秒放什么声音";循环按 BPM 从某句旁白起拍,到叙事转折处一刀切断或磁带断电。电平按"手机外放"口径逐个归一。
具体规则和踩过的坑见 声音/声音点缀做法.md。
视频、封面和旁白文稿:CC BY-NC-SA 4.0;代码:MIT;其余文档:CC BY 4.0。详见 LICENSE.md。
本片是虚构作品,与 Anthropic 公司无关,不构成推广。