← 返回项目页

实验用 AI 拍一部「上海美术制片厂风」的动画短片|Remotion + Edge TTS

招财金蟾 · 缘起 | 四次迭代,从机械朗读到九幕神话,最终 98 秒

摘要:本文记录了我使用 Remotion 程序化视频框架 + Edge TTS 神经网络语音,从零制作一支 98 秒中国神话动画短片的全过程。经历四次大版本迭代——从最基本的几何动画到上美影风剪纸/赛璐珞风格,从机械 macOS 朗读到 XiaoxiaoNeural 情感旁白,从七幕平铺到九幕多镜头运镜。文章包含技术选型对比、踩坑实录、以及每一版的视觉演变对比。
视频待补充
请将视频上传后将下方 VIDEO_SRC 标记中的 src 替换为实际视频链接

▲ 最终成品:招财金蟾 · 缘起(98秒,九幕多镜头版,XiaoxiaoNeural 旁白)

一、缘起:一个神话故事的 AI 化构想

这个故事的起点,是一段流传在中国民间神话中的叙事——

天地初开,女娲娘娘炼五色石以补苍天。补天既毕,尚余三石,零落人间。
其一迸裂于花果山,化为石猴,号美猴王,保唐僧西行——是为孙悟空
其一衔玉而生,名唤宝玉,历尽悲欢——是为贾宝玉
其一坠于淤泥浊水,千年风霜,渐成蟾形,只进不出,镇宅守财——是为招财金蟾
今人欲拜金蟾,须以黄金为信,先拜而后求——此乃「先拜金蟾」之缘起也。

一段如此精妙的文本,如果用动画演绎出来,会是怎样的体验?更重要的是——如果全程用 AI 工具来完成,从脚本到配音到画面到剪辑,会面临哪些挑战?

带着这个好奇心,我开启了一段从代码到动画的创作实验。

二、技术栈选择:为什么是 Remotion?

要做"程序化生成动画",目前最成熟的方案是 Remotion——一个基于 React 的视频框架。它的核心思路是:

React Components → 逐帧渲染 → FFmpeg 合成 → MP4

这意味着你可以用熟悉的 JSX 来"画"每一帧,用 springinterpolate 来做动画缓动,用 Sequence 来编排时间轴。它本质上把你从 AE/PR 的时间线拖拽中解放出来,变成写代码——一个前端开发者的动画工作流。

选择 Remotion 还有两个关键原因:

① 声音先行工作流:传统视频制作是先剪辑画面再配音,但对于念白+画面的神话叙事,理想流程应该是——先生成有情感的自然旁白 → 根据旁白时间戳编排场景 → 动画跟随声音节奏。Remotion 可以在代码中精确控制每个 Sequence 的起止帧,天然适配"旁白驱动"。

② 风格可控:动画的"画面"本质上是 SVG + CSS + Canvas 的组合。这意味着你可以定制出任何视觉风格——水墨、剪纸、赛璐珞、浮世绘——而不受模板限制。

三、四次迭代:从"能看"到"好看"的进化

v1.0 · 初版 → v2.0 · 声音先行 → v3.0 · 上美影风 → v4.0 · 九幕多镜头

3.1 v1.0:让代码"开口说话"

第一版的核心问题是:如何让 Remotion 发出自然的人声?

最初我用了 macOS 自带的 say 命令——一行命令就能合成中文朗读:

say -v Tingting -o audio.aiff "天地初开,洪荒既判。"

结果是……像导航语音。没有情绪,没有起伏,甚至断句都不太对。这一版的画面也很"程序员"——几何圆形当石头,渐变色当背景。7 个场景,48 秒,每幕 6~7 秒的简单动画。完成度很低,但验证了技术可行性。

3.2 v2.0:声音先行——找到自然的"嗓音"

要自然的旁白,需要神经网络 TTS(文本转语音)。我调研了三个选项:

方案 费用 中文质量 API难度
阿里云 CosyVoice套餐内⭐⭐⭐⭐⭐中等
微软 Edge TTS完全免费⭐⭐⭐⭐较高
macOS say免费极低

在没有付费套餐的情况下,Edge TTS 成了最优选。它是微软 Edge 浏览器内置的"大声朗读"功能的后端,通过 WebSocket 协议暴露,完全免费、无需 Key。中文女声 XiaoxiaoNeural 的嗓音自然度接近真人朗读。

但调用它需要拼一个特殊的认证令牌:Sec-MS-GEC——一个基于时间的 SHA-256 哈希。核心算法:

