# ElevenMusic 局部改曲风：只把桥段改成爵士，回听前后旋律是否被改

ElevenMusic Inpainting教程先把自有曲存成song_id，再以两个audio-reference chunks保留两侧原音，中间只放一个6秒generation chunk。分清condition_strength对参考相似度与context_adherence对邻接衔接的控制，不只是换一个重绘起止区间。

1. 核对24秒原曲与三段原始PCM
source-song.wav是24秒原创合成输入，10—16秒为桥段。keep-before.wav、bridge-original.wav、keep-after.wav从同一PCM真实切出，校验脚本逐字节核对；这些是本地源切片，不是Eleven返回的音频。

2. 上传并读取真正的song_id
按官方music.upload上传自己有权处理的源文件，可用extract_composition_plan="music_v2"获取计划信息，读取response.song_id。本页没有上传，stored-song-contract.json的actualSongId保持null；ACTUAL_SONG_ID不是能调用的真实ID。

3. 用两条audio-reference chunks保留外侧
打开inpaint-plan-high.json：第一个chunk只有song_id和range=0—10000ms，第三个引用同ID的16000—24000ms。二者是原音引用块，不写生成prompt或duration_ms；不能把它们改成generation后仍说原片段原样引用。

4. 给桥段独立设置两种控制
中间generation chunk写6000ms、爵士钢琴/刷鼓/低音提琴；conditioning_ref指向原桥段10000—16000ms。context_adherence固定high维持邻接，condition_strength分别high与low比较保留参考特征的程度，两者不是同一个强度。

5. 先做类型合约与负例校验
运行python validate-inpaint-plan.py，检查两个引用范围、总长24000ms及真实PCM切片。脚本会故意把开头换成generation并确认拒绝；输出只证明本地计划合约，不证明目标API已执行或原音引用已经返回。

6. 提交计划并保留两个实际版本
实际账号准备好后，按run-eleven-inpaint.py的upload→compose流程执行，模型固定music_v2_5。分别保存submitted-plan与edited-high/low.mp3；严禁把包内keep切片拼回去充当Eleven生成的完整曲。

7. 按块回读保留语义与桥段接缝
核对实际返回的0—10秒、10—16秒、16—24秒顺序与时长，听两侧旋律和10/16秒接缝。官方引用块语义是插入原音；导出重编码仍可能使整文件SHA变化，因此记录对齐/编码差异，不把整MP3哈希不同直接当旋律被改。

验收：桥段之外变动有记录，不把模型输出当sample级保留

执行边界：未运行目标云端AI、账号核验或付费生成；原生作者材料与官方示例不充当目标结果。见asset-identity.json。

官方依据：
https://elevenlabs.io/music
