Skip to content

About

达里奥创世录:一部画面和声音全由代码生成的 AI 短片(Claude / GPT 分工制作)· 源码、声音合成器与制作经验

Resources

Stars

94 stars

Watchers

0 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

Repository files navigation

达里奥创世录

一部 11 分 40 秒的短片:人类文明史,就是一部对 Anthropic 的盗版与蒸馏史。

画面和声音全部由代码生成:画面是网页里的 WebGL 着色器和 Canvas,声音是 Python 纯代码合成,没有采样,也没有素材库。旁白由 MiniMax Speech 2.8 HD 合成。

本仓库是从制作目录里挑出来的一部分,用来读、学和改,不是一键重现整部片的流水线。

先说遗憾:声音整体仍然偏嘈杂,作者自己也不太满意;文档里的声音规则记下的是哪些方向被否过,不等于照做就好听。字幕烧进了每个镜头,所以无字幕版要整片重渲。这些问题和其他已知没做好的地方,都写在 文档/遗憾与待改进.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。都没装也能跑,只是回退到系统字体,字形和成片不同。

和成片的差别

  • 字体换成了开源字体;黑洞回信页上的公司标志换成了中性圆形占位。
  • 镜头源码是各镜头的母版原型。成片里这些画面还经过按旁白逐字重映射时钟、统一胶片颗粒、拼接调色,那些脚本绑着原制作目录,没有放进来。
  • 全片大约四十个镜头,这里只放了四个。

声音是怎么跟画面对上的

  1. 旁白用 TTS 生成后,用本地 Whisper 按文稿做强制对齐,得到每个字的时间,存在 数据/。
  2. 画面事件的时间写在每个镜头页面里;成片上再用 kit.frame_trace 逐帧读亮度和帧间差,核到具体哪一帧(按钮按下变暗、灭灯、出现)。
  3. 作曲脚本里直接写"第几秒放什么声音";循环按 BPM 从某句旁白起拍,到叙事转折处一刀切断或磁带断电。电平按"手机外放"口径逐个归一。

具体规则和踩过的坑见 声音/声音点缀做法.md。

协议

视频、封面和旁白文稿:CC BY-NC-SA 4.0;代码:MIT;其余文档:CC BY 4.0。详见 LICENSE.md。

本片是虚构作品,与 Anthropic 公司无关,不构成推广。

About

达里奥创世录:一部画面和声音全由代码生成的 AI 短片(Claude / GPT 分工制作)· 源码、声音合成器与制作经验

Resources

Stars

94 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages