锚点污染根治:深疑窗禁吸收(driftAbsorbMin=0.30)——日志实锤换人过渡期相邻窗2s重叠使simP天然≥0.5,渐变吸收+误断防护两链连环把新人声纹吸收进锚点,simA假性回升0.18→0.71,连续低分永远攒不满,无缝换人零触发;两处修:渐变吸收加simA≥0.30条件,误断防护回拉同理,深疑窗一律计入连击交强切判定;深低0.22一票/浅低两票机制不变
This commit is contained in:
parent
bcf70e40f0
commit
2b622b68bd
|
|
@ -193,6 +193,10 @@ class MainActivity : AppCompatActivity() {
|
||||||
// 0.14~0.19,0.22 取安全带中枢——深低首票即切(无缝插话 4~6s→3~4s);
|
// 0.14~0.19,0.22 取安全带中枢——深低首票即切(无缝插话 4~6s→3~4s);
|
||||||
// 0.22~0.35 浅低维持连续两票,毛刺照旧被误断防护拦下
|
// 0.22~0.35 浅低维持连续两票,毛刺照旧被误断防护拦下
|
||||||
private val deepLowSwitch = 0.22f
|
private val deepLowSwitch = 0.22f
|
||||||
|
// 深疑吸收闸(2026-09-16 日志实锤):与锚点相似度低于此的窗禁止一切吸收/
|
||||||
|
// 回拉(渐变吸收与误断防护两条链都曾在换人过渡期污染锚点,致 simA 假性
|
||||||
|
// 回升、连续低分永远攒不满——无缝换人零触发的根因)
|
||||||
|
private val driftAbsorbMin = 0.30f
|
||||||
// 最近邻兜底(P1 收紧,2026-09-11):精确匹配不中→top≥0.42 且领先第二名
|
// 最近邻兜底(P1 收紧,2026-09-11):精确匹配不中→top≥0.42 且领先第二名
|
||||||
// ≥0.06 才归入最相似身份;模糊判新人(修"错并到别人行")
|
// ≥0.06 才归入最相似身份;模糊判新人(修"错并到别人行")
|
||||||
private val verdictFallbackMin = 0.42f
|
private val verdictFallbackMin = 0.42f
|
||||||
|
|
@ -740,9 +744,14 @@ class MainActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
windowPrevEmb = emb
|
windowPrevEmb = emb
|
||||||
rollingLowHits = 0
|
rollingLowHits = 0
|
||||||
} else if (simP >= emaAbsorbMin) {
|
} else if (simP >= emaAbsorbMin && simA >= driftAbsorbMin) {
|
||||||
// 只偏离锚点、紧贴上一窗 → 音量/情绪渐变,
|
// 只偏离锚点、紧贴上一窗 → 音量/情绪渐变,
|
||||||
// 更新双参考,不换行
|
// 更新双参考,不换行。
|
||||||
|
// 深疑窗(与锚点 <0.30)除外:实测换人过渡期
|
||||||
|
// 相邻窗 2s 重叠使 simP 天然 0.5~0.75,吸收会
|
||||||
|
// 连环污染锚点致 simA 假性回升、连击永远攒
|
||||||
|
// 不满(无缝换人零触发的根因)——深疑窗一律
|
||||||
|
// 计入连击,不许碰锚点
|
||||||
rollingLowStreak = 0
|
rollingLowStreak = 0
|
||||||
windowRefEmb = blendEmb(anchor, emb)
|
windowRefEmb = blendEmb(anchor, emb)
|
||||||
windowPrevEmb = emb
|
windowPrevEmb = emb
|
||||||
|
|
@ -755,11 +764,14 @@ class MainActivity : AppCompatActivity() {
|
||||||
val newLabel = rollingSpeakerSearch(emb)
|
val newLabel = rollingSpeakerSearch(emb)
|
||||||
val active = activeLabelForWindow
|
val active = activeLabelForWindow
|
||||||
when {
|
when {
|
||||||
// 误断防护:查出来就是当前人 →
|
// 误断防护:查出来就是当前人 → 毛刺,不断行,参考回拉。
|
||||||
// 毛刺,不断行,参考回拉
|
// 深疑窗(<0.30)例外:与锚点深
|
||||||
|
// 不符时以 simA 为准、不许回拉污
|
||||||
|
// 染,落入连击路径交给强切判定
|
||||||
newLabel != null &&
|
newLabel != null &&
|
||||||
active != null &&
|
active != null &&
|
||||||
newLabel == active -> {
|
newLabel == active &&
|
||||||
|
simA >= driftAbsorbMin -> {
|
||||||
windowRefEmb = blendEmb(anchor, emb)
|
windowRefEmb = blendEmb(anchor, emb)
|
||||||
rollingLowStreak = 0
|
rollingLowStreak = 0
|
||||||
windowPrevEmb = emb
|
windowPrevEmb = emb
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue