按用户决策改回2秒快速通道(明确接受短窗误切率):fastWin=32000/fastMin=24000/fastRollDrop=0.32回归;注册表复用编号、判定链并回自愈、3s冷却三道护持保留;注释留档:v8.1教训与两份现场证据,回4s/抬阈值即唯二旋钮

This commit is contained in:
liwenhao2 2026-09-16 15:33:19 +08:00
parent 7ade8283c7
commit 944deb40ab
1 changed files with 10 additions and 7 deletions

View File

@ -221,14 +221,17 @@ class MainActivity : AppCompatActivity() {
private val onsetMinSamples = 19200 // 1.2s 开口窗
// 喂料恒定滞后(2026-09-16):识别流滞后 1.2s 喂入,切点前的音频可改道;
// 全局字幕延迟 ~1.2s 的代价换取换人零串行
// 快速滚动通道(2026-09-16 用户拍板乐观快切):4s 窗(与主通道同源
// 同尺寸——base 模型短窗(≤2s)同人相似度 0.05~0.7 狂震是 v8.1
// 换人风暴的根因,勿再踩)/1s 周期(唯一提速来源)/0.35 与主通道同款;
// 占号前先查注册表复用编号;准确复核只善后,切错由判定链并回自愈
// 快速滚动通道(2026-09-16 用户拍板乐观快切,并明确选回 2s 窗):
// 2s 尾窗/1s 周期/0.32 即切——检测最快(B 开口 1~2s 内可见),代价是
// base 模型短窗同人相似度狂震(v8.1 案、现场 90s 7 次误切)会带来
// 较高误切率;护持有三道:占号前查注册表复用编号、判定链并回自愈、
// 3s 冷却。若误切闪烁不可接受,唯二旋钮:fastWinSamples 提回 4s 或
// fastRollDrop 抬高
private val fastRollEnabled = true
private val fastRollDrop = 0.32f // 2s 窗专用阈值(用户选回)
private val fastStepSamples = 16000 // 1s
private val fastWinSamples = 64000 // 4s 窗(全窗)
private val fastMinSamples = 48000 // ≥3s 才判(同 judgeMinSamples)
private val fastWinSamples = 32000 // 2s 尾窗
private val fastMinSamples = 24000 // ≥1.5s 才判
private val feedLagSamples = 24000 // 1.5s:覆盖判定链(1.2s采集+计算)的
// 余量,开口渗漏≈0;全局字幕延迟即此值,调参范围 1.2~1.5s
@Volatile private var onsetSeq = 0L // 行切换/会话开始作废在途开口判定
@ -745,7 +748,7 @@ class MainActivity : AppCompatActivity() {
tailF, sampleRateInHz) ?: return@post
if (rseq != onsetSeq) return@post
val sim = SpeakerRecognition.similarity(emb, anchor)
if (sim >= speakerSwitchDrop) return@post
if (sim >= fastRollDrop) return@post
val active = activeLabelForWindow
// 先查注册表:认出当前人 → 销案(白捡的防护);
// 认出别人 → 复用其编号;彻底陌生才发新号