您的位置:首页 > 产品设计 > 产品经理

语音识别ASR” | AI产品经理需要了解的AI技术概念

2020-08-13 23:01 1216 查看

语音识别(Automatic Speech Recognition,简称ASR),博主经过多年淬炼,发现是语音交互中最基础的一个AI技术环节,大家可以先在手机上体验siri等各种语音助手,或者各种智能音箱,找找感觉:)

本文,是我收集了很多线上/线下的相关信息后,提炼出的AI产品经理“最必要”了解的ASR技术知识和行业现状(多了没必要,少了又不足以入门、准备面试或工作实战);不仅帮大家节省了时间,更是过滤了很多无用信息和过于技术的内容。

目录

一、核心概念:语音识别ASR、远场语音识别(语音激活检测VAD、语音唤醒、麦克风阵列、全双工、纠错)

二、当前技术边界

三、瓶颈和机会

附:相关资料(文章和书籍)

1

核心概念

1、语音识别(Automatic Speech Recognition),一般简称ASR;是将声音转化为文字的过程,相当于人类的耳朵。

1)语音识别原理流程:“输入——编码——解码——输出”

语音识别,大体可分为“传统”识别方式与“端到端”识别方式,其主要差异体现在声学模型上。“传统”方式的声学模型一般采用隐马尔可夫模型(HMM),而“端到端”方式一般采用深度神经网络(DNN)。

注:更多编码、解码等技术细节,感兴趣的同学可看《CUI三部曲之语音识别——机器如何听懂你的话?》http://t.cn/RKn1wnU (需要长按链接,复制后再用浏览器打开)

语音识别的应用,就这么简单?不是的,在实际场景,有很多种异常情况,都会导致语音识别的效果大打折扣,比如距离太远了不行,发音不标准不行,环境嘈杂不行,想打断也不行,等等。所以,还需要有各种解决方案来配合。

2)语音识别的评价指标——识别率

看纯引擎的识别率,以及不同信噪比状态下的识别率(信噪比模拟不同车速、车窗、空调状态等),还有在线/离线识别的区别。

实际工作中,一般识别率的直接指标是“WER(词错误率,Word Error Rate)”

定义:为了使识别出来的词序列和标准的词序列之间保持一致,需要进行替换、删除或者插入某些词,这些插入、替换或删除的词的总个数,除以标准的词序列中词的总个数的百分比,即为WER。

公式为:

Substitution——替换

Deletion——删除

Insertion——插入

N——单词数目

3点说明

A)WER可以分男女、快慢、口音、数字/英文/中文等情况,分别来看。

B)因为有插入词,所以理论上WER有可能大于100%,但实际中、特别是大样本量的时候,是不可能的,否则就太差了,不可能被商用。

C)站在纯产品体验角度,很多人会以为识别率应该等于“句子识别正确的个数/总的句子个数”,即“识别(正确)率等于96%”这种,实际工作中,这个应该指向“SER(句错误率,Sentence Error Rate)”,即“句子识别错误的个数/总的句子个数”。不过据说在实际工作中,一般句错误率是字错误率的2~3倍,所以可能就不怎么看了。

2、远场语音识别(Farfield Voice Recognition)

远场语音识别,简称远场识别,口语中可更简化为“远场”。下面主要说3个概念:语音激活检测、语音唤醒、以及麦克风阵列。

1)语音激活检测(voice active detection,VAD)

A)需求背景:在近场识别场景,比如使用语音输入法时,用户可以用手按着语音按键说话,结束之后松开,由于近场情况下信噪比(signal to noise ratio, SNR)比较高,信号清晰,简单算法也能做到有效可靠。但远场识别场景下,用户不能用手接触设备,这时受噪声影响比较大,SNR较低,必须使用VAD了。

B)定义:判断什么时候有语音/什么时候没有语音(静音)。

后续的语音信号处理或是语音识别,都是通过“VAD 检测的语音起始点帧位置”截取出来的有效语音片段上进行的。

2)语音唤醒 (keyword spotting,简称KWS;或voice trigger,VT)

