apizt实际生成原曲后,task=infill请求虽返回200,却输出34秒整首新版本,未证明原生局部替换。本例保留这个负例,再从真实新版本截取目标句,在18.8—23.3秒范围内做本地交叉淡化替换;读回验证区间外PCM逐样本一致,合成结果可下载。
本次操作
- 先生成可核验原曲:原创四句歌词通过Suno API生成,保存clip_id与真实39.48秒音频。
- 定位目标句:本地faster-whisper时间戳把 Follow the river... 定位约19.14—22.88秒;唱词识别只是辅助,边界需试听。
- 显式提交局部改词:只把目标句改为 Follow the rhythm, follow the glow,保存task=infill和18.8—23.3秒参数;未知提交不自动重复。
- 对照新旧音频:新版本的目标句约9.10—13.54秒。用replace_region.py将其适配到原曲18.8—23.3秒,80ms淡化只发生在区间内;回读WAV验证前后样本完全一致。新旧唱法与和声不同,接点仍需试听。
结果与限制
- 原曲39.48秒,所谓infill输出34秒,不能当作原生Replace Section成功。
- 实际本地合成保存原样本总数;beforeRegionIdentical、afterRegionIdentical和replacementChanged均为true。
- 机器识别确认新版本含 follow the rhythm, follow the glow;这不是完美重唱或自然接缝的承诺。
- 该API请求未证明原生局部重唱;本地替换是可验证边界的替代方法,需要回听音色、和声与接点。
original-song
output-0.m4a
local-asr.json
{
"model": "Systran/faster-whisper-tiny.en",
"compute_type": "int8",
"segments": [
{
"start": 9.040000000000003,
"end": 27.38,
"text": " Paper boats, beneath the morning light, carry little wishes, out of sight, follow the river, follow the sun, every small journey has only begun.",
"words": [
{
"word": " Paper",
"start": 9.040000000000003,
"end": 10.32,
"probability": 0.45112043619155884
},
{
"word": " boats,",
"start": 10.32,
"end": 11.1,
"probability": 0.8584479093551636
},
{
"word": " beneath",
"start": 11.26,
"end": 11.66,
"probability": 0.3926292061805725
},
{
"word": " the",
"start": 11.66,
"end": 12.22,
"probability": 0.9863494038581848
},
{
"word": " morning",
"start": 12.22,
"end": 12.52,
"probability": 0.9894046783447266
},
{
"word": " light,",
"start": 12.52,
"end": 13.9,
"probability": 0.9728455543518066
},
{
"word": " carry",
"start": 14.54,
"end": 14.82,
"probability": 0.8510782718658447
},
{
"word": " little",
"start": 14.82,
"end": 15.32,
"probability": 0.9697515368461609
},
{
"word": " wishes,",
"start": 15.32,
"end": 16.48,
"probability": 0.9747663140296936
},
{
"word": " out",
"start": 16.9,
"end": 17.08,
"probability": 0.8660765886306763
},
{
"word": " of",
"start": 17.08,
"end": 17.48,
"probability": 0.9186293482780457
},
{
"word": " sight,",
"start": 17.48,
"end": 18.44,
"probability": 0.9979700446128845
},
{
"word": " follow",
"start": 19.14,
"end": 19.4,
"probability": 0.7993620038032532
},
{
"word": " the",
"start": 19.4,
"end": 19.9,
"probability": 0.9949472546577454
},
{
"word": " river,",
"start": 19.9,
"end": 20.74,
"probability": 0.9987824559211731
},
{
"word": " follow",
"start": 21.44,
"end": 21.64,
"probability": 0.9908865690231323
},
{
"word": " the",
"start": 21.64,
"end": 22.1,
"probability": 0.9672913551330566
},
{
"word": " sun,",
"start": 22.1,
"end": 22.88,
"probability": 0.9738621711730957
},
{
"word": " every",
"start": 23.68,
"end": 23.98,
"probability": 0.9364639520645142
},
{
"word": " small",
"start": 23.98,
"end": 24.62,
"probability": 0.9925784468650818
},
{
"word": " journey",
"start": 24.62,
"end": 25.1,
"probability": 0.9965968728065491
},
{
"word": " has",
"start": 25.1,
"end": 25.86,
"probability": 0.9738849997520447
},
{
"word": " only",
"start": 25.86,
"end": 26.64,
"probability": 0.9977881908416748
},
{
"word": " begun.",
"start": 26.64,
"end": 27.38,
"probability": 0.5110749006271362
}
]
}
],
"note": "Machine recognition of singing; verify by listening, not ground truth"
}infill-request
output-0.m4a
local-asr.json
{
"model": "Systran/faster-whisper-tiny.en",
"compute_type": "int8",
"segments": [
{
"start": 0.0,
"end": 4.18,
"text": " Vapor boats beneath the morning light",
"words": [
{
"word": " Vapor",
"start": 0.0,
"end": 0.64,
"probability": 0.38519489765167236
},
{
"word": " boats",
"start": 0.64,
"end": 1.4,
"probability": 0.8234111070632935
},
{
"word": " beneath",
"start": 1.4,
"end": 1.98,
"probability": 0.7407523989677429
},
{
"word": " the",
"start": 1.98,
"end": 2.6,
"probability": 0.8999857902526855
},
{
"word": " morning",
"start": 2.6,
"end": 2.84,
"probability": 0.9893536567687988
},
{
"word": " light",
"start": 2.84,
"end": 4.18,
"probability": 0.9489414095878601
}
]
},
{
"start": 4.18,
"end": 9.1,
"text": " carry little wishes out of sight",
"words": [
{
"word": " carry",
"start": 4.18,
"end": 5.06,
"probability": 0.4905518889427185
},
{
"word": " little",
"start": 5.06,
"end": 5.62,
"probability": 0.9765398502349854
},
{
"word": " wishes",
"start": 5.62,
"end": 6.8,
"probability": 0.92085200548172
},
{
"word": " out",
"start": 6.8,
"end": 7.36,
"probability": 0.9320858716964722
},
{
"word": " of",
"start": 7.36,
"end": 7.84,
"probability": 0.9888263940811157
},
{
"word": " sight",
"start": 7.84,
"end": 9.1,
"probability": 0.998665452003479
}
]
},
{
"start": 9.1,
"end": 11.06,
"text": " follow the rhythm",
"words": [
{
"word": " follow",
"start": 9.1,
"end": 9.58,
"probability": 0.30821913480758667
},
{
"word": " the",
"start": 9.58,
"end": 10.32,
"probability": 0.992391049861908
},
{
"word": " rhythm",
"start": 10.32,
"end": 11.06,
"probability": 0.9933744072914124
}
]
},
{
"start": 11.06,
"end": 13.54,
"text": " follow the glow",
"words": [
{
"word": " follow",
"start": 11.06,
"end": 11.86,
"probability": 0.9359017610549927
},
{
"word": " the",
"start": 11.86,
"end": 12.36,
"probability": 0.9988616704940796
},
{
"word": " glow",
"start": 12.36,
"end": 13.54,
"probability": 0.34942826628685
}
]
},
{
"start": 13.54,
"end": 16.66,
"text": " every small journey",
"words": [
{
"word": " every",
"start": 13.54,
"end": 14.4,
"probability": 0.7914556860923767
},
{
"word": " small",
"start": 14.4,
"end": 15.02,
"probability": 0.9807630777359009
},
{
"word": " journey",
"start": 15.02,
"end": 16.66,
"probability": 0.9972840547561646
}
]
},
{
"start": 16.66,
"end": 19.58,
"text": " has only begun",
"words": [
{
"word": " has",
"start": 16.66,
"end": 17.62,
"probability": 0.9664663672447205
},
{
"word": " only",
"start": 17.62,
"end": 18.46,
"probability": 0.9988546371459961
},
{
"word": " begun",
"start": 18.46,
"end": 19.58,
"probability": 0.9609155058860779
}
]
}
],
"note": "Machine recognition of singing; verify by listening, not ground truth"
}local-replace
region-replaced.wav
replacement-phrase.wav
validation.json
{
"method": "Actual apizt Suno original + revised full song; local bounded crossfade replacement",
"nativeInfillVerified": false,
"reason": "task=infill returned a new 34-second whole-song version versus original39.48s; 200 did not prove region preservation",
"regionSeconds": [
18.8,
23.3
],
"revisedPhraseSeconds": [
9.1,
13.54
],
"sampleRate": 48000,
"originalFrames": 1895688,
"resultFrames": 1895688,
"beforeRegionIdentical": true,
"afterRegionIdentical": true,
"replacementChanged": true,
"outputSha256": "95c319934bc2f58012b5755a9eca427025cdfa8b9083386af527140809a7de59",
"qualityLimit": "Phrase is from a different generated rendition. Timbre, harmony and joins need listening; not seamless AI re-singing or native Suno Replace Section."
}