Commit Graph

54 Commits

Author SHA1 Message Date
liwenhao2 2725c62b14 切后命名方案三(用户拍板):名字不诞生于开火,只诞生于切后纯净窗:
- 开火(FASTROLL/ONSET)不再发号发注册——只切行,grayLinePending 灰行先开(未识别);switchSerial/switchPrevActive 记录本切次
- deferredNaming(T+1.5~3.5s,取切后尾1.5s纯净素材,补喂机制保证全为新说法人声音):强匹配开火前主≥0.5→撤销误切;匹配已知人→上其名;确认无人(<0.42)→发新号双空间注册(素材干净永不产幽灵);灰色带→留灰由判定链收编
- adoptSwitchLabel(灰行就地冠名/未建行走预置);undoSwitch(重开抹迹/改签并回);serial 每次落地后自增防双发
- 根治病史:16:21 S6潮(单人在2.5min被8连发开火发出S7~S21七个幽灵,源自开火窗混合素材);新日志锚 NAMING-UNDO/ADOPT/NEW/WEAK
2026-09-16 16:43:54 +08:00
liwenhao2 31762d4627 主动撤销加强度门槛(实锤:短插嘴混合窗复核0.5~0.6弱匹配误撤了sim=0.04的真实异常):复核改用 nearestRank 名字级分数,CANCEL 需 score≥0.68(同人确认实测0.70~1.00安全带)且为当前人;弱匹配走 WEAK-SAME 留痕让切换立住;三类复核日志全部带分数,下次定罪不再靠猜 2026-09-16 16:17:38 +08:00
liwenhao2 898c5969e3 主动善后(用户反馈'善后不理想'):准确复核认出同人即撤销,不再被动等句子结束(长句错标挂几十秒):
- SpeakerRegistry.removeAuto(占位号清理)
- accurateRecheckAfterSwitch 的 CANCEL-LATE 分支→主线程 revertOnsetSwitch
- revert 两形态:占位行未建立(多数)→抹迹(预置作废/重开旧底行/防在途定格补封,零断行零闪烁);已建立→就地改签+并回+换色
- 仅当在途/落地切换仍指向该占位号时撤销,连环切换交被动链
2026-09-16 16:08:33 +08:00
liwenhao2 d004345ec3 快速通道终定2s窗(用户第三次拍板C:最快档+接受闪烁+并回兜底):fastWin=32000/fastMin=24000回退;1s周期/连击2/注册表复用/销案/冷却/并回自愈全保留;窗长演化与调参阶梯写入注释留档 2026-09-16 15:58:02 +08:00
liwenhao2 452bfc53bc 快速通道定案3s窗(用户选A):fastWin=48000/fastMin=32000(≥2s);窗长演化留档(2s版三度误切风暴后弃);1s周期/0.32/连击2/注册表复用/并回自愈保留;如有零星误切先抬阈值0.36 2026-09-16 15:52:12 +08:00
liwenhao2 88b5e9279c 2秒快速通道加连续两窗闸:单窗判决在2s+base模型上分不开换声与噪声(现场5分钟20发/21假号/负余弦-0.02铁证;同时刻4s通道0.85);连续两窗低分才开火——真人换声连窗相关性强(开火2.5~3s仍快于4s通道),孤立垃圾窗被滤;注册表销案/冷却/并回自愈保留 2026-09-16 15:44:41 +08:00
liwenhao2 944deb40ab 按用户决策改回2秒快速通道(明确接受短窗误切率):fastWin=32000/fastMin=24000/fastRollDrop=0.32回归;注册表复用编号、判定链并回自愈、3s冷却三道护持保留;注释留档:v8.1教训与两份现场证据,回4s/抬阈值即唯二旋钮 2026-09-16 15:33:19 +08:00
liwenhao2 7ade8283c7 快速通道修正(踩了v8.1短窗雷:2s窗+base模型同人相似度0.05~0.7狂震,90秒7次误切S2-S7):判定窗改回4s(与主通道同源)、周期1s保留(唯一提速来源)、阈值回0.35;占号前先查注册表——认出当前人销案/认出别人复用编号/陌生才发新号 2026-09-16 15:26:58 +08:00
liwenhao2 70acc03ce4 乐观快切(用户拍板:第一次识别先切、出错由并回自愈):
- 开口即查去掉'等准确复核'挡切换:fast 偏离即切+占号,复核降级为善后
- 新增快速滚动通道:2s 尾窗/1s 周期,快模型偏离锚点 0.32 即乐观快切(无缝场景检测延迟 3~5s→1.5~2.5s 目标)
- accurateRecheckAfterSwitch 善后:认出当前人→留痕(判定链并回自愈);真新人→补写准确空间防重发号;认出别人→留痕(判定链迁回)
- 冷却/锚点自弃/滞后喂料/标签钉住全套保留;fastRollDrop 为灵敏度钮
2026-09-16 15:22:05 +08:00
liwenhao2 699680a347 无缝强切占号双空间注册:S2双号实锤(05:01 S1只写fast镜像→sid5准确判定认不出→重发S2,同人S1/S2分裂,B的行标签漂移);占号时对同一窗口补算CAM++嵌入写入准确空间,后续判定稳定命中同一编号 2026-09-16 15:09:54 +08:00
liwenhao2 d1441acf69 ONSET-CANCEL 留痕:准确复核撤销切换(同人暂停续说)时输出 fastSim/label,验证复核关工作时可见 2026-09-16 15:03:17 +08:00
liwenhao2 02a27085f4 开口即查升级两级判定:误报实锤(A暂停续说,fast 短窗 simA<0.5 判新人,A续说句变'已识别人2'首句)——一级快锚点相似度(贴近=同人免复核),二级 CAM++ 准确空间复核(注册表认得出且为当前人→撤销切换;认得出别人→切给他;认不出→才当新人占号),占号时双空间镜像写入;ONSET-SWITCH 日志改 fastSim 2026-09-16 15:02:59 +08:00
liwenhao2 b6d4efe3f4 换行标签加固:onOnsetSwitch 落锤即写 lastConfirmedLabel(S1)——预置5s过期曾致新行开在但沿用旧标签,屏幕观感=没换人(S2案预置16s丢弃实锤);此后partial无论多晚到,新行都挂新标 2026-09-16 14:50:14 +08:00
liwenhao2 0fbeb8c893 切点风暴根治:冻结-补喂完成即作废锚点(windowRefEmb/PrevEmb=null+streak清零)——锚点重置原依赖'新人首句partial→开新行',碎片音/静默期无partial时旧锚点让每个噪声窗读深低→连环强切(现场14:35:47-59四连发);SWITCH-SUSPECT 日志补窗能量rms=便于区分真人换声/噪声戳穿底噪门 2026-09-16 14:39:28 +08:00
liwenhao2 97dfa9de17 恒定滞后喂料:换人切点零串行(用户拍板,静音轮替+无缝都治):
- 音频先进 pendingBuf,识别流滞后 feedLagSamples(1.5s)喂入;分析窗口保持实时(判定时机不变)
- 开口即查/SWITCH-FORCE 判定即置 cutRequested:录制线程冻结缓冲→强制断句→补喂冻结音频给新流,旧句在切点干净收尾;旧句已结算则直接补喂开新句;Stop 前补齐缓冲防丢尾
- 效果:静音轮替渗漏1.2s→≈0;无缝插话渗漏2~4s→≈1~2s(受缓冲深度约束);代价=全局实时字幕统一晚约1.5s;日志 ONSET-HOLD/ONSET-FLUSH 对账
2026-09-16 14:32:57 +08:00
liwenhao2 cea9892426 KV污染根治(还9/14的债):JNI 每次 generate 前 llama_memory_clear——翻译慢的主因(每批重建引擎=每次尝试重载E2B 4~6s)就此免除;Kotlin 侧 translateNumbered 改引擎复用(translateEngine ?: ensure),闲置60s卸载不变;纪要流水线多块共享引擎的潜在污染同步消除;.so 已重编部署(strip 4.32MB,6导出符号) 2026-09-16 14:20:43 +08:00
liwenhao2 fe7c696589 翻译单引擎化(用户拍板):E2B 唯一引擎,两级架构下线——translateOne1B+translateFallback 合并为 translateOne(E2B+温度递进重试+全质检+逐字止损),ensureTranslateEngine 改配 E2B(ctx8192/录音4线程/空闲6),tap 模型检查与 toast 改指 E2B;gemma-3-1b 两常量删除;LlmEngine gemma3 模板分支退役(仅剩 gemma4);净+24/-96 2026-09-16 14:07:39 +08:00
liwenhao2 a39a08ae1c MiniCPM5 相关代码整体摘除(用户拍板):useMinicpm5 开关+三派生常量删除(gemma4-e2b 固定);renderMinicpmPrompt 与 minicpm 模板分支删除;think 块剥除(MiniCPM专属防御)删除(<|channel>thought 通用防御保留);prompts.md 适用模型/家族列表/PC复现示例全部改E2B;历史注释保留于退役处 2026-09-16 13:58:55 +08:00
liwenhao2 531b558c72 摘要引擎切回 E2B(用户确认):useMinicpm5=true→false——MiniCPM5 三连空模板回显(9/14 起),E2B 系 9/11 真机验证稳定引擎;翻译兜底跟随同步回 E2B;prompts.md 头部适用模型说明同步 2026-09-16 13:42:46 +08:00
liwenhao2 b14c5486ef 空概括回显探测修复:extractJson收紧空值判null后,旧'parsed!=null'式emptyEcho探测永远进不去(重试提示词误标'不是合法JSON');改原文正则探测{"概括":""},重试用准确措辞'空概括'并附强约束;现场raw(9)=空schema回显(键名正确格式合法,纯EMPTY进EMPTY出) 2026-09-16 13:39:15 +08:00
liwenhao2 caee985dcc 摘要措辞统一(笔记→概括):修复重试提示词/两条异常消息;等 UNPARSABLE 原始输出行定性P1失败(白卷 or 格式) 2026-09-16 13:36:34 +08:00
liwenhao2 98a3098172 摘要简化为单项内容概括(用户拍板:只做概括,概括+无标题要点,无时间戳):
- prompts.md+BULTIN(逐字同步,脚本复刻一致性单测验证四段全MATCH):P1=滚动重写单键schema {概括},400字内,同会议语言;P2=200~400字概括正文+3~6条「・」无标题要点,去标题/表格/出处/元信息
- EMPTY_NOTES/notesEntriesEmpty/KEY_ALIASES(概要总结摘要…→概括)/extractJson必键校验全部换schema;进度阶段名滚动笔记→内容概括(三语strings+映射)
- P2 maxNewTokens 2500→1600;resume双闸:MeetingNotesIO.load(extractJson)已拦旧schema,MainActivity再加含"概括"栅;旧notes.json→自动全量重跑
- 单测更新:goodJson新schema、别名用例、旧schema/空概括拒绝用例、MeetingNotesTest样例与占位符断言
2026-09-16 13:33:16 +08:00
liwenhao2 f77f90e1e9 翻译改直译模式(用户拍板):去掉同轮上下文(≤600字)——触发点不再拼装、两级引擎签名去掉 context、transCtxBlock 删除、重试丢上下文环节随之废除;原先疑虑的'长上下文诱发漂移'变量一并消除;指代/省略句质量代价已知情 2026-09-16 11:44:06 +08:00
liwenhao2 5dc9fdaf74 Revert "翻译兜底引擎与摘要A/B解耦:固定 gemma4-e2b(日语强项+本机已验证),不再寄生 useMinicpm5(纪要方向的开关;MiniCPM5日语未标定、本工程纪要场景日语表现差);新增 fallbackModelDirName/GgufName/ChatTemplate 三常量,translateFallback 改用;摘要管线维持原开关不动"
This reverts commit d18554d731.
2026-09-16 11:40:12 +08:00
liwenhao2 d18554d731 翻译兜底引擎与摘要A/B解耦:固定 gemma4-e2b(日语强项+本机已验证),不再寄生 useMinicpm5(纪要方向的开关;MiniCPM5日语未标定、本工程纪要场景日语表现差);新增 fallbackModelDirName/GgufName/ChatTemplate 三常量,translateFallback 改用;摘要管线维持原开关不动 2026-09-16 11:31:43 +08:00
liwenhao2 9a8391d913 白卷事故诊断:单句路径转储提示词两段长度+首尾(usr.head/tail),排除提示词层脏数据;现场梳理:空raw=两引擎同现+PERFHAL 'Translate to physical failed'+频繁自重启→头号嫌疑转向设备/模型文件层,代码侧翻译路径在好/坏构建间零差异(逐提交核对) 2026-09-16 11:22:47 +08:00
liwenhao2 206037994f 强切换行哑火根治(实机病灶):封行动作被三处早退吞掉——①强切时无进行中句(owner=-1),强制endpoint落进无句分支只有resetBuffer,永无finalize;②finalizeSentence两个早退(sentenceById缺失/重复定格)在封行代码之前。修:封行移至finalizeSentence入口(早退前);无句分支补发closeOnsetLineIfPending;预置标签加5s保鲜期防误挂;修复后链路:强切→封行→新句新行挂S1,日志ONSET-CLOSE/ONSET-LINE可查 2026-09-16 11:05:29 +08:00
liwenhao2 6239f0a37e SWITCH-FORCE 3s 冷却闸:实测强切落地链需1~2s完成,期间下一深低窗再开一枪(双发);冷却期内 suppressed(cooldown) 只记日志不再触发,去噪+防叠发;首次真机开火验证通过(deep-low 0.21 首窗即切+label=S1 防双号命中) 2026-09-16 10:59:39 +08:00
liwenhao2 0b731978ef 翻译预算分配修复+genfail诊断:录音中1B重试预算降到1次(两次尝试~30s),给兜底留出时间窗——现场15s×3吃满45s预算致TAP-FALLBACK skipped=budget;TRANSLATE single/batch empty 诊断日志(原始输出头48字,区分模型白卷与输出被清洗成空) 2026-09-16 10:54:17 +08:00
liwenhao2 290e4b205b Revert "锚点污染根治:深疑窗禁吸收(driftAbsorbMin=0.30)——日志实锤换人过渡期相邻窗2s重叠使simP天然≥0.5,渐变吸收+误断防护两链连环把新人声纹吸收进锚点,simA假性回升0.18→0.71,连续低分永远攒不满,无缝换人零触发;两处修:渐变吸收加simA≥0.30条件,误断防护回拉同理,深疑窗一律计入连击交强切判定;深低0.22一票/浅低两票机制不变"
This reverts commit 2b622b68bd.
2026-09-16 10:37:58 +08:00
liwenhao2 2b622b68bd 锚点污染根治:深疑窗禁吸收(driftAbsorbMin=0.30)——日志实锤换人过渡期相邻窗2s重叠使simP天然≥0.5,渐变吸收+误断防护两链连环把新人声纹吸收进锚点,simA假性回升0.18→0.71,连续低分永远攒不满,无缝换人零触发;两处修:渐变吸收加simA≥0.30条件,误断防护回拉同理,深疑窗一律计入连击交强切判定;深低0.22一票/浅低两票机制不变 2026-09-16 10:34:31 +08:00
liwenhao2 bcf70e40f0 langdrift 日志补尾巴:原 sample 只打前24字,曾造成"译文看着没问题为何被拒"的误导——判错常在中后段(前半译中文尾巴滑回日语);增 tail(尾16字)+len 字段,证据一次到位 2026-09-16 10:25:41 +08:00
liwenhao2 e17f8c0659 兜底内存峰值加固:translateFallback 加载大引擎前先释放 1B 引擎(刚连败无保留价值),瞬时峰值降~0.8GB;现场:langdrift(日语续写式漂移被targetLangOk拒)→兜底加载时刻 App 重启,待用户确认崩否 2026-09-16 10:10:59 +08:00
liwenhao2 a4631a0735 无缝插话提速+切行即挂名:深低分一票强切(deepLowSwitch=0.22,同人实测最低~0.39/异人窗0.14~0.19,安全带中枢),浅低维持两票;SWITCH-FORCE 改走 onOnsetSwitch 落地通道,切行同时经 pendingOnsetLabel 挂已知标签或当场占号(与开口即查共用防双号/封行/时序作废),不再等下一句结算;无缝场景 4~6s→3~4s 且标签即时 2026-09-16 10:07:23 +08:00
liwenhao2 86cea18dcb 开口即查:静音后开口1.2s立即判换人并换行(用户三选:静音后开口/一票制/立即占位编号):
- 录制循环:≥0.6s静音后的开口攒1.2s语音,快模型(base)一次判定——贴当前人(≥0.5)不动;命中注册表其他人→立即换行+已知标签;都不像→当场 nextAutoLabel 占号+fastRegistry注册,不等endpoint
- 落地链:ONSET-SWITCH→onOnsetSwitch(底行有在途句→pendingForceEndpoint强定格+onsetClosePending封行;否则直接封行)→appendNewLine消费pendingOnsetLabel(pendingOnsetLabel=新行标签+lastConfirmedLabel沿用);onsetSeq在换行/会话开始时作废在途判定
- 防双号:postSpeakerVerdict新号分配前先查fastRegistry(0.4),命中则复用开口占号并补全双空间镜像
- 换行延迟4~6s→~1.5s;无缝插话仍由SWITCH-FORCE streak兜底;onsetEnabled开关可A/B关闭
- 老机制全保留:滚动窗口/误断防护/EMA/60s空闲换行蹲;ktlint parse通过
2026-09-16 10:03:13 +08:00
liwenhao2 2bdeee2147 翻译开头 ASCII 残片清理(aby/nope/fewest 族):cleanTrans 加原文对照剥除——开头2~6位小写字母+分隔符+CJK/假名,且该片段不在原文中(原文真词或大写开头如AI/OK不误伤);四处调用点传 src(兜底/单句/编号批/逐段兜底);'aby'与'html>'同族=模型困惑态首词元落训练残片,后续译文健康时旧闸门全放行 2026-09-16 09:46:29 +08:00
liwenhao2 5bbdfa19ed 翻译开头格式残片清理:cleanTrans 新增 transNoisePrefix(围栏符/半截HTML标签/模板词元/html尾巴),与答案标签剥除交替循环直至稳定;现场'html>'=Gemma词表'</html>'尾部BPE词元,困惑态冷启动首词元落残留、后续译文正常全部质检放行导致上屏;剥空→null走重试;TAP-NOISE日志 2026-09-16 09:43:38 +08:00
liwenhao2 0997a21461 点击翻译两级架构+翻译质量治理+插话强切+CAM++声纹主选:
- 自动双语下线(requestTranslate/TransSeg封段二次译/初译批量队列/Start预热全删),改点击定稿句触发:同轮上下文≤600字、句下内联小字斜体、再点收起、精修改原文作废译文缓存;已翻译块淡琥珀背景高亮(收起即消,失败/在途不标)
- 两级翻译:1B主链(genfail/echo温度递进0→0.3→0.7末次丢上下文;langdrift一次即升档;被拒样本逐字相同立即止损)+摘要引擎兜底(临时加载用完release,文学体意译提示词,同套质检)
- 翻译质量:JNI加repeatPenalty(翻译路径1.1/摘要0不变)+种子随温度错位;cleanTrans剥「翻訳:」类标签;译文复读折叠+原文自重复忠实放行(srcHasRepetition);三语闸门sourceLangOk+targetLangOk重音拉丁档;录音中1线程+BACKGROUND+预算45/90s
- 声纹:无缝插话确证(连续低分streak≥2→SWITCH-FORCE强判endpoint,实锤日志:插话场景SUSPECT三次armed三次expired);VERDICT-SCORE校准日志;speakerModels主换CAM++ zh_en(v1.13架构无关换文件即生效,v2/base兜底,fast取末位防错位)
- strings trans_*×6三语;ktlint全量parse通过;libsummarize-llm-jni.so已重编交付(*.so不入库)
2026-09-16 09:36:02 +08:00
liwenhao2 f4501c8812 fixup: 修复补丁脚本把Kotlin换行转义展开成真实换行导致的两处断字符串(langdrift/seg-drift sample日志),编译错误1968:71 2026-09-15 11:24:11 +08:00
liwenhao2 4ce45cb4b9 langdrift取证与调优: MISS日志附被拒译文样本,ja假名阈值4%→2%+至少2假名(治汉字密集合法日语误杀),langdrift重试收敛为1次(0.7高温无益) 2026-09-15 11:21:07 +08:00
liwenhao2 8abad1eb78 漏句最后一里: 重试预算2次温度递进0.3→0.7(跳贪心死路)、MISS日志带attempt、Start预热翻译引擎消除冷加载期开头失败 2026-09-15 11:10:05 +08:00
liwenhao2 c25f40927e 翻译三语锁定: 提示词显式声明只在中/日/英间翻译(非三语输入输出空串),targetLangOk对西里尔/阿拉伯/希伯来/泰/韩等三语外文字零容忍(任何目标语直接拒收→MISS langdrift→重试) 2026-09-15 10:59:36 +08:00
liwenhao2 635a06e1c5 批次跳号与拉丁混入治理: 编号批缺失段逐一直出兜底(每段全新引擎)、拼回整句要求段段齐全(有洞宁缺不残,MISS seg-hole)、targetLangOk对日/中目标加拉丁占比>33%拒绝(拦manque类欧洲语言漂移) 2026-09-15 10:57:01 +08:00
liwenhao2 679b88bec3 语言漂移治理: 长句拆段≤140字段级编号一次生成再拼回(治简→繁→异语中途掉线)、目标语健全检查(ja须假名/zh须简体/en无CJK)、漂移带温度0.3重试一次、提示词注入目标语硬约束、MISS langdrift/seg-drift日志 2026-09-15 10:46:20 +08:00
liwenhao2 902084e175 fixup: 修复上一补丁脚本写坏的两处Kotlin字符串模板(SEG-MISS日志行),kotlinc报错定位 2026-09-15 10:30:02 +08:00
liwenhao2 6f5e004351 漏句治理第二轮: 初译逐句直出(batch=1)消灭JSON格式风险、失败自动重试一次、全链路MISS日志(genfail/empty/echo/seg-*)、isEcho日中方向阈值0.88修复错杀型漏句 2026-09-15 10:25:15 +08:00
liwenhao2 6264403b9e 首句不翻译修复: 单句批改直出模式(不套JSON)、token预算按原文长度动态化(原160/句截断长句致整批静默丢弃)、编号对容错扫描器(截断JSON也能救条目)、段末对未译句兜底补翻 2026-09-15 10:09:12 +08:00
liwenhao2 da45878c54 翻译复读治理: 初译批次4→2、逐条isEcho复读检测(归一化+二元组Jaccard)拒写抄原文、二次翻译同规则、提示词显式禁抄并允许空串 2026-09-15 09:57:08 +08:00
liwenhao2 2e1de4da48 i18n批次: LanguageUtil+en/ja三语资源、阶段总结文档、models大文件与~$临时docx排除入库 2026-09-14 18:31:46 +08:00
liwenhao2 34e9fb3578 出现未识别标签保留字幕bug修复:给兜底,与最相似声纹合并 2026-09-14 18:17:29 +08:00