样本
【环境音备忘:工作室,第八天。上午十点十二分。窗外有风——不是听到的,是隔音棉边缘那条缝隙在呼吸,一进一出,频率跟风速同步。贺铮一直没修那条缝。它是这个房间跟外界仅剩的声学通道,像一根呼吸管,让密封的工作室不至于变成一具棺材。今天的底噪比平时高了两个dB——楼下那家奶茶店开始装修了,冲击钻透过楼板传上来的低频振动在 30Hz 以下,听不到,但身体知道。屁股底下的椅子每隔几秒会微微震一下,像坐在一头正在打盹的大型动物背上。】
费建国的微信来得比预期早。
早上七点四十三分,一条消息:一个手机号,安徽号段。下面一行字——"齐秀英,唐莉她妈。我跟她说过你了,说是做纪录片的,要了解唐莉的事。你打吧。"
贺铮看着这条消息看了很久。不是在犹豫——是在想第一句话说什么。
他不擅长打电话。面对面还好,至少能看到对方的表情来调整自己的节奏。电话只剩声音。一根线连着两个人,中间除了语音编码解码的延迟之外什么都没有。他的职业让他对电话通话的音质有一种本能的嫌恶——移动网络的语音带宽被压缩到了 300Hz-3400Hz,人声最有质感的低频和最有辨识度的高频谐波全被砍掉了,剩下的是一段被阉割过的中频,像透过毛玻璃看人脸。
但他需要打这个电话。不是为了聊天。是为了一段声音。
十点十五分。他觉得这个时间可以了——不太早,不会打扰人家吃早饭;不太晚,不会显得拖拉。他拿起手机,拨了那个号码。
响了六声。
每一声电话铃音之间的间隔是五秒。六声就是三十秒。在这三十秒里,他听着那段中国移动标准的回铃音——一段循环播放的单调嘟声,440Hz,持续一秒,间隔四秒——想象电话那头的场景。安徽宿州。农村。一个六十多岁的女人。手机可能在口袋里,也可能在桌上,也可能在她根本听不见的另一个房间里。
第七声响到一半被接起来了。
"喂?"
女声。带着浓重的皖北口音——"喂"字的韵尾拖长了,元音从 /ei/ 滑向 /ɛ/,像一扇门被推开了一半然后卡住了。声音不年轻。声带振动的质地里有一种干燥的毛边感——六十岁以上女性的典型嗓音特征,声带黏膜萎缩导致闭合不全,气息从缝隙里漏出来,给每个元音都裹上一层沙。
"齐阿姨您好,我是贺铮。费建国费叔叔跟您说过的——"
"哦,你就是那个小贺啊。"她的声音立刻从警惕切换到了一种谨慎的热络。"老费跟我打过电话了。他说你是做那个……纪录片的?"
"对,城市声音的纪录片。"贺铮说。这句话他已经说过很多遍了,每次说的时候都觉得它越来越像一件穿久了的外套——合身,但起了球。"我想了解一下唐莉的事情,不知道方不方便——"
"方便。"齐秀英说得很快。快到把他后半句话堵了回去。"你想问什么都行。只要是跟莉莉有关的。"
贺铮握着手机的手指收紧了一下。"莉莉"——母亲对女儿的称呼。两个叠音字,在电话压缩过的中频里听起来发闷,像隔着一堵墙喊人。
"齐阿姨,我想先问一下——您手里有没有唐莉说话的录音?手机语音消息、视频,或者以前拍的什么都行。"
电话那头安静了。
不是挂断的安静——线路底噪还在,能听到远处有鸡叫。是那种人在想事情时候的安静。
"录音?"齐秀英重复了一遍这个词。"你要她的录音干啥?"
贺铮早就想好了怎么回答这个问题。"纪录片需要还原当时的声音环境,我手里有一些在工厂附近录的环境音素材,里面有一些人声片段,需要做身份确认。专业术语叫声纹比对——就是把录音里的声音跟本人的声音对比,看是不是同一个人。"
这段话他说得很慢,每句之间留了停顿。不是故意的——是他在说这些话的时候突然意识到自己在对一个失去女儿十年的母亲解释为什么需要她女儿的声音。"声纹比对"四个字在他嘴里的重量比在报告里重了十倍。
齐秀英又沉默了一会儿。这次的沉默更长。鸡叫声停了,换成了什么东西在桌面上被推来推去的声音——可能是她在摸索手机的位置,也可能只是手在桌上无意识地划。
"有倒是有。"她的声音变了——低了半个调,语速慢了下来,词与词之间的间隔宽了。贺铮听出这种变化:不是情绪低落,是在回忆。人在翻记忆的时候语速会自动慢下来,像在暗房间里摸索一个放在某个角落的东西。
"她以前过年打电话回来,有时候我儿子会录。他那个时候刚买了新手机,啥都爱录。还有就是……"
她停了。
"还有就是她微信上的语音。"齐秀英说。"她走之前那几天发的。我一直没删。"
贺铮的呼吸顿了一下。
走之前那几天。八月初。唐莉失踪前发给母亲的微信语音消息。
"齐阿姨,那些语音消息还在吗?"他控制住自己的声音,让它保持平稳——但他的心率已经上去了。他能感觉到颞动脉在耳道附近跳,每一下都在左耳的耳鸣上叠加一个低频脉冲。
"在。我换了三个手机了,每次都让人帮我把聊天记录导过来。"齐秀英的声音突然有了一种坚硬的东西——不是愤怒,是某种被长期握紧的决心。"她的微信我一条都没删过。最后那条是八月二号发的。"
八月二号。唐莉八月三号深夜目睹了5号仓库的秘密。八月二号她还在正常地给母亲发微信。
"她说什么了?"贺铮问。这句话出口之后他意识到这不是他应该问的——他需要的是声音样本,不是内容。但他还是问了。
齐秀英没有立刻回答。电话里传来了一种微弱的声音——贺铮花了两秒钟辨认它:指甲划过屏幕的声音。她在翻手机。
"她说'妈,这个月工资迟了几天,发了我就寄回去。你别急。'还有一条,'天热,你少出去,水要多喝。'"
齐秀英的声音在读最后几个字的时候出现了一个几乎听不出来的气流中断——声门在某个瞬间紧闭了一下,然后又打开。不是哽咽。是比哽咽更深的东西。是一种已经被重复了太多次以至于肌肉都记住了的反应。
"齐阿姨,这些语音消息……您能发给我吗?"
"行。你加我微信吧。"
她报了自己的微信号。贺铮单手操作,把微信号输进去,发送了好友申请。三秒后通过了——她一直在等着。
"我把莉莉的语音都转发给你。"齐秀英说。"多不多?我数数……六条。从七月二十八号到八月二号。六条。"
六条。
贺铮在脑子里快速计算。微信语音消息的采样率是 8kHz,单声道,AMR 编码。音质很差——比电话还差。但基频提取和共振峰分析不需要高采样率,8kHz 足够覆盖人声的基频范围。如果唐莉的语音消息能提取出稳定的基频轮廓和前三个共振峰的频率,就可以跟录音中那段求救声做初步比对。
不是法庭级的声纹鉴定——那需要至少 16kHz 采样率和标准化的录音条件——但作为方向性判断,够了。
"谢谢齐阿姨。"他说。
"小贺。"齐秀英叫住了他。她的声音又变了——从之前的配合变成了一种更直接的东西。"老费跟我认识快十年了。他这个人我信得过。他说你在帮忙查莉莉的事,我也信。但是我问你一句话。"
贺铮等着。
"你是真的在查,还是就做个片子?"
这句话的语调是平的——没有上扬的疑问,没有下压的质问。平的。像一把尺子横在那里,等他自己靠上去量。
贺铮张了一下嘴。他发现自己不知道怎么回答。
"做片子"是他给苏杭说的。"做片子"是他给费建国说的最初版本,后来费建国自己看出来不是。"做片子"是那件穿了太久的外套——他知道它底下穿着什么,但还没准备好让所有人看到。
"我在查。"他说。
电话里的鸡又叫了。这一次叫声更近、更清楚——一只公鸡,距离话筒大约三到五米,啼鸣的基频在 470Hz 左右,尾音上扬,持续约两秒。这个声音突然让他意识到电话那头的世界:安徽宿州的某个村子,院子里有鸡,桌上有一部导了三次聊天记录的手机,手机里有一个失踪十年的女儿的声音。
齐秀英没有追问。
"行。"她说。"那你好好查。"
电话挂了。
贺铮把手机放在桌上。屏幕上显示通话时长:7分24秒。他盯着这个数字,等着微信消息进来。
第一条语音在四十秒后到了。
他点开。
一个女孩的声音从手机扬声器里出来——8kHz 采样率的、被 AMR 编码压成一片模糊的、但仍然是一个活人的声音:
"妈,工资还没发。厂里说月底。你别打电话来催我,我晓得的。"
贺铮伸手把扬声器音量调到了最大。手机的微型扬声器在大音量下开始失真——高频被削顶了,低频糊成一团。不是正确的监听方式。他应该用 AKG K872,应该先把音频文件导出来,应该在声学工作站里打开……
但他没有动。他坐在那里,用手机扬声器听完了这条十一秒的语音消息。
皖北口音。跟齐秀英一样的韵尾拖长,但更轻,更快,年轻女性的语速和气息量。"晓得"两个字用的是方言——标准发音应该是"知道",她说"晓得",声母是齿龈音,韵母开口度比普通话大。这个词在录音中的求救声里没有出现过——求救声只有一个词:"救命",喊了两遍。两遍都是普通话发音,但第二遍的"命"字尾韵稍微带了一点鼻化,不是标准的后鼻音 /iŋ/,而是偏向前鼻音的 /in/——这是皖北方言的底色渗透。
贺铮闭了一下眼睛。
不要在扬声器上做分析。不要用耳朵代替仪器。
第二条语音进来了。第三条。第四条。第五条。第六条。六条语音消息,间隔两三秒,齐秀英一口气全转发了过来。
他没有再点开。他把手机连上数据线,把六个语音文件导出到电脑。AMR 格式转 WAV,重采样到 48kHz——虽然 8kHz 以上的频段全是插值填充的虚假信息,但统一格式方便后续处理。六个文件在 Audacity 里排成一排。波形图。六段长短不一的蓝色锯齿,像六根被拔出来的牙齿。
他戴上耳机。
AKG K872 罩住双耳。外界消失了。装修的冲击钻、楼板的振动、窗缝的呼吸——所有声音被四十分贝的被动隔音挡在外面。耳罩内部只剩下他自己的生理噪声:血流在颞骨乳突里的脉动、咽鼓管在吞咽时的微弱"咔嗒"、左耳 6kHz 的耳鸣钢丝。
他按下播放。
第一条。七月二十八号。"妈,工资还没发……"这次在耳机里听,细节清晰了一些。她说话的时候背景有车间的噪声——不是上工时的满负荷噪声,更像午休时的低速运转。她可能在休息时间录的。
第二条。七月三十号。"快递寄了,你去镇上取一下。单号我发你微信了。"语速比第一条快,情绪平稳。背景更安静——宿舍?
第三条。七月三十一号。"妈你别总打电话问,我好着呢。厂里忙。"轻微的不耐烦。"好着呢"三个字说得急,尾音吃掉了。背景有门关上的声音——一扇铁门或者防盗门,合页的"咯噔"。
第四条。八月一号。"这个月热死了。宿舍空调坏了两天了也没人修。"语速慢了。背景有电风扇的嗡嗡声——旋转频率大约 25Hz,三叶扇。空调坏了只能吹风扇。她说"热死了"的时候声音里有一种疲倦,不是夸张的抱怨,是真的热到没力气说话。
第五条。八月一号,晚上。同一天发了两条。"妈,钱的事你别管了,我自己想办法。你把药吃好。"这条的语速更慢,每个词之间的停顿更长。"自己想办法"——这四个字她说的时候气息突然弱了,像一根绷紧的线突然松了半分。背景彻底安静。她可能一个人。
第六条。八月二号。最后一条。"妈,这个月工资迟了几天,发了我就寄回去。你别急。天热,你少出去,水要多喝。"
贺铮把第六条单独循环了三遍。
这是唐莉留在世界上的最后一段声音。不是录音里的求救声——求救声是被录音机意外捕获的、她不知道被记录下来的声音。这一条是她自己选择发出的。她选择了说这些话:工资、寄钱、别急、多喝水。
六条语音消息里没有一个字提到恐惧。没有提到5号仓库、赵德胜、黑色塑料袋、深夜的货车。八月一号她就已经在厂里了,录音显示那天晚上 23:22 就有货车进出——她听到了吗?她发第五条语音的时候,知不知道厂里正在发生什么?
"自己想办法。"
贺铮摘下耳机。左耳的耳鸣从被压制了半小时的背景噪声里跳回前台,刺了他一下。他揉了一下耳垂——没有用,耳鸣不在耳垂,在听觉皮层。
他打开 Praat。
声纹比对的第一步是提取基频。他把六段语音和录音中的求救声分别加载进来,运行基频追踪算法。Praat 的自相关法对低采样率的信号表现还行——不完美,但够用。
结果出来了。
唐莉的六段语音消息:基频均值 218Hz,范围 175-290Hz。正常说话时集中在 200-240Hz 区间。情绪波动时上扬到 260-290Hz(第三条的不耐烦、第五条的疲倦转急促)。
录音中的求救声:基频 243Hz(第一遍"救命")和 261Hz(第二遍"救命")。
218 对 243。均值偏移了 25Hz。
贺铮盯着这个数字。25Hz 的偏移量——在正常范围内。人在极度恐惧时喉部肌肉紧缩,声带被拉长绷紧,基频会显著上升。25Hz 的上升幅度对应大约 12% 的频率变化,跟文献里报告的"恐惧/求救状态下基频上升 10-30%"吻合。
但基频只是第一层。他需要共振峰。
共振峰是声道共鸣产生的频率峰值——取决于口腔、鼻腔、咽腔的形状和大小,这些解剖结构在成年后基本不变。就算一个人改变说话的音高、语速、情绪,共振峰的模式仍然相对稳定。这就是声纹鉴定的核心原理:你可以伪装声音,但你伪装不了声道的形状。
他提取了两组信号的前三个共振峰。
F1:唐莉语音 780Hz / 求救声 815Hz。 F2:唐莉语音 1420Hz / 求救声 1380Hz。 F3:唐莉语音 2650Hz / 求救声 2590Hz。
偏差分别是 4.5%、2.8%、2.3%。
贺铮靠在椅背上。椅子没有响——润滑油还在起作用。
他知道这个结果意味着什么。也知道它不意味着什么。
意味着什么:唐莉的声音和录音中求救者的声音在基频和共振峰两个维度上高度相似,偏差在已知的情绪影响和录音条件差异的合理范围内。如果这是一道选择题——求救声"是"或"不是"唐莉——指针重重地偏向了"是"。
不意味着什么:这不是法庭鉴定。8kHz 采样率的微信语音和野外环境录音之间的对比,在任何一个正规鉴定机构的标准下都不合格。样本条件太差、背景噪声太高、参考样本的录音设备和条件未知。他能得出的最严谨的结论是"不排除同一人"——这在法律上等于什么都没说。
但他不是在写法律文书。
他在听一个声音。一个从十年前的录音带里爬出来的、穿过降噪算法和频谱分析的声音。现在这个声音有了一个名字——不是"未知女性",不是"声学事件 #017"。
唐莉。
贺铮把分析结果截图保存。然后他打开微信,找到费建国的对话框。
他打了一行字:"老费,声纹初步比对的结果出来了。"
删掉。
又打了一行:"基频和共振峰匹配度很高。"
删掉。
最后他只发了三个字:
"是她。"
消息发出去。已发送。他等了十秒。已读。
费建国没有立刻回复。对话框里那个"对方正在输入……"的提示闪了一下,又灭了。闪了一下,又灭了。老刑警在打字,又删掉了。打字,又删掉了。
三十秒后回复来了。
一个字:
"嗯。"
贺铮放下手机。工作室里的底噪重新包裹了他——冲击钻的低频振动、硬盘的转动声、窗缝的呼吸。耳鸣还在,但退远了一步。
他重新打开那份声学报告的初稿。第三部分,"待验证"那一栏。
第一条:"求救声说话者身份(需与唐莉的已知语音样本进行声纹比对;目前未获取唐莉本人的语音样本)"。
他把"目前未获取"删掉。改成:
"初步比对结果:基频偏移 +11.5%,F1-F3 共振峰偏差均小于 5%,与情绪激动状态下的预期变化一致。不排除同一人。"
不排除同一人。
他的手指在键盘上停了一秒。然后在这行字下面加了一句:
"建议获取高质量参考样本后委托具有司法鉴定资质的机构进行正式鉴定。"
保存。硬盘嗒了一声。
他看了一眼手机。齐秀英的微信头像是一张模糊的照片——看不清是什么,可能是一盆花,也可能是一片田。在那个头像下面,六条语音消息安静地排列着。每一条旁边都有一个绿色的小喇叭图标和一个秒数。11秒。8秒。7秒。14秒。9秒。16秒。
六条消息。六十五秒。
一个女孩在世界上留下的最后六十五秒声音。工资、快递、空调、药、水。没有一个字是为了被分析的。没有一个字知道十年后会被一个陌生男人戴着监听耳机一秒一秒地拆开。
贺铮关掉 Praat。关掉 Audacity。没有关电脑——硬盘还在转,风扇还在转。
他站起来,走到窗边,这次掀开了吸音棉的一角。外面的光和声音同时涌进来——四月的阳光,白得刺眼;楼下的装修声,冲击钻变成了电锤,频率更高更尖;远处的车流,轮胎在柏油路上碾出的那种城市底噪。
他站了十秒钟,让外面的声音把工作室里残留的那个声音冲淡。
然后他放下吸音棉,回到电脑前。
该联系苏杭了。苏杭介绍过一个记者——何瑶,省报的,跑房地产口。澜曜中心的公示4月15号到期。还有三天。