const t = Math.floor(Date.now()/1000) + 11644473600;
const ticks = (t - t%300) * 10000000n;
const token = SHA256(ticks + "6A5AA1D4EAFF4E9FB37E23D68491D6F4");

搞定 TTS 后,我设计了一个"声音先行"工作流

script.json(剧本真源)
   ↓ tts.mjs(合成 + 逐字时间戳)
   ↓
audio/*.mp3 + timings.json
   ↓ Video.tsx(驱动时长 + 卡拉OK)
   ↓ remotion render → MP4

这一版的画面是"水墨��金"风格——深色背景、金色文字、几何化的山石与人物剪影。信息量有所提升,但离"美"还差得远。

3.3 v3.0:找到风格——向上海美术制片厂致敬

用户的一句话让我有了方向:"上海美术制片厂的动画风格,剪纸或者赛璐珞。"

上美影的经典动画(《大闹天宫》《哪吒闹海》《天书奇谭》)有一个共同特征:粗墨轮廓 + 平涂色彩 + 手工感。在 SVG/React 中实现这个效果,我用了三个核心技术:

① 剪刀边缘抖动—— 对 Paper 层应用 feTurbulence + feDisplacementMap,让墨线边缘轻微不规则,模拟剪纸的手工切痕。

② 宣纸底 + 民间色—— 暖米色背景(#f1e3bf),叠加 SVG 噪声纹理(mixBlendMode: multiply),暗角加阴影。色彩方案取自民间年画:朱红、金、翠、靛、赭。

③ 纸片"剪入"运动—— 用 spring 模拟剪纸片落在桌面上的弹跳,而非平滑的 ease。随机飘浮的微尘金点增添"纸面"感。

这一版还加入了传统民间纹样:回纹边框、祥云、海水江崖、方孔钱、莲花座、窗花团花、朱文印章。画面信息量大幅提升。

3.4 v4.0:重构为九幕多镜头——让动画"有镜头感"

v3 虽然风格化了,但还有一个根本问题:没有镜头。每一幕都是静止画面 + 轻微漂移,像在看一本翻动的画册。

要让画面有电影感,需要镜头语言——推、拉、摇、移、升、旋。我在 v4 中实现了一个完整的 Camera 系统

const cam = buildCam(frames, [
  [0,    0,   0,  1.0,  0],    // 起:宽广镜
  [0.4,  0, -60,  1.3,  0],    // 推:逼近特写
  [0.75, 60,-20, 1.22,  3],    // 旋:轻微环绕
  [1,    0,   0, 1.12,  0],    // 落:回正
]);

同时把脚本从 7 幕扩充为 9 幕——加入了序章(共工触不周山、天倾地陷)、更详细的补天神话(断鳌足、杀黑龙、积芦灰)、花果山水帘洞瀑布、以及尾声中的三石回顾。新增了 8 个神话母题:不周山裂峰、炼石炉火、黑龙剪影、鳌托四极、水帘洞、朱门红楼、通灵宝玉发光体、元宝堆。

镜头多了,画面就需要有景深。我实现了一个 Far 视差层:远背景跟随镜头平移但幅度缩小(depth=0.45),近景在 Camera 内全量运动。这样在镜头推近时,前景和后景以不同速度移动,形成了基本的空间感。

四、技术深水区:三个核心踩坑

4.1 TTS 限流:从 0 字节到 Cloudflare Worker 代理

Edge TTS 虽然是免费的,但它有严格的 IP 限流。在本机直接调用时,WebSocket 握手成功但返回 0 字节音频,甚至返回 403 全量封锁。这意味着在渲染的关键时刻,旁白可能突然"哑了"。

调查了一轮替代方案:Google TTS 在这台机器的网络环境中不可达,有道词典接口已失效返回 500,macOS say 虽然永远可用但声音太机械。

最终的关键突破是找到了一个公开部署的 Cloudflare Worker 代理(tts.wangwangit.com),它将 Edge TTS 封装为 OpenAI 兼容的 HTTP API,通过 Cloudflare 的全球边缘网络转发请求——完美绕过了本机 IP 封锁。响应速度极快(约 0.5 秒),完全免费,无需认证。

curl -X POST "https://tts.wangwangit.com/v1/audio/speech" \
  -d '{"input":"天地有大美","voice":"zh-CN-XiaoxiaoNeural"}' \
  --output audio.mp3

通过这个代理,我为 9 个场景全部生成了 XiaoxiaoNeural 旁白——嗓音自然度和之前的版本一模一样,而且再也没有出现过超时或 403。

4.2 ffprobe 兼容性:AIFF vs MP3 vs WAV

Remotion 渲染时需要探测音频时长和声道。但它的内置 ffprobe 是一个极其精简的静态编译版本——只支持 MP3 和 AAC,不支持 AIFF、不支持滤镜(除了 volume)。当用 macOS say 输出 AIFF 时,需要先用 afconvert 转 WAV,再用 afinfo(macOS 原生工具)获取真实时长,才能写入正确的 timings。

4.3 SVG 滤镜性能:feTurbulence 的 GPU 代价

上美影风的 SVG 滤镜(feTurbulence + feDisplacementMap)在每一层 Paper 组件上都会触发 GPU 重新计算。9 个场景中,每个场景有 3~6 个 Paper 层——在 MacBook Pro M-series 上,2956 帧的完整渲染耗时约 3 分钟,在可接受范围内。如果需要更高分辨率或实时预览,建议减少滤镜层数或降低 numOctaves。

五、方案对比:三种旁白路线

维度 Edge 直连 CF Worker 代理 macOS say
自然度⭐⭐⭐⭐ 极佳⭐⭐⭐⭐ 极佳⭐ 机械
逐字时间戳✅ 原生⚠️ 需估算❌ 需估算
稳定性❌ IP 限流✅ CF 全球网络✅ 永远可用
费用免费免费免费

本文最终版使用的是方案 B——Cloudflare Worker 代理。它既有 XiaoxiaoNeural 的自然嗓音,又通过 Cloudflare 的边缘网络避开了微软的 IP 限流,是目前"免费 + 高质量中文旁白"的最优解。如果你有阿里云 CosyVoice 或火山引擎的 token,还可以获得更精细的情感控制能力。

六、九幕场景一览

以下是最终版中九个场景的代表性帧,展示了从序章天倾地陷到尾声聚宝守财的完整��事弧线,以及不同场景中镜头语言的变化。图片文件位于项目 images/ 目录中。

标题卡 · 招财金蟾
标题卡 · 招财金蟾
序 · 天倾地陷
序 · 天倾地陷
壹 · 炼石补天
壹 · 炼石补天
贰 · 灵猴出世
贰 · 灵猴出世
叁 · 衔玉而生
叁 · 衔玉而生
肆 · 淤泥化蟾
肆 · 淤泥化蟾
伍 · 招财金蟾
伍 · 招财金蟾
陆 · 先拜金蟾
陆 · 先拜金蟾

七、经验与反思:AI 创作的时代,什么变了?

① 门槛降低了,但"美"的门槛没有。Remotion 让一个前端开发者可以在几个小时内搭出完整的动画流水线,生成一个"能看"的视频。但要让画面有风格、有韵味、有电影感,需要的不是更多的代码,而是更多的"审美决策"——用什么颜色?母题从哪来?镜头怎么运动?这些是 AI 目前帮不了你的。

② 程序化视频的核心瓶颈不是渲染速度,而是"信息密度"。一个 7 幕 70 秒的视频和 9 幕 98 秒的视频,渲染时间差异不大(2 分钟 vs 3 分钟)。真正的差异在于——后者每幕有 2~3 个镜头运动、5~8 个子元素、多层视觉纹样。信息密度翻倍,但实现复杂度翻了数倍。

③ TTS 是声音驱动视频的关键,也是最大的不稳定因素。免费的神经网络 TTS(Edge)质量足够好,但不稳定。找到 Cloudflare Worker 代理这个"绕道方案",才真正解决了稳定访问的问题。如果做生产级的自动化视频内容,建议用付费方案(CosyVoice/火山引擎)替换。

④ "声音先行"是叙事类视频的最佳工作流。先生成旁白,根据旁白时间戳来编排动画——这个流程让画面节奏天然跟随语音节奏,避免了"配音"与"画面"打架的尴尬。

八、写在最后

从"用代码画动画"的猎奇尝试,到"九幕神话多镜头运镜"的 98 秒完整短片——这次创作让我深刻体会到:AI 工具正在把"创作"的下限不断抬高,但上限依然取决于人的审美、判断和想象力。

代码能生成画面,但决定画面美不美的,是你选择的那组颜色、那条母题、那组镜头运动——这些选择,暂时还无法交给 AI。

感谢阅读 🙏

本文全部视频由 Remotion (React) + Edge TTS (via Cloudflare Worker) 生成。所有视觉元素为手写 SVG + React 组件,未使用任何视频素材库。
© 2026 · 招财金蟾 · 缘起