18 号晚锤子手机发布会上,让老罗始料未及的除了新手机赚足关注目光外,还意外地让我司产品 —— 讯飞输入法火了起来。其实,讯飞输入法早在 2010 年 10 月 28 日推出(是的,今天是讯飞输入法六周年!),初面世就支持语音输入,是业界最早实现语音输入的输入法。正如老罗发布会所展现的那样,以老罗的语速和口音,发布会现场识别准确率竟然 100%。
高识别率如何炼就
所谓“识别一秒钟,线下十年功”,讯飞输入法语音输入 97% 的正确率,是如何炼就的呢?
首先,想让语音秒变文字,首先得让机器“听懂”你在说什么。这项技术,我们称为——语音识别(Speech Recognition)。语音识别就好比“机器的听觉系统”,让机器通过识别和理解,能够把语音信号转变为相应的文本或命令。
事实上,在极短的时间内,机器内的语音识别系统已经经历了一个极为复杂的分析过程。而为了使语音识别系统有能力、更精确的进行这个分析过程,同样也需要花大力气提前准备好模型等相关资源。
(图:主流的语音识别系统框架图)
当你对着手机说话时,目标语音首先被数字化并送入系统的前端模块,前端模块主要包含语音信号处理和语音特征处理两部分。其中信号处理部分是为了改善识别效果受环境噪声、信道畸变等因素的影响,而特征处理则是将输入语音进行某种符合语音识别需求的“转换”(让手机听懂“人话”)。
除此以外,一个好的前端模块还需提升语音识别系统鲁棒性(Robust 音译,稳健的意思,也可以理解为不“宕机”)的重要因素。在确定了上述的语音特征处理等规则之后,接下来的任务就是教会机器听懂人话,这个教学过程就是语音识别系统的模型训练阶段了。
模型训练一般又分为声学模型训练和语言模型训练。其中声学模型训练是教会机器学会“哪个字词发什么音、该怎么连在一起读”,有点像我们小学时候跟着老师读拼音的赶脚,而语言模型训练是教会机器“什么样的命令或文字组合是合理的、更常见的”,我们通过将包罗万象的百科全书输入到机器的“记忆”中并通过合适的方式引导它“阅读”,使得机器可以“出口成章”。
在完成后台的模型训练和输入语音的前端处理以后,我们就可以将他们一起送入语音识别系统的解码引擎了。解码引擎的工作是在一个巨大的网络里边进行搜索,这个网络由数亿节点及弧组成,并且里边已经糅合了前边所描述的声学模型以及语言模型信息,搜索出来的最优路径上所携带的信息就是对应的语音识别结果了。
解码引擎的运算效率至关重要,直接影响到用户体验。目前,科大讯飞的解码引擎可以在用户说完话 40 毫秒之内给出结果。并且,通过把国际领先的深度神经网络技术引入语音识别,通过海量训练语料基础上的高精度声学模型和语言模型训练,并结合极致的解码引擎工程技术,给识别效果和识别速度带来了跨越式的提升。大词汇连续语音识别率达到 97% 以上,“秒懂”已不再是幻想。
没想到吧,老罗那几百字的即兴语音输入,背后竟蕴含着如此复杂的技术。
语音识别还有哪些“花样”
要想成为国际语音识别的“扛把子”,光识别率高是远远不够的。所以,我们还玩出了其他的“花样”。
【听得懂方言】
中国地大物博、幅员辽阔。吃的五花八门,说的更是各有特色。对于普通话不“普通”的人来说,机器能听懂“方言”吗。
目前讯飞输入法已经支持合肥话、四川话、客家话、山东话、东北话、粤语、客家话等 19 种方言的识别。
让机器懂方言,怎么实现呢?
先从数据方面说起,其实科大讯飞的普通话水平测试覆盖全国 31 个省,超过 1500 万考生参加了测试,他们的发音真实反映了全国各地的方言发音特色。借助这些海量普通话水平测试的数据,我们对全国各地的方言现象,都持续通过自动挖掘并配合人工辅助的方式积累了一套基于知识或规则的资源。
讯飞开放平台自 2010 年发布至今,覆盖终端用户数超过 8.9 亿,日服务量达 30 亿次。通过结合基于 PSC 数据训练的模型对这些真实数据进行自动分析和分类,可以对各地区方言数据产生很好的补充,进一步发挥迭代优化的作用。
在技术方面,我们分别针对全国八大方言区各自的特性来构建独立的方言识别系统。考虑到方言训练数据量相对于普通话数据明显稀少,我们采用独特的“受限多方言混合深度神经网络”方案来完成相应模型的构建。方言资源的累积过程和方言模型训练过程详见下图。
(图:方言识别系统构建流程图)
利用这样的方案,讯飞也成为业界可以对方言进行识别独家。
【离线也可识别】
现在很多智能设备离开网络,就成了“板砖”。其实,要做到“离线识别”在技术上存在很大难度。要实现精准的语音识别,超强的计算能力和超大的内存空间是必需品,以我们云计算方式的语音识别为例,运算服务器需要搭载几十核心的 CPU 以及上百 G 的内存,这样的配置在我们智能终端上是可望不可及的。在智能终端区区几十 M 可用内存以及双核甚至单核的计算能力的基础上,要想获得不错的识别效果,这是一个巨大的挑战!
这个难关,已经被我们突破了哦~
在没有网络环境情况下也能进行识别,这项技术便是我们所说的“离线识别”。科大讯飞采用了创新的模型压缩技术及帧半同步解码方案,率先推出了业界首个达实用的离线语音听写引擎,将近乎不可能变成了可能。在常用领域识别准确率接近云端效果,成为语音云听写服务的有效补充,是目前业界最轻量级识别效果最好的离线听写引擎。
没流量、信号弱... ... 都不再是语音识别的阻碍。
【个性化识别】
机器在这个时代,变得不再冷冰冰。人机交互的加深,机器日益懂的人类的需求。在语音识别领域,就指向为个性化识别也就是语音识别系统具备自动学习并适应用户使用习惯的能力。
一般来说,个性化识别包括发音和语言两方面。其中发音个性化主要是指系统对用户语速、口音等发音习惯的学习,而语言个性化主要是指系统可以对用户的特定词汇(例如通讯录、口头禅等)具备更好的辨识性。
比如,你像老罗那样说话的语速很快,这时,协同发音比较明显,传统识别系统的准确性一般会有下降趋势。往往说话速度越快,识别效果下降得越明显。
科大讯飞的语音识别系统一方面针对语速等发音现象设计了自动检测及规整算法,以降低其多变性对识别效果的影响;另一方面,通过国际领先的“基于说话人编码和 i-vector 的深度神经网络自适应算法”,以完全不需要人工干预的方式率先在产品中解决了深度学习框架下的说话人自适应问题。在加入这些发音个性化技术以后,即使在语速特别快的情况下,也能实现准确的识别。
除了上面的发音个性化以外,讯飞还实现了语言个性化,这项技术更加复杂,当然也更加实用。
语言个性化指系统能针对每个人的兴趣点、知识背景等来进行个性化语言模型建模,使系统的知识背景与说者一致,这样才能准确识别出用户个性化的词汇内容,让语音识别变得更加聪明,更懂用户。但这在通用的语言模型一般是无法完成对其的识别的,尤其在自由的上下文中识别出这些专属名词更是难上加难。
科大讯飞是如何解决这项难题的?
我们在方案上需要应用上“类别语言模型建模”和“动态语言模型建模”等核心技术。考虑到语音识别对实时响应的高要求,需要在极短的时间内,利用通用的超大规模静态语言模型和用户的个性化信息(例如通讯录人名、专有词库等)实时构建出动态的、超大规模个性化语言模型并完成解码过程,这些对技术的要求都是极高。
(图:语言个性化方案)
打个比方,这个过程就好像是“在全世界几十亿人中瞬间找到所有穿粉红色衣服的、自然卷的、穿耐克鞋的黑衣人”。 是不是有种“大海捞针”的感觉。
另外,【麦克风阵列】对语音识别也有“加持”的作用,前面就有篇文章专门提到这个技术,可以戳右边链接查看 自然的语音交互 —— 麦克风阵列