SWITCH-FORCE 3s 冷却闸:实测强切落地链需1~2s完成,期间下一深低窗再开一枪(双发);冷却期内 suppressed(cooldown) 只记日志不再触发,去噪+防叠发;首次真机开火验证通过(deep-low 0.21 首窗即切+label=S1 防双号命中)
This commit is contained in:
parent
0b731978ef
commit
6239f0a37e
|
|
@ -230,6 +230,8 @@ class MainActivity : AppCompatActivity() {
|
||||||
@Volatile private var rollingLowStreak = 0
|
@Volatile private var rollingLowStreak = 0
|
||||||
@Volatile private var pendingForceEndpoint = false
|
@Volatile private var pendingForceEndpoint = false
|
||||||
private val forceSwitchStreaks = 2
|
private val forceSwitchStreaks = 2
|
||||||
|
// 强切冷却(仅 speakerCheckHandler 线程访问,无需 volatile)
|
||||||
|
private var lastForceSwitchAtMs = 0L
|
||||||
// C(最新者胜):每次投递滚动检测都刷新序号,队列里被超额的旧任务直接跳过
|
// C(最新者胜):每次投递滚动检测都刷新序号,队列里被超额的旧任务直接跳过
|
||||||
@Volatile private var rollingSeq = 0L
|
@Volatile private var rollingSeq = 0L
|
||||||
// 兜底残料:当前句子槽位最近一次滚动窗口声纹。整句判定因碎片算不出
|
// 兜底残料:当前句子槽位最近一次滚动窗口声纹。整句判定因碎片算不出
|
||||||
|
|
@ -787,6 +789,17 @@ class MainActivity : AppCompatActivity() {
|
||||||
rollingLowStreak >= forceSwitchStreaks
|
rollingLowStreak >= forceSwitchStreaks
|
||||||
) {
|
) {
|
||||||
rollingLowStreak = 0
|
rollingLowStreak = 0
|
||||||
|
// 3s 冷却闸(2026-09-16 实测:
|
||||||
|
// 强切落地链要 1~2s 完成,期间
|
||||||
|
// 下一个深低窗会再开一枪,日志
|
||||||
|
// 双发;功能无害但去噪+防叠发)
|
||||||
|
val nowMs = SystemClock.elapsedRealtime()
|
||||||
|
if (nowMs - lastForceSwitchAtMs < 3_000L) {
|
||||||
|
Log.i(TAG, "SWITCH-FORCE" +
|
||||||
|
" suppressed (cooldown)" +
|
||||||
|
" owner=sid$owner")
|
||||||
|
} else {
|
||||||
|
lastForceSwitchAtMs = nowMs
|
||||||
val label = newLabel
|
val label = newLabel
|
||||||
?: SpeakerRecognition.nextAutoLabel()
|
?: SpeakerRecognition.nextAutoLabel()
|
||||||
.also {
|
.also {
|
||||||
|
|
@ -814,6 +827,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stream.acceptWaveform(samples, sampleRate = sampleRateInHz)
|
stream.acceptWaveform(samples, sampleRate = sampleRateInHz)
|
||||||
while (onlineRecognizer.isReady(stream)) {
|
while (onlineRecognizer.isReady(stream)) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue