上周二赶早高峰挤2号线,被人潮夹在车门边,手里攥着半块刚买的蒸饭,腾不出手点外卖,索性对着手机麦克风喊——”帮我点杯少冰三分糖的乌龙奶绿,送到新街口站出口”。
等了三秒。
屏幕上跳出来的字是:”帮我点杯少冰三分糖的乌龙卖驴,送到新街口站出口”。
周围几个低头刷手机的人突然抬头看我。
社死到脚趾在鞋里抠出三层地下通道。
它根本不是在”逐字听”你的话
很多人遇到识别错的情况,第一反应是自己普通话不标准,l和n不分,平翘舌咬不准,对着麦克风反复练发音。
真不是你发音的问题。
它从来不会真的”听懂”你在说什么,只会计算”你现在发出来的声音,最匹配训练库里的哪一段文字”。
你说话的声音传到麦克风里,会被拆成无数个20毫秒左右的小声波碎片,每个碎片对应一组声学特征:有没有鼻音,是送气还是不送气,频率是高还是低。系统会把这些特征跟训练时喂进去的几百万小时的普通话、方言、带噪声的语料库做比对,算出每个可能的字出现的概率,选概率最高的那个拼成句子,根本不存在”逐字抠发音”这回事。
就像你蒙着眼站在一堆调料瓶前面,靠闻味道猜哪个是盐,哪个是糖,偶尔把混了辣椒面的糖当成盐,太正常了。

上次我带南京郊区的外婆试语音输入,外婆一口地道的江宁腔,说”阿要辣油啊”,之前老版本的输入法识别了三次,分别出来”阿要腊有啊””阿要那有啊”,换了新版本之后一次就对。不是外婆突然说标准普通话了,是训练库最近塞进去了更多带江宁口音的日常语料,概率算对了而已。
那些让它当场”死机”的破场景,真不是你普通话不行
上次在新街口正洪街等朋友,旁边的活珠子摊子老板扯着嗓子喊”十块钱四个,现煮的!”,我对着手机说”帮我找下附近评分高的鸭血粉丝汤店”。
识别结果跳出来:”帮我找下附近评分高的活珠子粉丝汤店”。
导航直接把我导到了那个卖活珠子的摊子。
真正拉低识别准确率的,从来不是你带口音的普通话,是那些混在你说话声音里的、毫无规律的环境噪声。
系统哪分得清哪个声音是你说的,哪个是旁边摊子老板喊的?只要那个声音的频率跟你说的话凑到一块,它就会一股脑算进去。你在地铁里说话,风灌到麦克风的呼呼声,商场里放的背景音乐的鼓点,甚至你嘴里嚼着蒸饭、咬着锅巴说话的含糊音,都会被它当成你发音的一部分。
之前我嚼着脆烧饼跟手机说”给我妈打个电话”,系统识别成”给我妈打个电花”,差点把电话拨给了通讯录里存的”老王电烤串”。

说个冷知识:现在的语音识别系统,对故意捏着嗓子说的”标准普通话”,识别准确率反而比你平时自然说话低。因为训练库里的语料,全是大家平时聊天的自然发音,你一捏嗓子,声音的特征变了,它算来算去算不对,还不如你平时带点南京腔的大白话来得准。
它看起来很智能,其实根本没在”理解”你
很多人觉得现在的语音识别厉害到能读心了——你刚说到一半,它就把你整句话补全了,甚至能根据你之前的聊天内容,自动选对选项。
别被它骗了。
所谓的智能上下文联想,本质上只是把你最近聊过的关键词,权重拉得比别的内容高一点而已。
上周我前一天刚跟同事聊完,说下周团建要坐高铁去苏州,结果第二天我在烤鸭店排队,对着手机说”帮我订张今天的烤鸭”,系统直接给我跳了一张南京到苏州的高铁票,12306的提醒弹出来的时候,我手里的烤鸭券都差点掉地上。
它哪知道你要订的是烤鸭啊,它只知道你最近提过”订张票”这个关键词,刚好你说的话开头有”帮我订张”,就直接把权重最高的高铁票选项推给你了。
上次刷到个网友吐槽,说自己前一天刚看完《狂飙》的解说,第二天对着语音输入说”我家猫今天把沙发抓坏了”,系统给识别成”我家高启强今天把沙发抓坏了”,给警察都整紧张了。
说穿了,现在的语音识别,还是个靠概率吃饭的工具而已。
你别在风大的地方凑着麦克风猛喊,稍微离个十厘米,减少呼吸的风噪;别故意端着架子说普通话,就像平时跟朋友聊天那样自然说;别在吵得要死的大排档跟它说要订机票,它真的会给你订错到烤串店。
哦对,上次我在大排档对着语音识别说”帮我把这张照片修亮一点”,它给我识别成”帮我把这张照片修两斤”。
你看。
它从来就没真的懂过你。
只是算的概率,偶尔蒙对而已。
别跟它置气。算错了就重说一遍,它要是敢把你说的”阿要辣油啊”识别成”阿要腊有啊”,大不了换个输入法就是了。