凌晨两点,陆时的书房里只有屏幕的蓝光。
他盯着面前的数据曲线,眉头皱得很紧。
这不是他第一次通宵,但这一次,感觉格外漫长。
沈听的声音从他背后传来:“几点了?”
两点半。陆时没有回头,“你怎么醒了?”
睡不着。沈听披着外套走进来,看见他屏幕上的数据,“这是——”
回声系统的误判率统计。陆时点开一张曲线图,“我模拟了一千个亲属紧急场景的电话样本,发现了一个问题。”
沈听凑近看。
“什么问题?”
在’家属紧急转账’这个场景下,回声的误判率是0.3%。陆时说,“一千个样本里,有三个被判定为’真实声纹’——但实际上是克隆音。”
沈听的眉头皱起来。
“哪三个?”
第一个,子女用父母声音向兄弟姐妹借钱。陆时点开样本,“第二个,配偶用对方声音向家人报平安。第三个——”
他顿了顿。
“第三个,侄女用姑姑声音向姑父求救。”
沈听沉默了。
这三个场景有一个共同特点。陆时说,“都是’紧急+亲属’的双重语境。回声系统在判断的时候,会自动提高亲属声纹的通过权重——因为在紧急情况下,声音可能会变形,语速会加快,呼吸会急促。”
“所以它容许了更大的误差。”
陆时说,“言钊就是看中了这一点。他知道回声系统在亲属紧急场景下有容错率,所以他的换声诈骗,专门挑’紧急亲属’这个组合。”
沈听在他旁边坐下,看着屏幕。
“0.3%听起来很低。”
但放在全市的人口基数上,就是几万人的风险。陆时说,“何况0.3%是实验室数据。真实环境中,噪音、情绪、设备差异——任何一个变量都可能把这个数字拉高。”
他揉了揉眉心。
“我必须把漏洞补上。”
“怎么补?”
三个方向。陆时在白板上画了一个框架,“第一,提高亲属声纹的比对阈值,从0.92提到0.95。第二,在’紧急场景’判断时,增加一个’延时确认’机制——检测到紧急关键词后,先暂停三秒,再做最终判定。第三,把亲属关系链做交叉验证——一个人向多个亲属借钱,每个人的声纹都要比对。”
沈听听完,沉默了几秒。
“第二点和第三点,会影响用户体验。”
我知道。陆时点头,“延时确认会让紧急求助的人多等三秒。交叉验证会让多向转账变复杂。”
“你怎么选?”
陆时看着她。
安全优先。他说,“用户体验可以优化,但漏洞不能留。”
沈听看着他,忽然笑了。
你这个人,她说,“和你的代码一样,固执。”
“谢谢夸奖。”
“不是夸奖。”
“那就是批评。”
“……陆时。”
“嗯?”
“闭嘴,写代码。”
陆时笑了笑,转身继续敲键盘。
凌晨四点,书房的灯还亮着。
沈听在旁边看了一会儿,发现自己帮不上太多忙——这不是她的技术领域,她擅长的是声纹分析,不是系统架构。
于是她换了一种方式。
她站起来,去厨房煮了两碗面。
陆时敲代码敲到一半,发现一碗热气腾腾的面出现在键盘旁边。
“吃。”
“还没写完——”
吃完再写。沈听在他旁边坐下,端着自己的碗,“你刚才说的第二个方向,‘延时确认’,我有个想法。”
陆时停下筷子:“说。”
延时三秒太机械了。沈听说,“可以根据紧急程度动态调整——普通紧急,延时一秒;重度紧急,延时三秒;涉及大额转账,强制视频验证。”
陆时的眼睛亮了一下。
“动态阈值。”
沈听说,“我把紧急程度分成三级:一级是’有人受伤’、‘在医院’;二级是’被拘留’、‘要汇款’;三级是’涉及万元以上’。不同级别,用不同的处理流程。”