晨光爬上窗台时,薛弥声还站在原地。
手机已经发烫,被她放在窗台上冷却。屏幕暗下去之前,最后显示的是和付聆雪的聊天界面——那张写满公式的草稿纸照片,下面是她发的“成功了”,再下面是付聆雪简短的“恭喜”。
简单得像是什么都没发生过。
但什么都发生了。
薛弥声的手指抚过冰凉的窗玻璃,触感让她微微战栗。远处创业园区的轮廓在晨雾中若隐若现,像一张褪色的老照片。她看见自己办公室所在的那层楼,窗户还暗着,要等一个小时后,第一个来加班的工程师才会点亮那里的灯。
三年前她租下那个办公室时,也曾这样站在这里远望。那时心里揣着一股狠劲,想着要做出成绩,要让付聆雪看见,要证明离开是对的。
现在她做到了。付聆雪看见了。但证明什么呢?
证明没有付聆雪,她也能解决技术难题?可刚才那个突破性的算法改进,分明是付聆雪给出的核心思路。证明她建立了成功的企业?可声觉至今还在生死线上挣扎,需要付氏的投资才能活下去。
证明她放下了?哈。
薛弥声转身离开窗边,赤脚踩过木质地板,走向厨房。冰箱门打开时,冷气扑面而来。她拿出那瓶昨晚没喝完的冰水,拧开,仰头灌了一大口。冰凉刺激着喉咙,让她清醒了些。
工作台上的电脑还亮着,屏幕上那个99.63%的识别率像在嘲笑她。她走过去,手指在触控板上滑动,调出算法改进前后的对比图。
蓝色曲线是旧版,红色曲线是付聆雪的思路。两条线在75分贝噪音阈值处交叉,之后红线一路向上,把蓝线远远甩在后面。图表下方是密密麻麻的性能参数:内存占用减少67%,处理延迟降低42%,识别错误率下降0.41%。
每一个数字都在说:付聆雪是对的。付聆雪总是对的。
薛弥声想起很多年前,她们还在读研时,有一次为了一个优化问题争吵。付聆雪坚持用拉格朗日乘子法,她非要试试遗传算法。吵了整整一下午,最后各做各的。结果付聆雪的方法收敛更快,精度更高。
那天晚上她赌气不回宿舍,在实验室通宵。凌晨三点,付聆雪拎着宵夜推门进来,什么也没说,把热腾腾的馄饨放在她桌上,然后坐在旁边,开始改自己的代码。
她吃馄饨时,付聆雪突然说:“你的遗传算法想法很好,只是不适合这个问题。如果换成粒子群优化,也许能行。”
她愣住:“你看了我的代码?”
“看了。”付聆雪眼睛盯着屏幕,手指在键盘上飞舞,“你把交叉概率设得太高,种群多样性损失太快。降到0.6试试。”
她试了,效果好了很多。但还是不如付聆雪的拉格朗日法。
“我输了。”她闷闷地说。
付聆雪转过头,很认真地看着她:“技术讨论没有输赢,只有最优解。而且你的思路给了我启发——也许可以把两种方法结合,先用遗传算法找初始点,再用拉格朗日法精调。”
她们真的那样做了,结果比单独用任何一种方法都好。那篇论文后来发在了顶会上,致谢里她们互相写着“感谢我的合作者无可替代的洞察力”。
无可替代。
薛弥声关掉对比图,打开加密文件夹。那个“声学智能”的愿景文档还在,像一头沉睡的巨兽。她点开,光标在标题处闪烁。
要不要现在发给付聆雪?凌晨的电话里,付聆雪说想“重新开始”,想“看看能不能走到一起”。如果给她看这个,意味着什么?
意味着交出全部的野心和脆弱。意味着告诉她:这三年我不仅在做声纹识别,我在构建一个你可能会觉得疯狂的蓝图。意味着问她:你还愿意和我一起做梦吗?
太急了。薛弥声对自己说。付聆雪说“从工作开始”,说“顺其自然”。那就从工作开始,从最实际的技术合作开始。
她新建了一个文档,开始整理刚才算法改进的详细报告。这是声觉的技术文档规范,每一个重大改进都要记录在案:问题描述、解决思路、实现细节、测试结果、后续优化方向。
手指在键盘上敲击时,晨光又亮了一度。金黄色的光线斜射进来,在工作台上切出一道明亮的光带。尘埃在光柱里飞舞,像微型的星云。
写到“解决思路”这部分时,薛弥声停住了。该怎么写?写“与付氏集团技术顾问付聆雪讨论后,采用图卷积频域方法”?太正式,太生疏。写“付聆雪建议”?太亲密,太私人。
她盯着空白处看了很久,最终写道:“参考图神经网络在频域的优化方法,采用切比雪夫多项式逼近拉普拉斯矩阵特征值分解,实现邻接矩阵的稀疏化表示。”
没有提付聆雪的名字,但每一个懂行的人看了,都会知道这思路来自顶尖高手。付聆雪的烙印,已经刻在了算法里。
文档写到一半时,手机震动了一下。薛弥声瞥了一眼,是付聆雪发来的消息,这次不是公式,而是一张照片:一杯咖啡,旁边摊着几张写满字的纸。
附言:“整理了一下时频域联合分析的难点列表。你觉得从哪个开始攻?”
薛弥声放大照片。咖啡杯是她熟悉的那只白色骨瓷杯,边缘有一道细微的裂痕——那是很多年前她不小心碰掉的,付聆雪没舍得扔,说“有瑕疵的东西更真实”。
纸张上的字迹工整清晰,列出了七个技术难点:实时性、精度损失、计算复杂度、硬件适配、噪声鲁棒性、多说话人场景、跨语言泛化。每个难点下面还有两三行简析。
典型的付聆雪风格:全面、系统、直击要害。
薛弥声回复:“实时性和精度损失是主要矛盾。先解决这两个,其他的可以迭代。”
“同意。”付聆雪秒回,“我有个想法,用知识蒸馏,让大模型教小模型。大模型离线训练保证精度,小模型在线部署保证速度。”
“蒸馏损失函数设计是关键。”
“嗯,我推了几个,都不太理想。传统的KL散度在时频域特征上效果不好。”
薛弥声看着这句话,脑子里突然闪过一个念头。她快速敲击键盘:“试过Wasserstein距离吗?时频特征可以看成概率分布,Wasserstein距离更能捕捉分布之间的几何结构。”
发出去后,她等了几秒。付聆雪没立刻回复,大概在思考或者计算。
薛弥声起身去煮咖啡。厨房里,咖啡机发出沉闷的轰鸣声,深褐色的液体一滴滴落入玻璃壶。香气弥漫开来,是熟悉的阿拉比卡豆的果酸味。这还是付聆雪推荐的牌子,说这家的烘焙度最平衡。
三年了,她换了住处,换了公司,换了社交圈,但咖啡豆没换。
端着咖啡回到工作台时,手机上有新消息。付聆雪发来一张新的草稿纸,上面是Wasserstein距离的推导过程,最后写着一个公式和一行小字:“试了,效果提升约3.7%。你怎么想到的?”
薛弥声抿了口咖啡,回复:“去年读的一篇迁移学习论文里的思路,一直没找到应用场景。”