主动撤销加强度门槛(实锤:短插嘴混合窗复核0.5~0.6弱匹配误撤了sim=0.04的真实异常):复核改用 nearestRank 名字级分数,CANCEL 需 score≥0.68(同人确认实测0.70~1.00安全带)且为当前人;弱匹配走 WEAK-SAME 留痕让切换立住;三类复核日志全部带分数,下次定罪不再靠猜
This commit is contained in:
parent
898c5969e3
commit
31762d4627
|
|
@ -221,6 +221,10 @@ class MainActivity : AppCompatActivity() {
|
||||||
private val onsetMinSamples = 19200 // 1.2s 开口窗
|
private val onsetMinSamples = 19200 // 1.2s 开口窗
|
||||||
// 喂料恒定滞后(2026-09-16):识别流滞后 1.2s 喂入,切点前的音频可改道;
|
// 喂料恒定滞后(2026-09-16):识别流滞后 1.2s 喂入,切点前的音频可改道;
|
||||||
// 全局字幕延迟 ~1.2s 的代价换取换人零串行
|
// 全局字幕延迟 ~1.2s 的代价换取换人零串行
|
||||||
|
// 主动撤销的强度门槛(2026-09-16 实锤:短插嘴混合窗复核出 0.5~0.6 弱匹配,
|
||||||
|
// 二元"认得出"误撤了 0.04 深低的真实异常;同人确认分实测 0.70~1.00,
|
||||||
|
// 0.68 取安全带) —— 复核低于此分只留痕不撤销,让切换立住
|
||||||
|
private val revertCancelMin = 0.68f
|
||||||
// 快速滚动通道(2026-09-16 用户三次拍板后终定 C:维持 2s 窗——最快档,
|
// 快速滚动通道(2026-09-16 用户三次拍板后终定 C:维持 2s 窗——最快档,
|
||||||
// 接受误切闪烁,由并回自愈兜底)。窗长演化留档:2s(风暴,单窗20发/5min)
|
// 接受误切闪烁,由并回自愈兜底)。窗长演化留档:2s(风暴,单窗20发/5min)
|
||||||
// →3s(折中)→ 终选回 2s;护持:连续两窗/注册表复用/销案/冷却/并回自愈。
|
// →3s(折中)→ 终选回 2s;护持:连续两窗/注册表复用/销案/冷却/并回自愈。
|
||||||
|
|
@ -1819,16 +1823,26 @@ class MainActivity : AppCompatActivity() {
|
||||||
) {
|
) {
|
||||||
val acc = SpeakerRecognition.computeEmbedding(samples, sampleRateInHz)
|
val acc = SpeakerRecognition.computeEmbedding(samples, sampleRateInHz)
|
||||||
?: return
|
?: return
|
||||||
val pre = SpeakerRecognition.registry.search(acc, speakerThreshold)
|
val r = SpeakerRecognition.registry.nearestRank(acc)
|
||||||
?: nearestAttribution(acc, SpeakerRecognition.registry, verdictFallbackMin)
|
val pre = r.name
|
||||||
|
val score = r.score
|
||||||
when {
|
when {
|
||||||
pre != null && pre == active -> {
|
pre != null && pre == active && score >= revertCancelMin -> {
|
||||||
Log.i(TAG, tag + "-CANCEL-LATE known=$pre(active) active-heal")
|
Log.i(TAG, tag + "-CANCEL-LATE known=$pre(active)" +
|
||||||
|
" score=" + "%.2f".format(score) + " active-heal")
|
||||||
// 主动善后:不再被动等句子结束(长句让错标挂几十秒),立即撤销
|
// 主动善后:不再被动等句子结束(长句让错标挂几十秒),立即撤销
|
||||||
uiHandler.post { revertOnsetSwitch(label, pre) }
|
uiHandler.post { revertOnsetSwitch(label, pre) }
|
||||||
}
|
}
|
||||||
|
pre != null && pre == active -> {
|
||||||
|
// 弱匹配(短插嘴混合窗常见 0.5~0.6):不撤销,让切换立住
|
||||||
|
Log.i(TAG, tag + "-WEAK-SAME known=$pre" +
|
||||||
|
" score=" + "%.2f".format(score) +
|
||||||
|
" < $revertCancelMin keep-switch")
|
||||||
|
}
|
||||||
pre != null ->
|
pre != null ->
|
||||||
Log.i(TAG, tag + "-RECHECK known=$pre label=$label (verdict migrates)")
|
Log.i(TAG, tag + "-RECHECK known=$pre" +
|
||||||
|
" score=" + "%.2f".format(score) +
|
||||||
|
" label=$label (verdict migrates)")
|
||||||
else -> SpeakerRecognition.registry.addAuto(label, acc)
|
else -> SpeakerRecognition.registry.addAuto(label, acc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue