凌晨两点,陆时的书房里只有屏幕的蓝光。地址发布邮箱 ltxsbǎ@GMAIL.COM
他盯着面前的数据曲线,眉头皱得很紧。
这不是他第一次通宵,但这一次,感觉格外漫长。
沈听的声音从他背后传来:“几点了?”
两点半。陆时没有回头,“你怎么醒了?”
睡不着。沈听披着外套走进来,看见他屏幕上的数据,“这是——”
回声系统的误判率统计。陆时点开一张曲线图,“我模拟了一千个亲属紧急场景的电话样本,发现了一个问题。”
沈听凑近看。
“什么问题?”
在’家属紧急转账’这个场景下,回声的误判率是0.3%。陆时说,“一千个样本里,有三个被判定为’真实声纹’——但实际上是克隆音。”
沈听的眉头皱起来。
“哪三个?”
第一个,子女用父母声音向兄弟姐妹借钱。陆时点开样本,“第二个,配偶用对方声音向家人报平安。第三个——”
他顿了顿。
“第三个,侄女用姑姑声音向姑父求救。”
沈听沉默了。
这三个场景有一个共同特点。陆时说,“都是’紧急+亲属’的双重语境。回声系统在判断的时候,会自动提高亲属声纹的通过权重——因为在紧急情况下,声音可能会变形,语速会加快,呼吸会急促。”
“所以它容许了更大的误差。”
陆时说,“言钊就是看中了这一点。他知道回声系统在亲属紧急场景下有容错率,所以他的换声诈骗,专门挑’紧急亲属’这个组合。”
沈听在他旁边坐下,看着屏幕。
“0.3%听起来很低。”
但放在全市的人口基数上,就是几万人的风险。陆时说,“何况0.3%是实验室数据。真实环境中,噪音、情绪、设备差异——任何一个变量都可能把这个数字拉高。”
他揉了揉眉心。
“我必须把漏洞补上。”
“怎么补?”
三个方向。陆时在白板上画了一个框架,“第一,提高亲属声纹的比对阈值,从0.92提到0.95。第二,在’紧急场景’判断时,增加一个’延时确认’机制——检测到紧急关键词后,先暂停三秒,再做最终判定。第三,把亲属关系链做交叉验证——一个人向多个亲属借钱,每个人的声纹都要比对。发^.^新^.^地^.^址 wWwLtXSFb…℃〇M”
沈听听完,沉默了几秒。
“第二点和第三点,会影响用户体验。”
我知道。陆时点头,“延时确认会让紧急求助的人多等三秒。交叉验证会让多向转账变复杂。”
“你怎么选?”
陆时看着她。
安全优先。他说,“用户体验可以优化,但漏洞不能留。”
沈听看着他,忽然笑了。
你这个人,她说,“和你的代码一样,固执。”
“谢谢夸奖。”
“不是夸奖。”
“那就是批评。”
“……陆时。”
“嗯?”
“闭嘴,写代码。”
陆时笑了笑,转身继续敲键盘。
凌晨四点,书房的灯还亮着。
沈听在旁边看了一会儿,发现自己帮不上太多忙——这不是她的技术领域,她擅长的是声纹分析,不是系统架构。
于是她换了一种方式。
她站起来,去厨房煮了两碗面。
陆时敲代码敲到一半,发现一碗热气腾腾的面出现在键盘旁边。
“吃。”
“还没写完——”
吃完再写。沈听在他旁边坐下,端着自己的碗,“你刚才说的第二个方向,‘延时确认’,我有个想法。”
陆时停下筷子:“说。”
延时三秒太机械了。沈听说,“可以根据紧急程度动态调整——普通紧急,延时一秒;重度紧急,延时三秒;涉及大额转账,强制视频验证。”
陆时的眼睛亮了一下。
“动态阈值。”
沈听说,“我把紧急程度分成三级:一级是’有人受伤’、‘在医院’;二级是’被拘留’、‘要汇款’;三级是’涉及万元以上’。不同级别,用不同的处理流程。”
陆时快速在脑子里过了一遍逻辑。
可行。他说,“但需要调整比对算法,不然实现不了。”
“那你能实现吗?”
陆时敲了两行代码,“但需要测试。一千个样本不够,我得跑一万个。”
“那要多久?”
看机器性能。陆时说,“快的三小时,慢的五小时。”
沈听把面吃完,站起来把碗收了。
“你继续写,我去睡觉。”
“嗯。”
陆时继续敲代码。沈听走到门口,忽然回过头。
“陆时。”
“嗯?”
“你什么时候睡?”
“写完就睡。”
“那是几点?”
“……不知道。”
沈听沉默了两秒。
“我陪你。”
陆时的手指顿了一下。
“你不是说去睡觉吗?”
改变主意了。沈听走回来,在他旁边的椅子上坐下,“你通宵,我陪通宵。”
“不用——”
闭嘴。沈听把他的咖啡杯抢过来,“你喝这个,我给你倒杯热水。”
陆时看着她,欲言又止。
最后他什么都没说,低头继续敲代码。
凌晨六点,天已经微微亮了。
陆时写完最后一段代码,揉了揉眼睛,发现沈听靠在椅背上睡着了。
她穿着他的外套,袖子太长,只露出半截手指。头歪着,靠在肩膀上,呼吸很轻很稳。
陆时看着她的睡颜,忽然不想动了。
他把手边的毯子拿过来,轻轻披在她身上。
沈听。他轻声叫了一声。
她没醒,只是皱了皱眉,往毯子里缩了缩。
陆时笑了笑,把椅子轻轻挪了挪,让她靠得更舒服一些。
然后他坐在旁边,看着窗外的天光一点一点亮起来。
六点半的时候,沈听醒了。
几点了?她的声音还带着困意。
“六点半。”
“代码呢?”
写完了,正在跑测试。陆时指了指屏幕,“一万个样本,大概还要一个小时。”
沈听揉了揉眼睛,发现自己身上多了一件毯子。
“你给我盖的?”
“嗯。”
“你自己呢?”
“我不冷。”
“陆时,你通宵了。”
“我知道。”
“你应该睡一会儿。”
“等测试跑完。”
沈听看着他,忽然伸手,把他拉到身边。
“那我也陪你等。”
陆时被她拉着,在旁边的椅子上坐下。两人并肩坐着,看着屏幕上的进度条慢慢往前爬。
“陆时。”
“嗯?”
“你以后通宵,叫我。”
“为什么?”
因为我想陪你。沈听说,“你一个人熬夜,我睡不着。”
陆时转头看她。
晨光从窗帘缝隙里漏进来,落在她脸上。她的眼睛还有点肿,头发有点乱,但眼神很认真。
他说。
“真的?”
“真的。”
沈听的嘴角弯了弯。
那我们以后——她顿了顿,“以后有这种事,一起熬夜。”
“一起?”
沈听说,“你写代码,我看资料。你累了,我给你倒水。你困了,我陪你说话。”
陆时看着她,忽然笑了。
“沈听,你知道这意味着什么吗?”
“意味着什么?”
意味着以后我熬夜,你也得熬夜。陆时说,“你会老得很快。”
沈听瞪他一眼。
那我不管。她说,“反正你熬夜,我就熬夜。”
“那如果有一天我不在呢?”
你不在?沈听的眉头皱起来,“你去哪?”
“随便问问。”
没有随便问问。沈听的语气忽然认真起来,“陆时,你不准不在。”
陆时愣了一下。
你听到没有?沈听转过身,看着他的眼睛,“你不准不在。不管发生什么事,你都得在。”
陆时看着她,沉默了几秒。
他说,“我在。”
沈听的眼眶忽然有点红。
你答应我了。她说,“不准反悔。”
“不反悔。”
陆时伸出手,把她拉进怀里。
晨光越来越亮,把书房照成一片温暖的金色。
屏幕上的进度条终于跑到了100%。
陆时低头看了一眼,笑了。
“通过了。”
沈听从他怀里抬起头,也看向屏幕。
测试结果:0.3%的误判率,降到了0.01%。
“成了?”
成了。陆时说,“漏洞补上了。”
沈听靠在他肩膀上,忽然笑了一声。
“陆时,你真的很厉害。”
你也厉害。陆时说,“那个动态阈值,是你的主意。”
“但代码是你写的。”
“想法是你的。”
“那你就是我的手脚。”
陆时愣了一下,然后笑出来。
“这个比喻——”
“不好听?”
好听。陆时说,“那我以后就当你的手脚。”
沈听没说话,只是把脸埋在他肩膀里。
窗外的天已经完全亮了。
新的一天,开始了。
而那道漏洞,已经被补上了。