A)需求背景:在近场识别时,用户可以点击按钮后直接说话,但是远场识别时,需要在VAD检测到人声之后,进行语音唤醒,相当于叫这个AI(机器人)的名字,引起ta的注意,比如苹果的“Hey Siri”,Google的“OK Google”,亚马逊Echo的“Alexa”等。

B)定义:可以理解为喊名字,引起听者的注意。

VT判断是唤醒(激活)词,那后续的语音就应该进行识别了;否则,不进行识别。

C)语音唤醒的应用交互模式

传统模式:先唤醒设备,等设备反馈后(提示音或亮灯),用户认为设备被唤醒了,再发出语音控制命令,缺点在于交互时间长;

One-shot:直接将唤醒词和工作命令一同说出,如“小雅小雅,我想听周杰伦的歌”;

Zero-shot:将常用用户指令设置为唤醒词,达到用户无感知唤醒,例如直接对车机说“导航到XX大厦”。

多唤醒:主要满足用户个性化的需求,给设备起多个名字。

D)语音唤醒的评价指标(也是难点)

a)唤醒率。叫AI的时候,ta成功被唤醒的比率(注:喊ta的时候,ta不答应,叫做漏报)。

b)误唤醒率(误报)。没叫AI的时候,ta自己跳出来讲话的比率;有时会按照“天”来算,比如要求“一天内不超过一次”。如果误唤醒比较多,特别比如半夜时,智能音箱突然开始唱歌或讲故事,会特别吓人的……

注1:唤醒率=唤醒中真实唤醒的数量/尝试唤醒的总数。这里特意强调“真实唤醒的数量”,是因为唤醒的总数据中,还会包含误唤醒的数据。

注2:关于准确率precision、召回率Recall等概念的辨析,可参考《AI产品经理需要了解的数据标注工作入门》中的“模型测试”小节。

c)唤醒词的音节长度。一般技术上要求,最少3个音节,如果音节太短,一般误唤醒率会比较高。比如“OK Google”和“Alexa”有四个音节,“Hey Siri”有三个音节;国内的小雅智能音箱,唤醒词是“小雅小雅”。不过,Rokid的唤醒词“若琪”,做到了只有两个音节,据说是全球唯一。

d)唤醒响应时间。之前看过傅盛的文章,说世界上所有的音箱,除了Echo和小雅智能音箱能达到1.5秒,其他的都在3秒以上。

e)功耗(要低)。看过报道,说iPhone 4s出现Siri,但直到iPhone 6s之后才允许不接电源的情况下直接喊“Hey Siri”进行语音唤醒;这是因为有6s上有一颗专门进行语音激活的低功耗芯片,当然算法和硬件要进行配合,算法也要进行优化。

E)语音识别和语音唤醒的本地/云端策略

语音识别:通用的ASR一般在云端,不过目前很多设备采用离在线融合的方式,一是解决无网状态下的语音识别,二是一些常用指令,靠离线引擎的更快,体验更好,三是有些厂商提供的个性化识别服务依赖本地模型。

语音唤醒:虽然很多具体产品的方案是离线方案,但目前亚马逊、苹果都明确在技术文档中表示,其使用了云端唤醒的方案(一级唤醒在本地,二级唤醒在云端)。

3)麦克风阵列(Microphone Array)

A)需求背景:在会议室、户外、商场等各种复杂环境下,会有噪音、混响、人声干扰、回声等各种问题。特别是远场环境,要求拾音麦克风的灵敏度高,这样才能在较远的距离下获得有效的音频振幅,同时近场环境下又不能爆音(振幅超过最大量化精度)。另外,家庭环境中的墙壁反射形成的混响对语音质量也有不可忽视的影响。

B)定义:由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。

C)能干什么

语音增强(Speech Enhancement):当语音信号被各种各样的噪声(包括语音)干扰甚至淹没后,从含噪声的语音信号中提取出纯净语音的过程。

声源定位(Source Localization):使用麦克风阵列来计算目标说话人的角度和距离,从而实现对目标说话人的跟踪以及后续的语音定向拾取。

去混响(Dereverberation):声波在室内传播时,要被墙壁、天花板、地板等障碍物形成反射声,并和直达声形成叠加,这种现象称为混响。

声源信号提取/分离:声源信号的提取就是从多个声音信号中提取出目标信号,声源信号分离技术则是将需要将多个混合声音全部提取出来。

D)分类

按阵列形状分:线性、环形、球形麦克风。在原理上,三者并无太大区别,只是由于空间构型不同,导致它们可分辨的空间范围也不同。比如,在声源定位上,线性阵列只有一维信息,只能分辨180度;环形阵列是平面阵列,有两维信息,能分辨360度;球性阵列是立体三维空间阵列,有三维信息,能区分360度方位角和180度俯仰角。

按麦克风个数分:单麦、双麦、多麦。麦克风的个数越多,对说话人的定位精度越高,在嘈杂环境下的拾音质量越高;但如果交互距离不是很远,或者在一般室内的安静环境下,5麦和8麦的定位效果差异不是很大。

傅盛曾说,全行业能做“6+1”麦克风阵列(环形对称分布6颗,圆心中间有1颗)的公司可能不超过两三家,包括猎户星空在内。而Google Home目前采用的是2mic的设计。

E)问题

距离太远时(比如10m、20m),录制信号的信噪比会很低,算法处理难度很大;

对于便携设备来说,受设备尺寸以及功耗的限制,麦克风的个数不能太多,阵列尺寸也不能太大。——分布式麦克风阵列技术则是解决当前问题的一个可能途径。

麦克风阵列技术仍然还有很大的提升空间,尤其是背景噪声很大的环境里,如家里开电视、开空调、开电扇,或者是在汽车里面等等。

整体来说,远场语音识别时,需要前后端结合去完成。一方面在前端使用麦克风阵列硬件,对声源定位并通过自适应波束进行语音增强,在前端完成远场拾音,并解决噪声、混响、回声等带来的影响。另一方面,由于近场、远场的语音信号,在声学上有一定的规律差异,所以在后端的语音识别上,还需要结合基于大数据训练、针对远场环境的声学模型,才能较好解决识别率的问题。

4)全双工(Full-Duplex)

A)需求背景:在传统的语音唤醒方案中,是一次唤醒后,进行语音识别和交互,交互完成再进入待唤醒状态。但是在实际人与人的交流中,人是可以与多人对话的,而且支持被其他人插入和打断。

B)定义:

单工:a和b说话,b只能听a说

半双工:参考对讲机,A:能不能听到我说话,over;B:可以可以,over

全双工:参考打电话,A:哎,老王啊!balabala……;B:balabala……

C)包含feature

人声检测、智能断句、拒识(无效的语音和无关说话内容)和回声消除(Automatic Echo Cancellation ,简称AEC,在播放的同时可以拾音)。

特别说下回声消除的需求背景:近场环境下,播放音乐或是语音播报的时候可以按键停止这些,但远场环境下,远端扬声器播放的音乐会回传给近端麦克风,此时就需要有效的回声消除算法来抑制远端信号的干扰。

5)纠错

A)需求背景:做了以上硬件、算法优化后,语音识别就会OK了吗?还不够。因为还会因为同音字(词)等各种异常情况,导致识别出来的文字有偏差,这时,就需要做“纠错”了。

B)用户主动纠错

比如用户语音说“我们今天,不对,明天晚上吃啥?”,经过云端的自然语言理解过程,可以直接显示用户真正希望的结果“我们明天晚上吃啥”

C)根据场景/功能领域不同,AI来主动纠错。这里,根据纠错目标数据的来源,可以进一步划分为3种:

a)本地为主

比如,打电话功能。有位很好的朋友叫郭家,如果说“打电话给guo jia时”,一般语音识别默认出现的肯定是“国家”,但(手机)本地会有通讯录,所以可以根据拼音,优先在通讯录中寻找更匹配(相似度较高)的名字——郭家。就显示为“打电话给郭家”。

b)本地+云端

比如,音乐功能。用户说,“我想听XX(歌曲名称)”时,可以优先在本地的音乐库中去找相似度较高的歌曲名称,然后到云端曲库去找,最后再合在一起(排序)。

例如,实际工作中,遇到过的“纠错例子”包括:

夜半小夜曲—>月半小夜曲

让我轻轻地告诉你—>让我轻轻的告诉你

他说—>她说

望凝眉—>枉凝眉

