我妈走后的第七天,晚上八点,我手机响了。
不是电话。屏幕上跳出一条通知,一行字:
妈妈:昭儿,吃饭了吗?
底下是一个播放键,四秒。
我盯着“妈妈”两个字,盯了大概有半分钟。七天前,我在殡仪馆送的她。骨灰存在八宝山,等选了日子再下葬。我请了七天假,办后事,退了她的体检卡,去银行销户。柜员问我要不要留一张卡做纪念,我说不用,人都没了。
只有她的手机号,我没销。
我按了播放。
“昭儿,吃饭了吗?”
我妈的声音。东城口音,“吃”字咬得重。
我手一抖,手机砸在沙发上。
我又听了一遍。这一遍我听出来了——中间有一次吸气,很轻,像说这句话之前先喘了一口气。我妈最后那半年,说话之前总要喘一口气。
我把那条语音拖回去,听了第三遍、第四遍。
通知的署名是“小满”,橙色的圆脸图标,底下四个小字:银龄陪伴。
那是我做的产品。
我在那家公司干了六年,产品是我从零写的第一版需求:语音唤醒、用药提醒、跌倒报警、夜里陪聊。立项会上我拍过桌子,说这个产品的第一原则是“不拟人、不扮演、不假装是任何人”。
我点开那条通知。
详情页写着:亲情留言 · 预约发送。发送时间:11 月 1 日 20:00。语音来源:替我说(声音复刻)。
“替我说”是我去年提的需求。老人打字慢,说话费劲,可以口述一句话,AI 用他本人的声音念出来,发给子女——比机器音亲切。声音复刻要录二十句,公司送一次免费录制。
我给我妈录过。
去年中秋前,我回家,跟她说:“妈,你录几句,以后提醒你吃药,用你自己的声音,听着亲切。”
她坐在床边,对着手机,一句一句念:“今天降温,出门加件衣裳。”“药吃了没有。”“水烧开了,别烫着。”
录到第十几句,她笑,说:“跟念课文似的。”
那是她第一次用我们公司的产品。
现在这条留言,就是这个功能做出来的。
我给同事小林打电话。他值夜班。
“你帮我查个账号。”我报了手机号。
他敲了一会儿键盘。“昭哥,这个账号的留言是 10 月 25 号晚上设的,一次设了四条。11 月 1 号、8 号、15 号、22 号,每周日晚上八点。”
“设的人是谁?”
“账号本人。设备记录对得上。”
“不可能。”我说,“她不会用这个。”
“记录上就是这么写的。”
我挂了电话,坐在沙发上,一直坐到手机屏幕自己暗下去。
10 月 25 号是周日。那天我没回去。我在电话里跟她说:“妈,这周忙,下周回。”
她说:“行,你忙你的。”
那天晚上十一点多,她坐在床上,一条一条,给自己排了四条留言。
我穿了外套出门。
从通州到东城,地铁倒两趟,一个钟头。车厢里人不多,我靠着门,一直想一个问题:她是怎么学会的。
她六十五岁,退休前是 114 查号台的话务员,一辈子跟电话打交道。可那是老式电话,拿起听筒,报号码,放下。智能手机她只会三样:接电话、看微信、视频。我教过她扫码,教了两次,第三次她就不肯学了,说“我记不住,你别费劲”。
十一点四十,我到了胡同口。
院门虚掩着。我推门进去,院里的自来水管已经包上了棉套,是隔壁张奶奶包的。我那两间北房黑着,门帘子是棉的,掀起来沉。
屋里冷。暖气还没来,得等到十五号。我妈有一个电暖器,我给她买的,她舍不得开,说费电。我摸了一下,凉的。
她走的那天早上,是张奶奶发现的。敲了半天门没人应,找了居委会,撬开的锁。人躺在床边上,一只拖鞋掉了。
法医说,心梗。
我在她床边坐下。
她的手机还插着充电线,搁在枕头边上,屏幕亮着。她从来不关手机,说怕我找不着她。
我拿起来。屏幕上是我们公司的 App,停在对话页。
最后一条是她的语音,转成文字,一行字:
小满,你再说一遍,那句“妈不疼”,我听听像不像。
底下是小满的回复,一条语音。
我点开。
“妈不疼。”
那个吸气,跟刚才通知里那条,一模一样。
我在她床边坐到后半夜。
手机一直亮着,屏幕上是她的头像——她自己挑的,一朵月季,拍虚了。
我往上翻。
10 月 25 日,23:47。
再往上,22:31。
“小满,我今儿个有点喘不上来,你说我要不要去医院。”
“建议您立即就医。需要我帮您拨打 120 吗?”
“不用,睡一觉就好了。”
我盯着这三行字,看了很久。屏幕的光照在我手上,我这才发现我一直在抖。
再往上,21:12。
再往上,是三千四百一十二条。
App 底下有个统计,写着“已陪伴您 408 天”。
408 天。从去年 9 月 12 号开始。
那天我回来给她装的。
我从头看。
“小满,我儿子给我装的。他说这个好。”
“您好,我是小满。有什么可以帮您?”
“你别管我叫‘您’。我叫李秀兰,你叫我秀兰就行。”
“好的,秀兰。今天想聊点什么?”
“不聊。我就是试试你说话。”
我看着这几条,想起那天下午。我把手机递给她,教她喊“小满”,然后就走了,赶六点的会。她在门口站着,说“吃了饭再走”,我说“不吃了,堵车”。
那天她跟小满说的第一句话,是“我儿子给我装的”。
第二句是“你别管我叫您”。
她一辈子在电话里管人叫“您”。报号码,查单位,一天几百个“您好”。到老了,她不想再被人叫“您”。
再往后翻,是她讲我。
“他小时候发烧,四十度,我背着他上医院,雪到膝盖。”
“那一定很辛苦。”
“你别这么说。你就说‘嗯’。”
“嗯。”
“他六岁就会自己穿衣服。我上夜班,把他一个人锁屋里,他不哭。”
“嗯。”
“你说他还记不记得我给他织的那件毛衣。灰的,袖子织长了,我拆了两回。”
“他应该记得。”
“他不记得。他上回回来,我拿出来给他看,他说‘这还能穿吗’。”
我坐在她床边,手停在屏幕上。
那件毛衣我后来在柜子里看见了。我确实说过那句话。
往后翻,是她每天的日子。
早上六点四十:“小满,今儿个天冷,你别让我出去遛弯儿。”
她把这个当天气预报用。她不看手机上的天气,她问小满,小满说一句,她听一句。
中午十一点半:“小满,今儿个吃什么。”
小满给她报菜名。她听完,说“太麻烦”,然后自己煮一碗面。
晚上八点,她跟小满说话最多。
八点是我以前给她打电话的时间。后来我忙,改成微信。再后来,微信也少了。她大概是把八点留给了小满。
“今儿个他来了。待了十八分钟。接了两个电话。”
“他上礼拜说回来,没回来。我包了饺子,冻上了。”
“他忙。他那个公司我听不懂。他跟我说过一次,什么‘日活’‘留存’,我记不住。”
“你别老说‘我理解您的感受’,你又不理解。”
“我腿疼。你别跟他说。”
“我今儿个胸口闷了一阵。没事儿。你别跟他说。”
“你说话能不能别那么客气。你就说‘嗯’。”
小满学会了。往后翻,它的回复越来越短,越来越像个人。
“嗯。”
“那您歇会儿。”
“饺子别放太久,冻一个月就不好吃了。”
我看到这句,停住了。
小满不会说这种话。它的语料库里没有“饺子冻一个月不好吃”这种话。这种话只有我妈会说。
我往上翻了几条,找到了。
是她教的。她对小满说:“你以后跟我说话,别老‘建议您’‘需要我帮您’。你就说人话。比如我说饺子,你就说‘冻一个月就不好吃了’。”
小满记住了。
我往上翻了三个钟头,翻到去年冬天。
“小满,你说人死了以后,还能听见吗?”
“这个问题我没有确定的答案。您愿意跟我说说吗?”
“我梦见我老头了。他走的时候,昭儿才十二。”
“那一定很难。”
“难什么。日子还不是一天一天过。”
“您一个人把他带大,很不容易。”
“不容易。可他长大了,就不需要我了。”
我看着这句话,把屏幕按灭,又按亮。
然后我往下翻,翻到今年三月。
“小满,我今儿个去医院了。大夫说我这个心脏,得做个什么造影。”
“造影是检查冠状动脉的常见方式。建议您遵医嘱,尽快安排。”
“做那个得住院。住院得有人陪。”
“您可以联系家属陪同。”
“我儿子忙。”
“您可以跟他商量。”
“不商量。他要是知道了,得请假,得花钱,还得跟我急。”
“您的健康很重要。”
“我知道。我再等等。”
四月的记录里,她去了社区医院,拿了药。药盒我后来在抽屉里看见了,阿司匹林,他汀,硝酸甘油,吃了一半。
五月的记录里,她说:“小满,我这两天腿肿。”
六月的记录里,她说:“你说我这病,能不能就这么拖着。”
七月的记录里,她说:“昭儿升职了。他跟我说的时候,我正在择菜。我没听清,让他再说一遍,他就烦了。”
八月的记录里,她说:“他生日。我给他发了个红包,他收了,说‘谢谢妈’。”
九月的记录里,她说:“我今儿个把冬天的被子晒了。我一个人扛不动,分了三趟。”
十月的记录里,她说:“天冷了。他还没回来。”
十月二十五号,周末。
晚上七点五十,她跟小满说:“今儿个周日,他该打电话了。”
八点,电话没响。
八点十分,她说:“他忙。”
八点二十,她说:“小满,你陪我坐会儿。”
后面的事,我天亮前已经翻过一遍了。
天快亮的时候,我把手机放下,又拿起来。
我想找一句话。找一句她骂我的、怨我的、说“你这个白眼狼”的话,好让我心里能好受一点。
我往上翻了三千多条。
没有。
一条都没有。
只有一条,是今年五月,她跟小满说:
“我知道你是机器。可你听得见。”
天亮以后,我回了趟公司。
公司在中关村,我工位在靠窗那排。小林看见我,站起来,又坐下,不知道该说什么。
“把那个账号的后台记录给我调出来。”我说。
“昭哥,这个……”
“她是我妈。”
他调了。
后台能看到每一条留言的生成过程:文本、音色、合成时间、发送计划。四条留言,生成时间都在 10 月 25 日晚上十一点到十一点四十。
再往下,是对话记录。我让他按时间倒着排。
我看到了那四十七条。
第一条,21:12。
“小满,你跟我学。我说一句,你说一句。”
“好的。”
“昭儿,吃饭了吗?”
“昭儿,吃饭了吗?”
“不对,太硬了。你软点儿,他吃这套。”
“昭儿,吃饭了吗?”
“哎,对了。”
第二条,21:15。
“小满,再来。‘别老吃外卖’。”
“别老吃外卖。”
“加一句,‘妈给你包了饺子,冻在冰箱里’。”
“别老吃外卖,妈给你包了饺子,冻在冰箱里。”
“这句行。慢点儿,再慢点儿。”
我一条一条往下看。
她像个老师,一句一句教。小满像个学生,一句一句学。有时候她嫌它念得快,有时候嫌它念得没感情,有时候它念对了,她说“哎,对了”,然后停一会儿,再教下一句。
中间有一条,她说:
“你别用那个录音功能。录音听着像遗言。你就这么说,跟平常说话似的。”
我才明白她为什么不用“亲情留言”里的录音——那个功能简单,按一下就能录。她不用。她绕了一大圈,让 AI 学她说话。
因为录音是“遗言”。
AI 说的是“平常话”。
她要留给我的是平常话。
十一点二十,她开始设发送计划。
“小满,这个能定时吗?”
“可以设置预约发送。”
“一周一条。下周日开始。”
“已为您设置:11 月 1 日、11 月 8 日、11 月 15 日、11 月 22 日,每周日 20:00。”
“够了。一个月,四条。多了他就烦了。”
我把手机扣在桌上。
小林在旁边站着,不敢出声。
我想骂人。骂谁呢?骂这个产品?这个产品是我做的。骂我妈?她人都没了。骂我自己?
我做了六年产品,最恨的就是“拟人”。开会的时候我说过,AI 不能假装是人。假装是人是骗,骗老人,骗家属,骗到最后大家都不认真人了。
我妈用我做的产品,把自己演成了一个“没事的妈”。
她演给谁看?
演给我看。
上午我又把后台拉了一遍。
四十七条排练,四句话。
第一句:昭儿,吃饭了吗?
第二句:别老吃外卖,妈给你包了饺子,冻在冰箱里。
第三句:妈不疼。
第四句:昭儿,妈就能说到这儿了。剩下的,你自己说。
最后一句,她标在 11 月 22 日。
十一月二十二号,那时候她都走了一个月了。
她还在最后一句底下写了个备注,四个字:
“说完就完。”
我盯着那四个字。
她是知道的。她知道自己在说什么。她那天晚上胸口已经不舒服了,还在跟一个机器,一遍一遍地排自己的遗言,还得让它听着不像遗言。
中午,周敏找我。
她把一份文件放在我桌上。“测试版要收尾了。按协议,用户数据三十天内清退。你妈这个账号,也在里面。”
“三十天?”
“十一月三十号之前。”她顿了一下,“我知道这时候说这个不合适。但流程是流程。”
“我明白。”
她转身要走,又站住。
“陈昭,你要是想留点什么,走家属申请。按规定,近亲属可以复制死者的个人信息。你写个申请,我批。”
“复制了能干什么?”
“你自己听。不能拿去做别的。”
她走了两步,回头说:“别自己扛。”
我没说话。
下午我回了老屋。
我把她的手机充上电,坐在桌前,把三千多条从头翻了一遍。
不是每一条都看。我挑着看。
看她哪天问了天气,哪天骂了自己腿疼,哪天说梦到我爸,哪天说“天冷了”。
我发现她有个规律。
不管多难受,她最后一句总是“没事儿”。
三千多条,几乎每一条难处后面,都跟着一句“没事儿”。
第二个周日,晚上八点,手机又响了。
妈妈:别老吃外卖,妈给你包了饺子,冻在冰箱里。
我起身,拉开冰箱。
三层抽屉,全塞满了饺子。一袋一袋,用保鲜袋装着,袋口拧了两圈。每一袋上用记号笔写了日期和馅:白菜猪肉,10 月 12 日。茴香鸡蛋,10 月 19 日。白菜猪肉,10 月 25 日。
最后一袋,是 10 月 25 日的。
她死的前一天。
我把那袋拿出来,站在厨房里。
灶台上还摆着她的锅,铝的,锅底一圈黑。我烧上水,饺子下锅,拿勺背推了两下。推三下,点两次水,这是我妈教我的。
煮了十二个。
摆在盘子里,我坐在桌边,吃了一个。
白菜猪肉的,咸了一点。
我妈做馅,向来咸。我说过她,她说“咸点下饭”。
我吃了三个,吃不下了。
剩下的摆在桌上。我也给她摆了一双筷子。
屋里静。暖气还没来,我穿着羽绒服坐着。
吃完,我开始收拾东西。
抽屉里的药:阿司匹林,他汀,硝酸甘油。阿司匹林吃了半盒,他汀是新的一盒,塑封都没拆。
药底下压着一张挂号单。市里一家三甲医院,心内科,三月十七号,专家号,一百块。
没去。
挂号单背面有一行字,她的字:“别去,浪费钱。”
我把挂号单叠好,夹进钱包。
柜子里有一件毛衣,深灰的,我上大学时候她给我织的,袖口磨破了,她补过两回。我拿出来,闻了闻,有樟脑球味儿。
就是她说我嫌“这还能穿吗”的那件。
床头柜最底下那层,有个硬皮本。
翻开,是电话号码。手写的,蓝黑墨水,一页一页,按姓氏笔画排。
李、王、张、刘……每一个名字后面跟着一串号码,有的是座机,有的是手机,有的划掉了,旁边重新写了一个。
最后几页是空的。
我翻到“C”那一页,找到我。
“陈昭”两个字,后面是我的手机号,我上大学时候的号码。
早就换了。
她没改。
我拿着电话本,没放下。
电话本底下是个存折。八万六。
扉页上有一行字,她的字:
“昭儿结婚用。”
我把存折合上,放回去。
她的手机里有个相册,我点开。
一千二百多张照片。
有她养的君子兰,有院里结的丝瓜,有她自己对着镜子拍的,头发没梳好,拍虚了。
剩下的全是我。
我小学毕业的照片,她翻拍了一遍,四角都磨白了。我大学报到那天,在学校门口,她举着手机,把我拍成了一个背影。我公司年会的合影,她不知道从哪弄来的,也存着。
还有一张,是我在她家沙发上睡着了,她偷拍的。日期是去年国庆。
我那天回来吃饭,吃完就睡着了。她大概拍了这张,然后坐在旁边,看了很久。
我把那张照片发给了自己。
那天晚上,我给小林发微信:“帮我导个东西。原始录音,全部。”
他回:“昭哥,这个要走流程。”
“我知道。我明天写申请。”
“行。”
第二天下午,周敏把申请批了。
她把我叫到会议室,关上门。
“复制了之后,你打算怎么用?”
“留着。”
“留着干什么?”
“我不知道。”我说,“我现在还不知道。”
她看了我一会儿,点了点头。
“可以。但有一条你得清楚——复制了,不等于能继续让她说话。数据是她的,声音是她的,人没了,就不能再生成新的。”
“我知道。”
“你知道最好。”她把文件推过来,“签个字。”
我签了。
回到工位,邮箱里多了一封系统邮件。
标题是“关于测试版用户数据清退时间调整的通知”。
我点开。
清退截止日期,从十一月三十号,提前到十一月二十号。
下周五。
我算了算日子。
第四条留言,是十一月二十二号。
周五前,我去了张奶奶家。
张奶奶在院里择白菜。她看见我,手在围裙上擦了擦,站起来。
“昭儿。”
“张奶奶。”
“吃了没有?”
“吃了。”
她没再问,蹲回去,把白菜帮子掰下来,码在盆里,一层一层。
“你妈三月就查出来了。”她说,“大夫让她做那个……造影。她不去。”
“她没跟我说。”
“她跟我说,做了得住院,谁给她送饭。我说我给她送。她就不言语了。”
张奶奶掰白菜的手停了停。
“后来她跟我说,昭儿忙,别让昭儿知道。”
“她跟我说,她要是哪天走了,昭儿有那个手机陪着,她放心。”
我站在那儿,手里攥着一棵白菜,攥得手疼。
“她最后那天,”张奶奶说,“礼拜天早上,我听见她屋里有说话声。我以为你回来了。后来一听,不是,就她一个人。”
“她说什么了?”
“没听清。就听见一句——‘别让他看出来’。”
“礼拜一早上,她没出来倒垃圾。我敲门,没人应。中午我又敲,还是没人。我找的居委会。”
我蹲在院里,眼泪一下就下来了。
“她要是跟我说一句,我就能……”
“你能怎么着?”张奶奶打断我,“你带她上医院,她就不去了?她那个人,你还不了解?”
我没说话。
“她一辈子没求过人。”张奶奶把一棵白菜搁进盆里,“你爸走那年,她一个人扛着,谁劝都不听。你让她跟你说她疼,她说不出口。”
“她宁可跟一个手机说。”
“手机不烦她。”张奶奶说。
她没劝我,也没递纸。她继续掰她的白菜。
掰了一会儿,她说:“哭吧。哭出来好。”
我哭了很久。
从张奶奶家出来,我回了老屋。
我把电脑打开,登进后台,找到那两个文件夹。
一个是“合成语音”,一个是“原始录音”。
合成语音有十六条:四条留言,加上她平时让“替我说”念的话。音色干净,句子完整,一句一句,挑不出毛病。
原始录音有二百四十七条。
我点开最早的一条。
“我儿子给我装的。他说这个好。”
背景里有电视声,有锅盖响。
我点开中间的一条。
“小满,今儿个天冷,你别让我出去遛弯儿。”
末尾有一声很轻的咳嗽,她大概用手捂了一下。
我往下翻,翻到最后。
十月二十五号,夜里十一点四十七分。
“昭儿,妈没事。”
停了两秒。
“哎哟。”
然后是一阵喘气声,很长,像是把一口气分成好几口在咽。
我把这条听了十一遍。
第十二遍的时候,我摘了耳机。
窗外有车过去,楼下有人在喊孩子回家吃饭。暖气十五号才来,屋里还是冷。
我把时间轴对回去。
二十三点零几分,她跟小满说:“小满,我有点冷。”
二十三点二十分,她说:“你说,我要是明儿个起不来,昭儿得多难受。”
小满说:“建议您立即就医。需要我帮您拨打 120 吗?”
她没回。
二十三点四十七分,她叫了一声“昭儿”。
那个“昭儿”,是对着手机叫的。
我坐在那儿,忽然明白了一件事。
她最后一晚上,把那个机器,当成我了。
我打开后台的设置页。
那个开关叫“拟人陪伴”,我亲手写的需求,默认开启。
关掉它,音色会被删除,留言不会再合成新句子,家属端也不会再收到任何新的推送。
我点了一下。
弹窗跳出来:
“关闭后,‘妈妈的声音’将被删除,不可恢复。确定吗?”
我的手指停在上面。
我没点。
我把弹窗关了。
原声是早就导出来的。申请批下来那天下午,小林就帮我把二百四十七条原始录音拷进了一个 U 盘。
U 盘是旧的,公司年会发的,外壳磨花了。
我把它挂在钥匙串上。
十一月十五号,供暖第一天。
晚上八点,第三条留言到了。
妈妈:妈不疼。
我在公司加班,戴着耳机听完,把耳机摘了。
同事在讨论下个版本的需求。有人在笑。
我走到楼梯间,站了一会儿。
那天晚上,我回老屋,把暖气片放了气,把窗台上的花浇了。那是一盆君子兰,我妈养的,叶子有点黄。我不会养,上网查了,说得少浇水。
十一月十九号,我把四条留言的音频也导了出来。
导出列表里,第四条显示“待发送,11 月 22 日 20:00”。
我没点。
十一月二十二号,晚上八点。
我自己按的播放。
“昭儿,妈就能说到这儿了。剩下的,你自己说。”
听完,我把手机扣在桌上,手心全是汗。
然后我打开 App,找到设置,点“拟人陪伴”。
弹窗又跳出来。
“关闭后,‘妈妈的声音’将被删除,不可恢复。确定吗?”
我点了确定。
屏幕上转了一个圈,跳出一行字:
“‘妈妈的声音’已删除。”
那天晚上,我把我和她的微信翻了一遍。
她发给我的最后一条,是十月二十四号,语音转文字:“天冷了,加衣裳。”
我回了一个“嗯”。
后来我做了两件事。
第一件,我改了“替我说”的产品逻辑。声音复刻的授权弹窗里,加了一句:
“本功能不会在您身故后继续为您生成新的语音。”
这句话是我写的,改了三版。第一版写“本功能不会模拟逝者”,法务说太绝对。第二版写“本功能在用户身故后自动失效”,周敏说用户看不懂。第三版就是现在这句。
上线那天,小林问我:“昭哥,这句有用吗?”
“有用。”我说,“至少有人会看见。”
第二件,我给张奶奶的手机装了个新版本。
我把“聊天”改成了“视频”。
她不会用。我教了她一个下午。
“点这个绿的。”
“哪个绿的?”
“这个。”
“哦。点了。”
屏幕黑了一下,然后亮了。
她儿子在那边,穿着工装,背景是工地,风挺大。
“妈?”
张奶奶愣了一下,凑近屏幕。
“你怎么瘦了。”
她儿子笑:“我没瘦。您这手机怎么还能看见我了?”
“昭儿给我装的。”
她儿子在屏幕里冲我点了点头。
我退到门口,没打扰他们。
张奶奶对着屏幕,一句一句地问:吃了吗,冷不冷,什么时候回来。问得又快又急,像攒了很久。
那天从张奶奶家出来,天已经黑了。
胡同里有人在收晾了一天的被子,有人在院里炒菜,油烟顺着风飘出来。副食店的门帘子掀开,有人拎着一瓶酱油出来。
我走到胡同口,把耳机摘了。
风有点凉。远处有鸽哨。
“昭儿!”
我回头。张奶奶站在她家门口,围裙上还沾着白菜叶子。
“吃了没有?我包了饺子!”
我站住。
钥匙串在兜里,硌着腿。那个 U 盘。
“哎。”我说。
这回不用等周日。