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 pendingForceEndpoint = false
|
||||
private val forceSwitchStreaks = 2
|
||||
// 强切冷却(仅 speakerCheckHandler 线程访问,无需 volatile)
|
||||
private var lastForceSwitchAtMs = 0L
|
||||
// C(最新者胜):每次投递滚动检测都刷新序号,队列里被超额的旧任务直接跳过
|
||||
@Volatile private var rollingSeq = 0L
|
||||
// 兜底残料:当前句子槽位最近一次滚动窗口声纹。整句判定因碎片算不出
|
||||
|
|
@ -787,6 +789,17 @@ class MainActivity : AppCompatActivity() {
|
|||
rollingLowStreak >= forceSwitchStreaks
|
||||
) {
|
||||
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
|
||||
?: SpeakerRecognition.nextAutoLabel()
|
||||
.also {
|
||||
|
|
@ -814,6 +827,7 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stream.acceptWaveform(samples, sampleRate = sampleRateInHz)
|
||||
while (onlineRecognizer.isReady(stream)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue