同一个想法,尝试几种味道
延续 Morning song:保留原配方,只改变一个维度。听出差别,再把最想留下的 Candidate 保存成有名字的 Version。
从上一段音乐继续
Section titled “从上一段音乐继续”准备第一章的 Project id、原歌词、风格、seed 2026192201,以及已保存的 Morning Version。先回听一次,并写下一个问题:我想让编曲更空一点、改一句更好唱的歌词,还是看看另一个随机起点?
下面的变化只生成新的短片段,不编辑上一份音频。在同一 Project 的“版本”选择两份已保存作品,用底部 A/B 播放器比较。相同 seed 也不保证在不同模型、环境或版本下逐字节相同。
1. 挑一个值得听的问题
Section titled “1. 挑一个值得听的问题”点选配方,查看具体改了什么。第一份是已验证示例;其余是尚未调试或试听的灵感配方,用来说明尝试方向,不承诺效果。这里只替换教程中的输入示例,不会生成音乐。
已验证基线
保持第一章全部输入。先听温暖人声与木吉他、钢琴的组合,再写下下一次想改的一点。
查看与复制输入 · JSON
{ "style": "English, gentle folk pop, warm clear voice, acoustic guitar and piano, light bass and drums, 96 BPM", "lyrics": "[Verse]\nMorning gathers on the window\nQuiet streets begin to glow\nI will carry one small promise\nEvery step can help it grow\n\n[Chorus]\nWalk with me into the daylight\nLet the little river flow\nWe can make a brighter moment\nWith the kindness that we show", "seed": 2026192201, "max_seconds": 35}2. 带着目标试听
Section titled “2. 带着目标试听”| 玩法 | 先保留 | 重点听 |
|---|---|---|
| 只换风格 | 原歌词、seed、片段长度设置 | 乐器密度、人声与情绪是否贴合;输入风格词不是精确编曲指令。 |
| 只改一句歌词 | 原风格、seed、其余歌词 | 咬字与句子是否自然,是否更容易记住;不保证该句一定出现在这段时长内。 |
| 只换 seed | 原风格、完整歌词、片段长度设置 | 另一个结果中有没有更合适的旋律或组织方式;不把一次差别当作稳定规律。 |
先完整听,再针对问题重听。用一句话记录偏好,比如“B 的人声更清楚,但 A 的结尾更自然”。保留原结果,避免凭记忆比较。
在一个播放器里比较两份作品
Section titled “在一个播放器里比较两份作品”- 在“版本”查看 Morning 原版与另一份已经明确保存的 Version。在“版本 A”和“版本 B”分别选择它们,再选择“使用这对版本”。未保存 Candidate 不在比较选项中;只有一份时可以选择“只试听 A”。
- 等待音频读取,再选择“播放”。用“切换到 A”与“切换到 B”回听同一时刻。暂停在12秒切换仍在12秒;播放中切换会在目标就绪后继续。这里只保留绝对秒数,不自动对齐节拍、歌词或乐句。
- 展开“共同试听片段”,先试起点2秒、终点4秒。选择“设置片段”,再选择“播放片段”;只播放一次,到4秒暂停。可以拖动或调整波形片段边界,但片段必须在两份音频都存在的范围内。手动 seek 会取消这次片段限界。
- 打开“歌词与输入”查看当前创作草稿。要检查 A/B 某份作品的已保存歌词与输入,打开那份 Version 详情的“提交时的输入”;从那份 Version 打开对应乐谱。导航时音乐继续;明确试听 Candidate、参考音频或草稿 MIDI 才会换源。需要继续 A/B 时,选择底部“返回比较”,从0秒暂停开始。
如果目标音频比当前播放位置短,会停在目标的真实末端,保持暂停;返回较长的一份仍暂停。自然播放结束后,明确“播放”可从头重听。更换比较对会从0秒暂停;旧片段不适合新的共同范围时,按提示重新设置,不会自动缩短。
刷新只恢复这个 Project 中仍有效的版本选择与 A/B 侧,从0秒暂停,不恢复播放位置或片段。选择存储不可用时,本次仍可比较,刷新恢复不保证。若提示音频或版本读取失败,先保留作品:选择“重新读取音频”或“重新读取版本”;缺少原文件时先恢复 Audio/ABC,再读取。重新读取音频会从0秒暂停,避免再次定位到无法解码的位置。只有一份可用时仍可单独试听;这些恢复操作不会生成或保存新作品。
3. 在同一个 Project 里试下一份
Section titled “3. 在同一个 Project 里试下一份”从已经留下的作品继续时,先打开“版本”,查看保存的父子关系。选择较早的一份,例如 Morning 原版,检查它的输入、来源与“已保存输出”,再选择“从此版本继续创作”。这个动作打开该版本的乐谱,保留当前草稿;需要原版的风格、歌词与 seed 时,再选择“使用此版本输入”。
- 检查或修改当前 ABC,然后明确“选定已保存 Score”或“保存并选定此 Score”。
- 先保留歌词和 seed,只把风格改成更轻的钢琴编曲,再从选定 Score 生成。检查提交输入中的父版本确实是选中的 Morning 原版。
- 试听新 Candidate。喜欢时命名为“Morning · 轻钢琴”,再明确保存 Version。未保存 Candidate 不进入关系图。
- 回到原版重复一次,尝试另一个方向并保存。两份新 Version 都链接到原版;较新的分支不会自动成为下一次的起点。刷新仍可打开同一父子关系和保存快照。
列表可以有多个独立起点;没有父版本并不是错误。读取失败时先“重新读取版本”,不能把错误当作空历史。若原 Audio 或 ABC 文件缺失,恢复原文件后再重新读取;已有历史不会因此被清除。起点无法确认时,草稿保留,返回实际版本或重新读取起点,再检查并明确选定。
在正式 Web 的“音乐生成”选择上一候选的“用这次输入继续探索”,更新一个输入,再生成、试听并记录判断。旧 Candidate 和 Version 不会被覆盖。想保留明确选定的旋律并改变风格时,使用乐谱页的重新生成,它会保留选定 ABC 与来源父版本。需要下载文件和脚本时再使用下面的补充,每次选择新的输出目录。
当前操作入口:继续使用同一 Project
此命令示范“只换 seed”。替换 Project id;继续读取第一章的受控歌词。它写入新 Job 并下载新 Candidate,尚不保存 Version。若要换风格,替换 --style。若要改歌词,将原文件复制到自己的新 UTF-8 文件,修改一句,再把新文件路径传给 --lyrics-file;保留原歌词与其他输入。
uv run --project services/api --no-sync python services/api/examples/generate_save.py generate --project-id <PROJECT_ID> --style "English, gentle folk pop, warm clear voice, acoustic guitar and piano, light bass and drums, 96 BPM" --lyrics-file services/api/examples/creator/morning-song-lyrics.txt --seed 2026192202 --output-dir data/morning-candidate-02只换风格:更轻的钢琴编曲。 保留原歌词与 seed,使用新的下载目录。这个灵感配方尚未试听。
uv run --project services/api --no-sync python services/api/examples/generate_save.py generate --project-id <PROJECT_ID> --style "English, gentle folk pop, warm clear voice, soft piano, restrained drums, 96 BPM" --lyrics-file services/api/examples/creator/morning-song-lyrics.txt --seed 2026192201 --output-dir data/morning-piano-01只改一句歌词。 下面的受控 UTF-8 文件只替换原歌词的第一句。它也是尚未试听的尝试;风格与 seed 保持原样。
[Verse]Morning sunlight finds the windowQuiet streets begin to glowI will carry one small promiseEvery step can help it grow
[Chorus]Walk with me into the daylightLet the little river flowWe can make a brighter momentWith the kindness that we show完整示例: services/api/examples/creator/morning-sunlight-lyrics.txt ↗
uv run --project services/api --no-sync python services/api/examples/generate_save.py generate --project-id <PROJECT_ID> --style "English, gentle folk pop, warm clear voice, acoustic guitar and piano, light bass and drums, 96 BPM" --lyrics-file services/api/examples/creator/morning-sunlight-lyrics.txt --seed 2026192201 --output-dir data/morning-sunlight-01每次选一个问题,提交其中一条命令;输出目录已存在时使用新的目录名。想写自己的歌词时,保留原示例,把修改后的全文放在自己的 UTF-8 文件中,再用 --lyrics-file 选择它。
4. 选择你想留下的那一个
Section titled “4. 选择你想留下的那一个”先试听并检查新 Candidate 的 ABC,喜欢时在同一 Project 保存 Version。名字记录本次变化,比如“Morning · seed 02”。保存后,把它和 Morning 原版选成 A/B,回听并记录偏好。可以把第一章喜欢的 Version 作为 parent,保留从哪个作品出发;这只是创作来源关系,不表示音频做了局部编辑。
没有喜欢的也可以暂不保存。生成完成不等于创作选择已完成。
当前保存入口:为新 Candidate 建立 Version
替换实际 Project、Candidate 与已保存父 Version id。没有父版本时移除 --parent-version-id 参数。所有 id 必须属于这个 Project。
uv run --project services/api --no-sync python services/api/examples/generate_save.py save --project-id <PROJECT_ID> --candidate-id <NEW_CANDIDATE_ID> --name "Morning - seed 02" --parent-version-id <FIRST_VERSION_ID>如果保存提示冲突,先读取已有版本
Section titled “如果保存提示冲突,先读取已有版本”保存命令返回 409 时,CLI 只显示 HTTP 状态与地址,不显示错误响应中的既有 Version id。先在本地 Swagger 用 GET /projects/{project_id}/versions 读取这个 Project 的版本列表,按本次的 candidate_id 查找已保存记录。找到时核对实际 name 与 parent_version_id,记录返回的 Version id,再用 GET /projects/{project_id}/versions/{version_id} 确认已经留下的结果。有新的创作意图时生成新的 Candidate。若列表没有对应记录,保留 Candidate id 与错误,按保存与素材恢复指南核对其他保存失败原因。
如果只是等待断开,先按第一章查询原 Job,避免重复推理。下一轮只改一个维度,给比较保留清楚的起点。
下一轮可以问什么?
Section titled “下一轮可以问什么?”- 让同一个主题的歌词更简短:只改一句,看看表达是否更直接。
- 让乐器描述更克制:删掉一项编曲要求,观察是否更接近你的重点。
- 从参考旋律中找一个节奏观察,用文字表达新的风格目标。
这些都是尝试建议,不是经过调优的成品配方。持续保留输入、Job、试听笔记与选中的 Version,创作会更容易接着做。
1ce3268正文来源: docs/learn/variations.md