天幕大厦顶层,顾安的办公室。
晨光从落地窗的缝隙里渗进来,在深灰色的地毯上投下一道细细的亮线。顾安坐在办公桌后面,面前的电脑屏幕泛着冷白色的光。他端着一杯茶,茶已经凉了,但他没有喝,只是让杯壁贴着掌心,感受那一点点逐渐消退的温度。
他的目光落在屏幕上。那条折线图从昨天凌晨三点开始出现异常,一条本该平稳滑行的曲线,在一个不显眼的位置上,突然跳起一个细小的尖峰。尖峰不大,放在整张图表的尺度上,几乎可以忽略不计。但顾安看到了。他看到了,而且他没有移开目光。
他放下茶杯,指尖在触摸板上滑动。屏幕切换,进入音乐库的实时监控界面。他调出昨晚的数据——全库共有一万两千四百首歌曲被推送至各推荐位,其中头部热门歌曲三百零七首,覆盖用户基数超过八千万。他点开其中一首。
歌名是《晨光》。天幕集团旗下签约歌手林朵的代表作之一,发行于两年前,经过三度标准化处理,音准曲线、动态范围、频谱分布全部在标准区间内。这首歌被推送到一百三十七个歌单,昨夜总播放量超过四百万人次。
顾安戴上耳机,按下播放键。
前奏响起。标准的C大调分解和弦,合成器音色经过精确调制,每一个音符都在它应该在的位置上,不多不少,不偏不倚。林朵的嗓音切入,经过多层压缩和混响处理,平滑得像一块被反复打磨过的石头。副歌部分的情绪高潮被算法精确控制在一个安全区间内,既能让人产生“感动”的生理反应,又不至于触发任何超出预期的心理波动。
这是完美的标准化内容。顾安听了三十秒,没有发现问题。
然后他听到了。
在第三小节的那个间隙里,那个本该是空白的地方——有一段极短的旋律。只有三个音。极轻,极短,像一片叶子落进水面。如果不是顾安戴着耳机、注意力完全集中在音频上,他根本不会注意到那三个音的存在。
但那三个音,不属于《晨光》的谱面。
顾安的手指停在触摸板上,一动不动。他倒回去,重新播放。这一次,他把音量调高了两格。前奏,主歌,副歌,然后,第三小节,间隙,三个音。他又倒回去,再听了一遍。三个音。每次都在同一个位置,分毫不差。
他摘下耳机,打开音频分析软件。屏幕上,波形图被展开成一条细长的带状。他选中第三小节的那段区域,点击“频谱分析”。软件开始逐帧扫描,一条条频率带在屏幕上铺展开来。他放大那个区域。原本应该完全静音的频段上,三段极窄的脉冲信号浮了出来。脉冲的形态很规则,起振和衰减都清清楚楚,频率集中在一个特定的区间内。这不是随机噪声。随机噪声在频谱上会呈现为杂乱的、无规律的分布,而这三段脉冲,频率分布、振幅包络、谐波结构,全部呈现出高度一致的形态特征。
顾安调出原始音频文件的哈希值,与库中备份进行比对。哈希值完全一致,这说明文件在入库后没有被篡改过。那么问题只可能出在源头:在文件被上传至天幕集团的服务器之前,这段旋律就已经被嵌入进去了。
他又做了一次“倒谱分析”——一种用于检测音频中隐藏信息的常用技术。倒谱图上,那三个脉冲信号呈现出周期性的峰值,峰值之间的间隔规律而精确。这不是偶然的声学现象,而是经过编码处理的、有明确意图的信号。
顾安的手指在触摸板上停住了。他盯着屏幕上那三个脉冲的波形,它们像三颗不同大小的雨滴落在平静的湖面,每一颗都荡开一圈独立的涟漪,而涟漪与涟漪之间,隔着一段精确计算过的距离。
那不是噪声。是信号。一个被精心编码、精准嵌入的信号。
顾安摘下耳机,放在桌面上。他坐了一会儿,然后伸手拿起桌面上的内线电话,按下一个快捷键。电话只响了一声就被接起来了。
“让陆昂到我办公室来。”他说。
他的声音很平稳,没有愤怒,没有急躁,甚至没有一丝波澜。但挂断电话后,他坐在椅子上,看着电脑屏幕上那三个脉冲的波形,很久没有动。
陆昂推门进来时,顾安正背对着门,指尖在窗玻璃上无意识地画着圈,像是在丈量这座城市的距离。他背对着门,看着窗外灰蒙蒙的城市天际线。远处有一座大楼的楼顶,蓝色标志正在晨光中泛着冷光。
“顾总。”陆昂说。
顾安没有转身。“把门关上。”
陆昂伸手把门带上了。门锁发出“咔哒”一声脆响,在安静的办公室里格外清晰。
顾安转过身来。他的脸色没有变化,但陆昂注意到了他左手手指的细微动作,食指的指尖正轻轻摩挲着拇指的指腹,一下,两下,三下。这个动作陆昂见过。在顾安准备做重大决定的时候,他总会做这个动作。
“坐。”顾安说。
陆昂在办公桌对面的椅子上坐下来。他没有说话。他等着顾安先开口。
顾安回到办公桌后面,坐下。他沉默了一会儿,然后把电脑屏幕转了个方向,让屏幕朝向陆昂。他没有开口解释,只是按下了播放键。
《晨光》的前奏响起。陆昂听了一会儿,没有听出任何异样。他看了一眼顾安,顾安没有看他,只是盯着屏幕。陆昂把目光重新移回屏幕上,继续听。主歌,副歌,然后——
那三个音。
陆昂的瞳孔极轻微地收缩了一下。那三个音很短,很轻,如果不是刻意去找,几乎不可能被发现。但一旦被听到,它们就像一根刺,扎进听觉的某个缝隙里,让人无法忽略。
顾安按下了暂停键。办公室里安静了一瞬。
“你听到了。”顾安说。
“听到了。”陆昂说。
顾安没有立刻接话。他把电脑屏幕转回自己面前,看着那条音频的波形图。那三个音在波形图上显示为三个极小的尖峰,像三粒细砂落在一条平整的河床上。
“这是《晨光》,林朵的歌。”顾安说,“昨晚的总播放量是四百零三万七千二百一十四次。这个数字还在增长。今天早上六点,我们的内容监控系统标记了这条音频——‘发现非标准化内容嵌入’。”
他停了一下。
“这一段旋律,一共三个音,时长零点八秒。它被嵌入在第三小节的间隙里,那个位置在原始音频中是静音区。嵌入的方式很精准,没有破坏原曲的任何结构,没有影响音质,没有触发任何常规的内容安全检测。”顾安的目光落在陆昂身上,“这说明,做这件事的人,对我们的音频处理系统有非常深入的了解。静音区的位置,检测的盲区,播放中被听到但不被算法识别的方式,他全都清楚。”
他顿了顿,又补了一句:“而且,他已经这么做了。至少做了三次。”
陆昂没有动。他的身体没有任何反应,没有皱眉,没有抿唇,没有移开目光。他坐在椅子上,像一尊石像。但他的脑子里,那些信息正在以极快的速度被组装、排列、拼合。他看到了那条时间线:三天前,破晓传媒的账号在某个音频平台上发布了一段口琴演奏,播放量只有几百,没有引起任何注意。两天前,那个账号的内容被某个小型账号转载,播放量依然很低。一天前,天幕集团的音乐库中,《晨光》的音频文件被标记为“异常”。
然后他想到了何潇。那个总是坐在破晓办公室角落里、手指在键盘上移动时永远不急不缓的男人。那个在技术会议上被所有人忽视、但陆昂知道他的真实背景的人——旧世界的算力架构师,精通所有音频处理和信号编码技术。
“我要你彻查这件事。”顾安的声音打断了他的思绪,“我要知道这段音频是从哪里来的,怎么进来的,通过什么渠道被嵌入到《晨光》的音频文件里的。还要知道它是否存在于其他歌曲中。”
陆昂抬起头。“我会去查。”
顾安看着他,目光像一面平静的水面。“你心里有数了。”
这句话不是问句。它是一个陈述句。陆昂沉默了一拍。这一拍很短,短到几乎无法被察觉。但顾安能捕捉到一拍沉默,这一点陆昂从不怀疑。他在心里斟酌了一瞬,然后开口:“有一些推测的方向。但需要数据验证。”
“那就去验证。”顾安说,“我今天下午要看到初步报告。”
陆昂站起来。“明白了。”
他走到门口,伸手握住了门把手。在他即将转动门把手的瞬间,顾安的声音从身后传来。
“陆昂。”
陆昂停住了。
“打开《晨光》的音频文件,把它放在波形图上看一下。”顾安说,“那三个音的间隔,不是随机的。”
陆昂转过身,看着顾安。顾安的指尖在触控板上轻点,屏幕上的波形图如潮水般退去,三个极小的尖峰在放大镜下显露出它们精密的轮廓,像三颗被精心排列的星点。那三个极小的尖峰,像三滴墨落在纸上,彼此之间的距离并不完全相等。第一个尖峰和第二个尖峰之间的间隔,比第二个和第三个之间的间隔宽了大约百分之十五。
“这个间隔……”陆昂说。
“是口琴。”顾安说,“口琴演奏者会在这个位置换气。那是呼吸的间隔。这段旋律是被人用口琴吹出来的,然后经过数字化处理,嵌入到音频文件里。”
他停了一下。
“有人在用口琴说话。”顾安说,“我想知道,他在说什么。”
陆昂推开门,走了出去。门在他身后轻轻合拢,锁扣发出一声极轻的“咔哒”声。他没有立刻离开,在走廊里站了一会儿,直到确认办公室的门已经完全合上,隔绝了所有声音,才迈开脚步,沿着走廊往电梯方向走去。
他走进自己的办公室,关上门,在椅子上坐了下来。桌面上摆放着几份文件,数据监控报告、内容审核日志、用户行为分析。他拿起最上面那份数据监控报告,翻了几页,又放下了。他坐在椅子上,看着窗外的天空。晨光正在消退,云层逐渐堆积,城市的天际线变得灰沉沉的。
他想起了那个清晨。广场上,铁皮桶被敲响的声音,穿过整条街的距离,落进他的耳朵里。那不是旋律。那像是一个人在说话。没有词,但他听得懂。
他想了很久,然后拉开抽屉,从里面取出一个文件袋。文件袋里装着一份打印好的报告——是他自己整理的,关于破晓传媒的注册信息、账号变更记录、内容发布历史。这份报告没有被系统录入,没有副本,没有归档。它只存在于这个文件袋里。
陆昂把文件袋放回抽屉,合上抽屉,然后拿起桌面上那份数据监控报告,翻到昨天深夜的记录。凌晨三点零六分,《晨光》的音频文件被标记为“异常”。标记人是一个自动检测程序,系统自动生成了异常报告。报告被归类为“低优先级”,按流程会在七十二小时内被人工审核。
但顾安看到了。
陆昂合上报告,放在桌面上。他的手指在纸面上停留了一瞬。然后他拿起手机,解锁,打开一个加密通讯应用。他输入了一行字,没有发送,盯着屏幕看了一会儿,又把那行字删掉了。
他没有拨出那个电话。
他坐在椅子上,窗外的天色越来越沉,云层压得很低,像一块被水浸透的灰布。城市里的灯光一盏一盏地亮起来,但那些光看起来很薄,像一层被涂在灰暗底色上的颜彩,一碰就会碎掉。
他想起顾安的话:“有人在用口琴说话。我想知道,他在说什么。”
他知道答案。但他不能说。
他想起破晓传媒的那间办公室。破旧的写字楼,漏水的天花板,墙角堆着旧文件柜和空纸箱。那五个人坐在里面,一个破产的老板,四个从另一个世界坠落下来的人。他们用一把旧口琴,一个铁皮桶,一个失眠女人的声音,一个电话亭女孩的等待,组装成了一段不属于算法的声音。
他把那段声音嵌进了天幕集团最热门的歌曲里,让四百万人听到了它。
而陆昂,他知道是谁做的。
他还知道,他不能上报。
窗外的云层终于裂开了一道缝。一道很细的光线从云缝里落下来,投在远处的楼顶上,像一根被拉长的银线。陆昂看着那道光,坐了很久。然后他伸手,拿起桌面上的笔,在一张便签纸上写下了几个字。他把便签纸折好,放进口袋里。
然后他站起来,拿起那份数据监控报告,走出办公室。走廊里的灯光白得像一面墙,他沿着墙走,脚步声在空旷的走廊里回荡,像一颗石子落在深水里。
电梯门打开,他走了进去。门合拢的瞬间,他的目光在走廊尽头顾安办公室的方向停留了半秒,那里仿佛还残留着刚才对话的余温。然后他垂下目光,按下了一楼键。
电梯开始下降。
城市在窗外慢慢展开,像一张被摊开的地图。陆昂站在电梯里,双手垂在身侧,手里攥着那份报告。报告纸的边缘被他捏得有些发皱,但他没有松手。
他想起顾安最后说的那句话:“我想知道,他在说什么。”
陆昂知道。但他说不出口。
电梯到达一楼,门开了。他走出去,穿过大堂,推开门,走进城市的风里。风裹着细小的灰尘迎面扑来,他眯了一下眼睛,然后继续往前走。
口袋里的便签纸像一块烧红的炭,烫着他的大腿,提醒着他不能说出的秘密。
他走了一段路,停下来,站在人行道边上。旁边是一家早餐摊,老板娘正把最后一笼包子从蒸屉里端出来,热气腾腾地散在风里。她看了陆昂一眼,没说话,从摊子底下摸出一杯豆浆,递过来。
“没吃早饭吧。”她说。
陆昂愣了一下。他接过豆浆,指尖触到杯壁,温热的。他低头喝了一口,甜度刚好,不烫不凉。
“谢谢。”他说。
老板娘摆摆手,转身去收拾摊子。陆昂站在原地,把那杯豆浆喝完,把空杯扔进路边的垃圾桶。他掏出手机,解锁,打开那个加密通讯应用。这一次,他没有迟疑。他输入了一行字,按下发送。
那行字很短。
——“我会处理。”
他没有等回复。他把手机放回口袋里,继续往前走。风把他的衣角吹起来,又放下。他的背影在灰沉沉的天色里,像一条被拉长的、细瘦的影子,被人群慢慢淹没。
同一时间,破晓传媒的办公室里,何潇正坐在电脑前,屏幕上密密麻麻的代码在滚动。他的手指在键盘上移动,速度没有变化,但每一个落下的键,都像一颗石子落在水面上,荡开一圈极细的涟漪。
田笑靠在窗台边,手里拿着一只铁皮桶。她用手指轻轻敲了一下桶壁,发出一声闷响。那一声响,在安静的办公室里回荡了一下,然后沉入午后的寂静里。
何潇从口袋里掏出那把旧口琴,放在掌心里看了一会儿。口琴少了一颗簧片,铁皮上有一道深深的划痕。他把它举到嘴边,吹了一个单音。那一个音,在空气里悬了一瞬,然后落下去,像一片叶子落进深水里。
周远坐在角落里,闭着眼睛。他没有说话,但他的耳朵捕捉到了那一个音。
窗外,云层裂开一道缝,一道很细的光线落下来,投在办公桌上。像一根被拉开的门缝。
那扇门,正在被推开一条缝。
而门缝的那一头,所有的声音正在苏醒。
何潇放下口琴,手机屏幕亮起,一个未保存的号码跳动着,只有四个字,却像一把钥匙,轻轻转动了他心中那把锁。
他看了很久,然后把手机翻了个面,扣在桌上。他转过头,对田笑说:“别急,先吃口。”
田笑从窗台上跳下来,把铁皮桶放在墙角。“敲了再说。”
周远睁开眼睛,站起来,走到窗边。他看着楼下那条街,早餐摊的老板娘正在收摊,一个穿灰色外套的男人从街角拐过去,消失在人群里。
“走了。”周远说。
(第75章 完)