Communitygithub.com

Desi 歌词动画电影

将任意歌曲转化为16:9手绘风格歌词动画电影——包含定格动画角色、持续装饰画框、梵文+拉丁文逐词同步歌词,以及每段副歌的眼睛特写镜头。歌词自动从用户提供的音频中提取;角色(基于用户参考图片或原创设计)通过 Atlabs MCP 使用 Nano Banana 2.1、GPT Image 2.5 Sunburst 或 Seedream 5 构建,并在不同表情、服装和色调外观中保持一致。当用户需要“歌词视频”、“歌词音乐视频”、“动画歌词”、“手绘音乐视频”、“印度/宝莱坞/印地语歌曲动画”、“歌曲动态排版”或“此风格的插画短片”,并分享歌曲及角色或参考视频时使用。需要 Atlabs MCP——若未连接,技能会停止并引导用户完成连接。

Desi 歌词动画电影 是什么?

Desi 歌词动画电影是一款专为 AI 代理(如 Claude Code、Cursor、Codex)设计的技能,用于将用户提供的音频文件自动生成为 16:9 手绘风格歌词动画电影。该技能通过 Remotion 项目模板实现数据驱动渲染,用户只需生成三个 JSON 文件(歌词、角色、镜头列表)即可完成影片。其核心特性包括:定格动画风格的逐帧绘制、持续不变的装饰画框、梵文与罗马字母逐词同步歌词,以及每段副歌中角色眼睛的特写镜头变化。技能依赖 Atlabs MCP 进行角色艺术创作,支持 Nano Banana 2.1、GPT Image 2.5 Sunburst 和 Seedream 5 等模型,确保角色在不同表情和服装下保持一致性。用户可通过参考图片或文字描述设计原创角色,歌词则通过音频转录工具自动提取(支持印地语和印度式英语),且严格遵循只从用户音频或用户提供的文本中获取歌词的原则。技能包含完整的工具链(音频分析、歌词构建、角色注册、镜头规划、渲染交付),并提供了多次实际运行中的注意事项,如避免 feTurbulence 种子重复、处理 Whisper 遗漏的快速歌唱部分等。适用于需要创建印度风格歌词动画、宝莱坞歌曲动画或动态排版视频的场景。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Chinmaya123-cyber/desi-lyric-film/tree/main/skills/desi-lyric-film

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Desi 歌词动画电影 是做什么的?

将一首歌曲(用户自己的音频文件)转化为 16:9 的歌词电影,采用统一的手绘风格: 一个插画角色承载每一句歌词的情感,每段副歌都是一个眼睛特写镜头,歌词以逐字梵文和下方罗马字体行形式呈现,每个剪辑点都落在演唱的音节上,整体呈现出定格动画般的运动感(双帧绘制、沸腾墨线、纸片剪贴)。

template/ 是一个完整的、经过测试的 Remotion 项目,带有一个数据驱动引擎。你永远不需要手写影片:你只需生成三个 JSON 文件,引擎就会渲染出影片。

文件内容创建方式
src/lyrics.json每个演唱短语的条目:{t0, t1, dev[], rom[], times[]}tools/transcribe_lyrics.py → tools/build_lyrics.py
src/character.json表情集 + 眼睛锚点、眼睛特写图像、造型卡片、旋转动作Atlabs MCP + tools/register_frames.py、eye_anchor.py、cu_plates.py、make_cards.py
src/film.json镜头列表(种类、开始时间、歌词槽位、背景、过渡、选项)tools/plan_shots.py,然后你根据含义进行优化

在每一步参考以下文档: references/atlabs-mcp.md · references/character.md · references/lyrics-and-timing.md · references/shot-design.md · references/style-guide.md(精确调色板、排版、运动规范) · references/render-deliver.md。

0. 硬性规则 — 必须先连接 Atlabs MCP

所有角色艺术(基础设计、表情、眼睛特写、服装/色调外观)均通过 Atlabs MCP 生成。没有备用方案:如果未连接,停止操作,不做任何其他事情,直到连接成功。

检查:使用 ToolSearch 搜索 atlabs generate_image get_result start_upload get_account(工具名称可能是 mcp__atlabs__… 或 mcp__<id>__…,并且通常是延迟加载的),然后调用 get_account —— 它会返回积分余额。

如果缺少这些工具或 get_account 失败,请回复以下确切步骤并等待:

此技能使用 Atlabs MCP 生成角色艺术,因此需要先连接它(大约一分钟):

  1. 还没有 Atlabs 账户? 在 https://app.atlabs.ai 注册(图像生成使用 Atlabs 积分;一部完整的电影大约需要 25–40 积分)。
  2. 连接它:
    • Claude Code,作为本插件安装: Atlabs 已捆绑——输入 /mcp,选择 atlabs,登录。
    • Claude Code(终端): 运行 claude mcp add --transport http atlabs https://mcp.atlabs.ai/mcp,然后 /mcp → atlabs → 登录。
    • Claude Desktop / claude.ai: 设置 → 连接器 → 添加自定义连接器 → 名称 Atlabs,URL https://mcp.atlabs.ai/mcp → 添加 → 连接 → 登录,然后为此对话启用它。
  3. 连接完成后告诉我,我就开始。

1. 简述 — 提问,不要假设

使用 AskUserQuestion 提问(一轮,然后基于合理的默认值继续):

  1. 歌曲:用户拥有的音频文件(mp3/wav/m4a)。不要自行下载音乐。
  2. 选取部分:“为我选择副歌”(默认,30–60 秒)或用户提供的时间戳,或用于匹配的参考片段(tools/locate.py 在歌曲内查找片段)。
  3. 角色 — 提供:
    • “使用我的参考图片” — 用户本人的照片或经同意的人的照片,或用户拥有版权的角色艺术。 用户可以分享多张(不同服装、彩色背景、表情);每张都有用。不要为名人或任何未经其同意的真实人物进行风格化处理——改为提供原创角色。
    • “设计一个原创角色” — 可选地提供风格参考图片和简短描述(外观、服装风格)。
  4. 氛围词(可选):例如“印度坏女孩 Z 世代”、“温柔浪漫”、“喜庆”、“心碎”。默认:现代印度风格,带有印度元素。

如果用户在聊天中分享的图片不是磁盘上的文件,请要求用户将它们保存到 refs/cards/(或提供路径)—— 上传到 Atlabs 需要文件。

2. 搭建项目

cp -R <skill dir>/template <project> && cd <project>
npm install
uv venv -q --python 3.12 .venv && uv pip install --python .venv/bin/python numpy scipy pillow faster-whisper
mkdir -p refs && cp <song> refs/song.mp3

(也可以使用 python3.12 -m venv .venv。)从项目根目录运行每个 Python 工具,格式为 .venv/bin/python -I tools/<tool>.py …。 模板附带一个演示角色、道具和演示数据,因此 npx remotion studio src/index.ts 可立即工作。

3. 读取歌曲、选择部分、剪切音频 — references/lyrics-and-timing.md

.venv/bin/python -I tools/beatgrid.py refs/song.mp3 --bpm-min 60 --bpm-max 180      # 速度、节拍相位、响度条
.venv/bin/python -I tools/structure.py refs/song.mp3                                 # 重复部分 = 副歌
.venv/bin/python -I tools/vocal_onsets.py refs/song.mp3 --from 0 --to <dur> --json refs/onsets.json
tools/cut_audio.sh refs/song.mp3 <start> <end>                                        # → public/audio/song_cut.wav

选择最重复、最有活力的声乐部分(副歌就在那里)。在第一个声乐开始前的 2–4 拍的下拍开始,在进入下一部分前的呼吸处结束。注意 start —— 视频时间 = 歌曲时间 − start。

4. 歌词 — 自动从用户自己的音频获取

.venv/bin/python -I tools/transcribe_lyrics.py refs/song.mp3 --from <start> --to <end> --lang hi --onsets refs/onsets.json
.venv/bin/python -I tools/build_lyrics.py --transcript refs/transcript.json --slice <start> <end> --onsets refs/onsets.json
  • --lang hi 返回梵文,--lang en 返回罗马化的印度英语;build_lyrics.py 会生成两种文字。
  • 如果转录器报告无法识别的演唱段落(非常快的演唱、叠加声部),向用户询问一次是否有歌词文本或带时间戳的表格;如果有,则使用 build_lyrics.py --table lyrics.txt …(或 --text)。如果没有,继续:这些短语保持无词状态,规划器会为它们分配纯视觉镜头。
  • 歌词仅来自用户音频(通过转录器)或用户提供的文本。 不要自己输入歌词,不要凭记忆填补空白,也不要在聊天中回复歌词文本——只报告计数和时间。

5. 角色 — Atlabs MCP — references/character.md

一张基础绘制,其他所有内容都是对该基础的编辑,因此角色永远不会发生漂移。默认模型: Nano Banana 2.1(nano_banana_2_1)用于从参考进行基础绘制和每次编辑(最佳一致性); GPT Image 2.5 Sunburst(gpt_image_2_5_sunburst)用于照片需要更强的风格化处理时; Seedream 5 Pro(seedream_5_pro)用于新道具或全场景图像。

  1. 基础:清晰、上半身、纯奶油色背景,按照风格(参考或原创)。
  2. 表情(基于基础的编辑):front, half, closed, pain, relief, shy, dream, moved(加上基础作为 neutral/侧眼)。 register_frames.py 将它们放在一个画布上;eye_anchor.py --set main … 找到角色的眼睛。
  3. 可选的第二套造型(例如更深的服装)包含 front, half, closed, pain, relief, dream → 用于沉重情绪。
  4. 眼睛特写图像 + 编辑 half, closed, tears, glance, smoulder → cu_plates.py,然后 eye_anchor.py --closeup。
  5. 4–6 张造型卡片:同一个人,不同现代服装 + 来自调色板的纯色背景 + 涂鸦, 每张都带有闭眼编辑 → make_cards.py。
  6. 全身旋转动作 → keyout.py。 并行提交独立的生成;使用 sheet.py 制作联系图并在继续前查看。告知用户使用的模型和消耗的积分。

6. 规划影片 — references/shot-design.md

.venv/bin/python -I tools/plan_shots.py --bpm <bpm> --beat0 <第一个拍,视频秒数> --duration <秒> --audio audio/song_cut.wav

然后阅读每一行的含义(从文件中读取,不要在聊天中粘贴歌词)并优化 src/film.json:

  • 每段副歌都是一个眼睛特写镜头(她的近景,每次有不同的凝视,或一个眼睛道具);不能连续两次相同
  • 痛苦表现在她的脸上(裂纹、变暗的地面),而解脱出现在治愈性的词语上——永远不要出现真实的伤口
  • 触摸/感觉表示为“感动”(花朵绽放、涟漪),而不是真实的心手相印;快的歌词行使用造型卡片切换
  • 每个镜头的背景都不同(造型颜色),画框始终保持不变;过渡方式多样化 保持一个连贯的故事:她是主角,她的眼睛是主题。

7. 检查,然后渲染 — references/render-deliver.md

node tools/stills.mjs out/st 0.5 <frames…> && .venv/bin/python -I tools/sheet.py out/st.jpg out/st/*.jpg
./tools/make_film.sh <name>                     # → out/<name>.mp4 (1920×1080, 24 fps)

在每个短语的第一个词处检查静帧:歌词清晰可辨且在画框内,副歌时眼睛睁开,表情与歌词匹配,没有空镜头。修复问题,重新渲染更改过的帧,然后渲染影片(约 4–6 分钟)。将结果复制到用户的“下载”文件夹并发送。提醒一次:商业歌曲在某些平台上可能被静音;用户有责任拥有发布歌曲的版权。

实际运行中的注意事项

  • feTurbulence 将种子 0 和 1 视为相同模式——沸腾/颗粒种子从 1 开始(已在 kit.tsx 中修复);否则开场会静止 4 帧然后跳跃。
  • Whisper 会漏掉非常快的演唱;起始点仍然为这些短语计时——永远不要猜测词语。
  • Remotion 捆绑的无头 shell 在 macOS 上可能崩溃;remotion.config.ts 使用已安装的 Chrome。保持并发数为 6。
  • 注册的编辑必须来自同一基础图像;如果编辑发生漂移(不同的姿势/裁剪),请重新生成而非强制使用。
  • 深色背景上的文字会自动切换为奶油色/桃色字体——根据情绪选择镜头背景,而非根据文字。

相关技能