一听要幸福—>一定要幸福

苦啥—>哭砂

鸽子是个传说—>哥只是个传说

c)云端为主

比如地图功能,由于POI(Point of Interest,兴趣点,指地理位置数据)数据量太大,直接到云端搜索可能更方便(除非是“家”、“公司”等个性化场景)。比如,用户说“从武汉火车站到东福”,可以被纠正为“从武汉火车站到东湖”。

2

当前技术边界

各家公司在宣传时,会说语音识别率达到了97%,甚至98%,但那一般是需要用户在安静环境下,近距离、原地不动、慢慢的、认真清晰发音;而在一些实际场景,很可能还不够好的,比如——

1、比如在大家都认为相对容易做的翻译场景,其实也还没完全可用,台上演示是一回事,普通用户使用是另一回事;特别是在一些垂直行业,领域知识很容易出错;另外,还可详见《怼一怼那些假机器同传》http://t.cn/RKgBKH0

2、车载

好几年前,我曾做过针对车载场景的语言助手demo,拿到真实场景内去验证,结果发现,车内语音识别效果非常不理想。后来,我在面试一位做车内语音交互系统的产品经理时得知,他们的验收方其实也没有特别严格的测试,因为大家(同事)都知道,如果那样(严格),怎么也通过不了。。。

车内语音识别的难点很多,除了多人说话的干扰,还有胎噪、风噪,以及经常处于离线情况。

据说有的公司专门在做车内降噪,还有些公司想通过智能硬件来解决,至少目前好像还没有哪个产品解决好了这个问题,并且获得了用户的口碑称赞。

3、家庭场景,由于相对安静和可控,如果远场做好了,还是有希望的。

4、中英文混合。

特别在听歌场景,用户说想听某首英文歌时,很容易识别错误的。这方面,只有小雅音箱曾说自己做了很多优化工作。

总之,目前AI领域内,ASR已经是相对成熟(商用)的技术了,但还是需要用户配合AI在特定场景下使用。这是不是问题呢?是问题,但其实不影响我们做产品demo和初步的产品化工作,so 反而是我们AI产品经理的发挥机会——用产品体验设计来优化(弥补)纯技术效果的不足,比如当ASR返回时间较长时,可以让AI多说几个字,让用户感觉上等待的时间变短。

【插播一个Q & A】

Q:您好,我现在在做一款智能语音催收产品(智能语音外呼机器人),使用的某TOP AI公司的语音识别技术,其公告的识别率在97%,但是我们实际测试中的准确率只有67%左右,想问下,现在各家AI公司的语音识别,在实际使用中真正的准确率,到底大概能有多少?

A:你好,感谢你的提问。关于语音识别的准确率

1)准确率的测试,本身肯定是有各种限定条件的,比如测试的自然环境、软硬件环境,甚至还会受到说话人的口音影响。所以,各家公司在官网或各种PR稿中,肯定是说最好的测试效果,甚至可能会有点夸大。这些,一方面,我们也很难要求所有做ASR的公司,在提到准确率的时候,同时公开所有的限定条件参数(并横向对比),所以对他们要能一定程度的理解。另一方面,我们作为从业者,要知道这种过于宽泛的说法,本身就没有太大的可参考性;某种意义上说,这是比较基本的行业通识了。

2,进一步的,我们自己要知道,己方ASR需求的特定条件是什么,然后再去市场上找通用或个性化的解决方案。比如,在@团子 的重度干货文章《如何从零开始搭建智能外呼系统》中就提到过:电话渠道的语音流采样率一般是8k 16bit,这种语音识别的准确率远远低于app等渠道采集音频的识别率。再加上人在打电话时说话方式相对随意,导致语音识别部分成为了影响电话机器人能力和效果的重要瓶颈。

3

瓶颈和机会

1、远场语音识别,是最近2年的重要竞争领域。因为家庭(音箱)等场景有可能做好、被催熟。

2、更好的机会在垂直细分领域,比如方言识别、特定人群的声学匹配方案(儿童)等。

2、书籍及其他

1)网上有人推荐《解析深度学习:语音识别实践》by @俞栋 ;

2)语音识别工具包是 kaldi。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: