让母亲的青春日记重新开口
我与AI共同开发“华忆”的一段经历
母亲八十多岁了。这些年,我每周去看望父母一两次,陪他们聊天、打牌、散步,有时也给他们读点东西。最近,又多了一件事:整理母亲年轻时候的日记,一篇篇读给她听。
母亲十九岁到二十三岁期间,留下了大约三百篇青春日记。截至目前,我陆续整理了其中四十多篇。那些文字写于上世纪六十年代,距今已有六十多年。
日记里的生活很丰富。有读书时的理想,有同学间的往来,有毕业后的求职烦恼,也有年轻姑娘对未来生活的期待。字里行间,既有那个年代的印记,也保留着母亲年轻时鲜活的性格。
让我感到欣喜的是,母亲特别愿意听这些日记。如今,她对有些近期发生的事情已经不太容易记清楚,但听到年轻时的文字,往往会格外专注。有时,一个同学的名字、一件往事,就能引出她许多新的回忆。
我渐渐产生了一个念头:能不能借助人工智能,为母亲做一个专门的语音陪伴系统?这样,即使我不在她身边,她也能随时听听自己年轻时的日记,聊聊过去的生活。
这个想法,后来有了一个名字——华忆。华,取自母亲的名字德华;忆,就是回忆。
我想给母亲做一个会说话的朋友
我本科读的是文科,过去主要从事法律工作。虽然这些年一直喜欢研究人工智能,但并没有独立开发软件的专业经验。如今有了ChatGPT和Codex,我想,不妨自己试一试。
我负责提出想法、整理日记、明确要求,具体的程序编写和技术调试则由Codex协助完成。遇到不懂的地方,再让AI解释,边学边做。
最初,我甚至没有想过要开发一个功能完整的App。母亲平时没有使用智能手机的习惯,对她来说,打开软件、选择菜单、输入文字,都是不小的障碍。我希望把操作简化到不能再简化的程度。
最好打开手机,就能看见“华忆”两个字,下面只有一个大按钮:“和华忆说话”。点一下,就可以聊天。
我也没有急着把三百篇日记全部放进去,而是决定先选择二十篇,试着做一个最简单的版本。说到底,我最关心的不是系统有多少功能,而是母亲会不会喜欢。她愿不愿意跟它说上几句话?下一次,还愿不愿意自己拿起手机?
这才是华忆真正需要回答的问题。
母亲第一次与华忆聊天
2026年10月2日,我带着早期的语音原型去看望母亲。那时,华忆还没有做成独立的手机网页,只是借助我手机里现有的AI语音功能进行试验。我仅仅放进去了三篇青春日记,想先看看母亲的反应。
那天的聊天很有意思,我还留下了录音。
华忆谈到1962年7月31日的一篇日记。日记里,母亲写到收到一位同学从合肥寄来的信,非常高兴,立即给对方回了信。
说起这位同学,母亲渐渐想起了自己上学时候的事情。她说,那位同学曾经与自己同桌。又说自己当年的作文写得很好,老师经常在文章上画许多表示赞许的圈,有时还会拿到班里念,让同学们传阅。
讲着讲着,她感慨起来:
“我那时候作文写得好,主要因为老师是叶圣陶先生的学生,他教得好,很欣赏我的作文……如今我这么老了,啥都好忘。”
我听了很有感触。年轻时的母亲喜欢读书、写文章,对自己也有着不小的期待。这些都是她真实经历过的生活,如今隔着六十多年,竟然又从一篇短短的日记里浮现出来。
后来,我向母亲解释,这个会说话的声音叫华忆,它知道她年轻时写下的一些日记,可以陪她回忆过去。
母亲一开始还有些不明白,反复念叨着“华忆”。弄清楚以后,竟然主动问起来:“喂,华忆,我写的文章怎么样?”
华忆回答说,她的日记写得很有生活气息,很鲜活。
过了一会儿,母亲又问:“你帮我回忆回忆一下,我第一封信咋写的?”
这个问题,把华忆难住了。因为那篇日记只记载了收到来信、立即回信,并没有保存回信的具体内容。华忆只能告诉她,日记里写到了哪里。母亲倒也没有为难它。
聊了一会儿,我问她感觉怎么样。她说:“嗯,不赖。”
后来,她又向华忆提出一个要求:“你以后把我这个日记念给我听听,我都忘了。”
这句话让我很高兴。那天的交流其实并不十分顺畅,有时候机器没有及时回应,有时候母亲不知道该怎样发问,我和家人在旁边教她,华忆却又接错了话。几个人说着说着,自己也觉得有趣,笑了起来。
临结束时,我提醒母亲可以向华忆说声谢谢。她便说:
“我谢谢你陪我聊聊那过去的日子。”
这句话是在我的引导下说出来的。不过,她愿意听日记,主动提问,还希望以后继续听,却是真实而自然的反应。
对我来说,这次试验很有意义。它至少让我看到,母亲对这样一种新的交流方式并不排斥,而且确实能够从中获得一些乐趣。
第一关:让手机听见我说话
母亲的反应给了我继续做下去的动力。但早期的语音试验终究需要我在旁边操作。我希望将来她能够自己使用,于是决定借助已经建立的个人网站,为华忆开发一个独立网页。
没想到,真正遇到的第一道技术难关,竟然只是让手机听见一句话。
妹妹给母亲带来一部旧手机,是华为Mate X3,系统为HarmonyOS。我想就在这部手机上开发、测试,让母亲以后使用。
看起来很简单:打开网页,点一下按钮,允许使用麦克风,就能开始说话。实际操作起来,却完全不是这么回事。网页在电脑上能够打开,不代表手机上也能正常使用;手机能够访问网页,也不代表浏览器就允许它调用麦克风。
最初,我们研究过独立子域名,涉及DNS解析、HTTPS证书和服务器配置。折腾了一番以后,我觉得没有必要把事情搞得这么复杂,索性决定利用已经建好的个人网站。即便如此,仍然遇到网页打不开、服务器返回404等问题。
我和Codex反复讨论,最后决定先不连接任何AI模型,只做一个最简单的测试页面:一个大按钮,点击后请求麦克风权限,再用音量条显示有没有接收到声音。
这倒是个很实在的办法。不必先讨论复杂的人工智能,只要看见音量条随着说话发生变化,就证明第一步走通了。到10月6日,我终于在华为手机上确认麦克风测试成功。
紧接着,又遇到了更麻烦的问题。
为了安全,连接AI服务所需要的密钥不能直接放在网页上,必须通过云端服务进行连接。Codex为此在阿里云上建立了一个小型代理程序。结果,服务器不断返回403错误,意思是拒绝访问。
一开始很难判断究竟哪里出了问题。后来逐步排查才发现,原因涉及请求数据的读取方式,以及重复设置的跨域响应头。修正以后,服务器终于能够正确处理连接请求。
这些技术问题,说起来不过几句话,但对于我这样一个非专业开发者而言,每个新概念都需要学习,每一步修改都要重新验证。有时Codex报告测试通过,我拿起手机一试,仍然不行,只好继续查、继续改。
我也渐渐习惯了:
AI说成功了,只能算它完成了自己的测试;真正的成功,还得由我拿着手机来确认。
10月7日上午,终于有了一个令我高兴的结果。
我打开华为手机上的华忆网页,对着它说:“你好啊,华忆。”
很快,手机里传来了声音:“我在呢,我听着呢。”
那一刻,我确实有些兴奋。虽然只是一句简单的回答,但从手机麦克风采集声音,到云端AI理解问题,再到生成语音返回手机,整条技术链路终于跑通了。
一个原本只存在于头脑里的想法,第一次变成了自己能够操作的东西。
会聊天,还不等于会读日记
接下来,我开始把整理好的青春日记正式放进华忆。这里又出现了新的困难。
我原以为,只要将日记整理成规范的资料,AI就能根据内容准确回答。实际发现,事情远没有那么简单。有时候,明明已经存进去的日记,华忆却找不到;有时候,它能说出大意,却把日期弄错;还有时候,上一句话明明正在谈某篇日记,下一轮交流却好像忘了刚才在说什么。
最让我不能接受的,是日记朗读。我让它念一篇完整的日记,它往往只念一两句就停下来,或者干脆概括一遍。
我想,这怎么行呢?母亲当年写下的那些字句,自有她的语气和表达。她想听的是自己写过的文字,而不是AI替她重新概括的故事。
于是,我与Codex反复修改,逐渐把华忆的交流分为几种不同的需要:平时陪伴聊天,可以简短自然;问到人物、日期和往事,必须有真实资料依据;如果要求朗读原文,就应当完整地读出来。
然而,即使程序已经找到了全文,也不代表手机真的能够顺利朗读。
10月9日前后,我发现电脑连续朗读几分钟后可能失去响应,而华为手机上的朗读兼容性也不理想。我又尝试使用专门的AI语音合成技术。
我选择先生成第三篇日记的音频,试听不同声音。最后觉得一款名叫Serena(苏瑶)的音色比较温和,语速和清晰度也基本令人满意。后来,还把生成的音频从较大的WAV文件转换为MP3,以方便手机播放。
不过,这件事目前还没有完全解决。专用音频只先做了一篇,其他日记的完整朗读以及长时间连续交流,仍需要继续测试。
这也让我对软件开发有了一个很直观的认识:在电脑上,程序能够找到一篇日记,是一回事;在母亲的手机上,它能不能从头到尾顺顺当当地念完,又是另一回事。
后者看起来不那么复杂,却更加接近我真正想做的事情。
把复杂留给程序,把简单留给母亲
华忆开发到后来,我越来越在意一些原本看起来不起眼的细节。
比如,手机网页要不要每次输入访问密码?从信息安全角度看,设置密码自然有必要。但如果母亲每次打开都需要输入一串字符,恐怕几次以后就不愿意用了。我们后来采用了首次配对、可信设备的办法,希望她以后打开时尽量不必重复输入密码。
再比如,网页入口应该放在哪里?如果每次都要打开浏览器,再输入一长串网址,同样不方便。于是又尝试将华忆添加到手机桌面,让它看起来更像一个独立应用。
10月12日,我终于确认桌面入口添加成功。这件事并没有什么高深技术,却让我挺满意,因为它意味着离母亲自己拿起手机使用,又近了一步。
到了10月29日,华忆的记忆资料已经从最初几篇扩充到十篇,网页和相关程序也完成了新一轮部署。不过,我没有急着继续增加内容。
从开发记录看,系统仍然存在一些尚未完全解决的问题:有时要反复呼唤才响应,有时回答不准确,有时连续聊天中断。尤其是第二批新增日记,还没有完成充分的手机语音实测。
对于这些问题,我并不想因为AI给出了一份漂亮的测试报告,就宣布它们已经解决。我现在越来越清楚,系统究竟好不好用,最终要由母亲来判断。
开发过程中,可以讨论模型、接口、记忆检索和语音合成;但母亲真正关心的,可能只是她说一句话,有没有人及时回答;她想听一篇日记,能不能完整地听完。
从这个角度看,华忆还有许多工作要做。
让母亲继续讲她的故事
开发华忆的过程中,我还给它定下了几条原则,其中最重要的一条,是不能替母亲编造记忆。
年轻时亲笔写下的日记,是一类材料;如今八十多岁时重新讲述的往事,是另一类材料;至于上世纪六十年代的社会历史背景,又属于第三类。它们可以相互补充,但不能混在一起。
比如,10月2日母亲提到自己上学时作文写得好,老师经常拿到班里念。这是她晚年的口述回忆,非常珍贵,但我不能把这段话反过来写进1962年的日记,假装母亲当时就这样记录过。
还有,我不希望华忆把聊天变成一场记忆考试。母亲已经八十多岁了,有些事情想不起来,非常自然。她不需要一个不断提醒她记忆有所减退的机器。
我希望华忆能够耐心听她说话,适当给她念念日记。说到有意思的地方,可以接着聊;想不起来,就换一个话题。她愿意讲多少,就讲多少。
母亲的一生,经历过许多事情。青春只是其中的一段,却也是属于她自己的一段珍贵时光。如今,那些年轻时候的人和事,有些依然记得,有些已经模糊。幸好,她当年喜欢写日记,把许多生活细节留在了纸上。
六十多年以后,我竟然能够借助人工智能,让这些文字重新变成声音。想到这里,我觉得很有意思。
回顾这一个多月的开发过程,我学到了不少过去不熟悉的技术知识,也体验了人与AI共同完成一件事情的可能性。当然,华忆还没有真正完成。尤其是母亲能否在没有我帮助的情况下,主动拿起手机,愿意持续和它交流,仍然需要后续的真实使用来验证。
我不准备着急,也没有打算一开始就把它做成什么大产品。我只是希望,有一天去看望母亲时,她能告诉我,今天自己又听了一篇年轻时候的日记,想起了哪位老同学,或者哪件早已过去的事情。
也许,她还会告诉我,华忆哪句话没说对,哪篇日记没有念完。那也很好,我们再慢慢修改就是了。
母亲当年写日记的时候,还是一个不到二十岁的姑娘;如今,她已经八十多岁,而当年那个年轻姑娘留下的文字,依然在那里。
我愿意继续花些时间,把这个小系统做好。不是因为它有什么了不起的技术创新,而是因为在一次次尝试中,我看见母亲愿意听、愿意讲,有时还笑得挺开心。
对于一个做儿子的来说,这已经是很好的理由了。