本文总结下AI音箱的产品形态及背后的技术框架。
一. AI 音箱产品提炼
2014年11月亚马逊发布Echo,开启了语音交互的时代。国内外大型互联网公司都有布局语音交互入口。
智能音箱作为家庭场景最自然的语音交互入口,有着丰富的想象空间:
1) 智能家居的中控中心,如控制智能电视,空气净化器,窗帘,电灯;
2)数字内容消费入口,如付费听歌,有声内容;
3)连接线下的生活服务入口,如叫车,订餐,查位置,查路线,购物;
4)儿童早教机器人,如科大讯飞的蛋系列,走微商渠道的智伴,主打英语的布丁豆豆等;
当前智能音箱的最主流需求,还是订提醒,查天气,听歌,听资讯等娱乐类需求。
智能音箱作为数字内容入口最大的问题在于云端海量的内容无法主动透出。音箱的交互都是用户主动发起的,音箱当然也可以主动推荐内容,但设备主动推荐的方式,无论产品怎么设计,总避免不了打扰用户的风险。虽然音箱配套的app是可以用来透出内容的,但各家数据都表明,音箱app的打开率是极低的。而且语音交互本身就是比app更高级,更自然的交互方式,音箱的使用如果还要依赖一个app,就舍本逐末了。
随着硬件成本的逐步降低,能运行低版本android系统的高性价比的芯片已经越来越普及。智能音箱采用android系统,加上屏幕解决内容和技能透出问题,是2019年智能音箱的一大主流趋势。
二. AI 音箱背后的技术框架
这部分内容和之前的工作直接相关,比较熟悉了,就写详细点,算给自己做个总结吧。
从唤醒到播放请求的内容,整个链条上的主要技术都了解下。
技术框架
前端算法,唤醒模型,ASR,会话管理和技能中心,NLU,TTS这六个主要模块都总结下。
2.1 前端算法
对麦克风采集到的原始语音进行处理,去除噪声和其他干扰,增强目标语音,使处理后的信号更能反映语音的本质特征,更容易被后端的语音识别系统处理。
麦克风收集到的原始语音,按声音信号到达麦克风的时间延迟划分,可分为三部分:
1)直达声:声音从声源直接到达麦克风;
2)早期反射声:声音经过1~2次的反射后到达了麦克风,声音能量还较大,时间延迟较短;
3)混响声:声音经过了多次反射后到达麦克风,小能量,高密度,长延迟的反射声群;
按到达麦克风的声音来源划分,可分为以下5种:
1)Echo:远端扬声器播放的声音回传给麦克。
2)Diffuse Noise:无向噪声的干扰。
3)Reflected Sound:声音通过墙壁反射,造成混响干扰。
4)Interference:其他方向的干扰源。
5)Target Speech:目标方向声音。
前端算法的处理,具体来讲,包括以下6个方面:
1)回声消除,解决Echo;
2)解混响,解决Reflected Sound;
3)去噪声,解决Diffuse Noise;
4)声源定位,确定声源方向,波束形成阶段会增强目标方向的声音;
5)波束形成,融合多个通道的声音信号,抑制非目标方向的干扰源,增强目标方向的声音信号。
6)VAD处理,从连续的语音流中检测语音信号的起始点和结束点,截取出有效的语音段。
麦克风阵列
前端语音算法处理与麦克风阵列直接相关,先看一下常用的麦克风阵列。
远场语音识别,都采用多麦克风方案来增强拾音效果。多麦克风收集到的多路语音信号,经过前端算法波束形成的处理,整合成一路目标语音得到增强的信号,再经过VAD截取出有效语音段后,最后送给后端语音识别系统。
常用的麦克风阵列有2麦,4麦,6麦,6+1麦,8麦。不同的应用场景适用不同的方案。
如,面向企业的服务型机器人,要求全方位的360度拾音,麦克风阵列设计要采用 6或6+1方案。而面向3~6岁儿童的陪伴型机器人,若只要求儿童面对机器人时,可以进行语音交互,即180度拾音就可满足产品需求,麦克风阵列可以用2麦,甚至1麦。如科大讯飞的阿尔法蛋系列就是1麦。
前端算法主要组成部分框图
回声消除
远场语音识别场景,回声echo是指设备扬声器播放的声音又回传给设备麦克风。
回声消除就是抑制设备自身的声音干扰。
常用回声消除方法:
使用自适应滤波算法调整自适应滤波器的权值向量,根据扬声器信号与产生的多路回声的相关性,建立远端信号模型。模拟真实回声路径,从而得到估计的回声信号,然后将麦克风接收到的信号减去估计值,即可实现回声消除功能。
解混响
混响声:声音经过了多次反射后到达麦克风,小能量,高密度,长延迟的反射声群。
常用解混响方法:
基于加权预测误差的混响消除方法,基于逆滤波方法、基于波束形成方法和基于深度学习方法。
去噪声
去噪声指消除环境噪声对语音的影响,也称为语音增强。频谱稳定的背景音称为白噪声。背景音强度较大时,语音识别率会降低,VAD灵敏度也会下降。
常用语音增强方法:
基于短时谱估计增强算法中的谱减法,维纳滤波。
声源定位
确定声源方向,波束形成阶段会增强目标方向的声音。
声源定位算法:
基于高分辨率谱估计算法(如MUSIC算法),基于声达时间差(TDOA)算法,基于波束形成的最小方差无失真响应(MVDR)算法等。
波束形成
融合多个通道的声音信号,抑制非目标方向的干扰源,增强目标方向的声音信号。波束形成的算法分为非盲算法和盲算法。
波束形成算法:
波束形成算法需要解决的核心问题是估计空间滤波器W,它的输入是麦克风阵列采集的多通道语音信号,它的输出是增强后的单路语音信号。
对空间滤波器可以分为时不变线性滤波、时变线性滤波以及非线性变换模型。
VAD处理
从连续的语音流中检测语音信号的起始点和结束点,截取出有效的语音段。
VAD处理方式:
VAD处理分为两步,特征提取和二分类判断是否为语音信号;
常用的特征提取可以分为五类:基于能量,频域,倒谱,谐波,长时信息;
分类模型可分为三类:基于门限,统计模型,机器学习;
小结:
前端算法在整个语音识别中是非常重要的,直接影响识别的准确率。
下面总结几个之前工作中遇到过的前端算法直接相关的问题:
1)服务型机器人,产品定义听到唤醒词,机器人头部屏幕要面对目标说话人,涉及声源定位问题;
2)服务型机器人部署在大型商场,医院,公司前台,会场等嘈杂环境下,经常出现无法唤醒,多人收声问题,这里涉及解混响和去噪声算法;
3)儿童陪伴机器人,2麦方案,180度拾音,经常自收音,设备播放的声音又被设备收音,这里涉及回声消除问题;
4)自动会议记录的场景,多人开会时,设备通过拾音,自动做会议记录,如科大讯飞的听见,这里涉及捕捉多目标语音和声纹识别问题。有时间可以研究下。
5)工作中经常碰到的一种情况是,算法工程师更新了前端算法,导致产品整个语音识别出现异常。pm需要及时了解算法工程师具体更新的是哪个部分的算法,回声消除,解混响,还是去噪声,这样能更有效率定位问题。
2.2 唤醒模型
学术上也称为关键词检测Keyword spotting,指在连续语音流中检测出目标关键词,一般目标关键词的个数1~2个。
从产品的角度讲,唤醒词是用来判断用户是否有交互需求的依据。检测到唤醒词,说明用户有和设备交互的需求,设备可处于work状态,等待响应用户的语音指令。没有检测到唤醒词,表明用户没有和设备交互的需求,此时即使检测到语音流,设备也应处于待机状态,不应该主动发声打扰用户。
语音唤醒的四个评价指标:
1)功耗
唤醒模型的功耗占比要尽量低,尤其是采用低端芯片,电池供电,要求长续航能力的智能设备。另外,前端处理中VAD检测对于降低功耗也起重要作用;
2)唤醒延迟
唤醒延迟应尽量低,用户唤醒后,设备能快速反馈,属于智能语音设备的基础体验范畴,唤醒延迟在1.5s内体验都不错。
3)唤醒率
连续语音流中有唤醒词的情况下,设备被唤醒的准确率。市面上智能音箱唤醒率一般在96%左右。
4)误唤醒率
连续语音流中没有唤醒词的情况下,设备被唤醒的概率。
低功耗,低延迟,高唤醒率,低误唤醒率是智能音箱的四个基础体验指标,为提升用户体验,唤醒模型有本地和云端两种部署方式,本地部署可以做到低延迟。
一般有2类语音唤醒方案
1) 只有声学模型,没有语言模型,声学模型输出的音素序列匹配唤醒词的音素序列,匹配成功,说明检测到唤醒词,设备被唤醒,未匹配成功,等待下一轮匹配;一般要求低功耗的设备上,唤醒模型都采用此种方案,即只包含声学模型;
2)有声学模型也有语言模型,声学模型输出的音素序列,经过语言模型解码后输出的是词,再和唤醒词进行匹配,若匹配成功,设备被唤醒;
只有声学模型的实现方式
深度神经网络-隐马尔科夫模型DNN-HMM,长短时记忆网络+全连接时序分类模型lstm+ctc
从交互的角度,有三种语音唤醒方式
1)唤醒词——>设备反馈——>语音指令
2)one-shot 唤醒词+语音指令
3)zero-shot 语音指令(常用语音指令当作唤醒词)
小结:
1)远场语音识别的语料库是很难收集的,成本昂贵,语音数据要尽量靠近落地场景;
2)方言,口语的随意性,不符合语法规范,嘈杂环境,都很考验语音识别模型的鲁棒性,泛化能力;
3)目前国内主流大厂,百度,讯飞,思必驰,语音识别的准确率基本在96%左右;
唤醒这块实际工作中经常遇到的情况是唤不醒和误唤醒两类情况。
唤不醒常见情况是环境嘈杂,方言识别等原因。
one-shot方式会显著提高误唤醒率。但对于面向2~6岁的儿童机器人产品,one-shot方式比较符合儿童的说话方式。2~4岁小孩子一般都是连着说话。先说唤醒词,等设备应答,再说语音指令,对2~4岁的小朋友是难度较高的交互过程。
另外从产品的角度,支持定制唤醒词也是个明确的用户需求。
唤醒模型及常用语音指令识别跑在设备端,是提升用户体验的必要手段。
2.3 自动语音识别ASR模型
自动语音识别可以分解成3个步骤:
1)声学特征提取,模拟声音信号转换成语音特征帧(离散特征向量)
2)声学模型,声学特征向量对应到音素
3)发音词典+语言模型,音素组合成词
声学特征提取
a) 模拟声音信息转换成离散数字信号
声波在空气中传播,其压力呈周期性变化,当这些声波撞击到麦克风的振膜时,膜的前后震动就产生了电流。模拟信号到数字信号的转换器按照采样率所确定的离散间隔测量电流的强度。电流的强度近似对应着声波的振幅。
b) 数字信号转换成声学特征向量(信号处理算法,声学特征提取如MFCC)
帧:时间切片上的信号特性概括为帧。通过声学特征的离散值描述
每一帧表示一个特征向量,帧之间可以重叠,以免漏掉出现在帧边界上的信号。
模拟声音信号转换为声学特征向量图示
声学模型
声学模型的作用是将声学特征向量对应到音素。
音节:语言学家定义了大约100种音节,可组合成已知的所有人类语言中的所有词汇。
音素:对于使用某种特定语言的说话人具有独特意义的最小发音单位。
a) 基于统计的声学模型:HMM
HMM模型将每一个语音特征帧都对应到HMM模型中的一个状态,不论多长的语音都能够表达为HMM模型的一个状态序列。
声学特征向量到音素的对应过程,就分解成声学特征向量——>HMM模型中的状态序列——>音素的过程。
构建HMM状态网络及音素网络,HMM声学模型的工作过程,就是搜索音素网络及状态网络,得到最大概率路径的过程。
b) 基于深度学习的声学模型:RNN及LSTM
语音的协同发音现象说明声学模型需要考虑到语音帧之间的长时相关性。
RNN隐层的输入除了接收前一个隐层的输出之外,还接收前一时刻的隐层输出作为当前输入,通过RNN隐层的循环反馈,保留了长时的历史信息,大大增强了模型的记忆能力,能很好的描述语音的时序特性。
发音词典
建立汉语,英语单词与对应发音之间的映射。
语言模型
将声学模型的输出音素组合成字词。
a) n元语言模型 n-gram
n个字符序列上的概率分布称为n元模型。
n元模型中序列元素可以是单词,音节或者其他单元,而不仅仅是字符。
n元模型可以定义为n-1阶马尔可夫链。即字符cj的概率只取决与它前面的字符,而与其他字符无关。
在语音识别中,n元模型中的序列元素是音素,n元模型表示一个音素序列是一个单词或汗字的概率。
n-gram模型各个参数需要从训练语料库中得到。
b) 基于深度学习的语言模型LSTM和RNN
RNN根据词典计算下一个字符出现组成单词或汉字的概率,这样,概率最大的字符就是最可能的字符。
小结:
1)远场语音数据的收集难度大,成本贵,需要和产品落地场景相匹配;
2)口语的随意性,不符合语法规范,方言,都比较考验语音识别系统的鲁棒性和泛化能力;
3)国内主要技术服务商,百度,讯飞,思必驰,语音识别准确率基本在96%左右;
2.4 自然语言处理 NLP
自然语言处理是关于语义理解的技术。
NLP的应用包括以下几类:
1)机器翻译,如百度翻译,谷歌翻译。
2)智能客服,如腾讯,网易的智能客服机器人。
3)信息抽取,从指定文本或海量文本中抽取用户感兴趣的信息。
4)信息检索,海量信息中查找用户指定信息,如搜索引擎。
5)阅读理解,针对文章提出的问题,机器自动给出答案。
NLP的技术包括5个方面:
语言模型,序列标注,词法分析,句法分析,语义分析。
1)语言模型
NLP中的语言模型,是用句子S出现的概率P(S)来刻画句子的合理性,这里不涉及词法,句法,语义等语言学的分析处理。
a) 统计语言模型——n元语言模型 n-gram
前面ASR中提过n元语言模型,在NLP中使用的n元模型序列元素是单词或汉字。
模型中的参数也需要从语料库中得到,通过统计学方法,如极大似然估计,计算各个单词或汉字在语料库中出现的概率。
b) 基于深度学习的语言模型LSTM和RNN
利用神经网络求取语言模型的参数。
神经网络模型的输入、输出都是向量,所以用神经网络语言模型遇到的第一个问题是词的向量化表示。
神经网络词向量采用一种基于预测的分布式表示法。基本思想是利用一个词附近的其他词来表示该词。
用“上下文词来预测当前词”或用“当前词预测上下文词”的方法构造神经网络词向量。
2)序列标注
给定一个一维线性输入序列:
给线性序列中的每个元素打上标签集合中的某个标签:
给定标签集合便可进行序列标注,本质上是对线性序列中每个元素根据上下文内容进行分类的问题。
NLP中的序列标注问题包括:实体识别,短语识别,分词,词性标注,词义角色标注。
截一个中文分词的序列标注问题:
标签集合为{B M E S}
其中B代表这个汉字是词汇的开始字符,M代表这个汉字是词汇的中间字符,E代表这个汉字是词汇的结束字符,而S代表单字词。
a) 传统解决方案:
HMM模型,最大熵模型,CRF模型,CRF模型是主流解决方案,能够考虑长远的上下文信息,理论和实践上都要优于HMM模型。
b) 深度学习解决方案:
RNN,LSTM,这些深度学习模型具有强大的序列建模能力,能够捕捉长远的上下文信息,此外还具备神经网络拟合非线性的能力,这些都是传统的CRF模型无法超越的地方。
3)词法分析
词是自然语言处理的最小单位。词法分析的任务有两个,一是分词。二是标注词性,为后续的句法分析作准备。词法分析常用的解决方案是转换成序列标注问题,使用序列标注的解决方案。
分词算法已经很成熟,传统分词算法如CRF的准确率已达到96%左右,目前分词算法的难点有三方面:
1)分词粒度的把握,不同场景粒度要求不同;
2)歧义问题,同一个字串,可以有多种切词结果。
3)未登录词,分词算法的词典中未收录的词,如口语化的词,或新的网络词汇;分词错误多发地;
a) 传统解决方案
基于字典词库匹配:最大匹配法,最短路径匹配;
基于统计模型:n元模型,HMM、CRF;
b) 深度学习解决方案
RNN,LSTM,效果最好的模型是BiLSTM+CRF。
4)句法分析
句法分析的任务是确定句子的句法结构和句子中词汇之间的依存关系,主要包括句法结构分析和依存关系分析。
以获取整个句子的句法结构或者完全短语结构为目的的句法分析,被称为成分结构分析或者短语结构分析。
以获取局部成分为目的的句法分析,被称为依存分析。
a)传统模型
基于规则的方法:层次分析法构建短语结构树;
基于统计的方法:概率上下文无关文法PCFG;
b)深度学习模型
RNN
5)语义分析
不同层面上,语义分析的任务各不相同。
在词的层面,语义分析的基本任务是进行词义消歧(WSD):
已知某个词有多种含义,如何根据上下文确认其含义。
在句子的层面,是语义角色标注(SRL):
浅层语义分析,不分析句子信息,只分析句子的谓词-论元结构,以句子的谓词为中心,研究句子中各成分与谓词之间的关系。做出基本判断:“谁对谁做了什么”,“何时”和“哪里”。
在篇章层面,是指代消解,也称共指消解:
主要用于解决多个指称对应同一实体对象的问题,为了更准确且没有遗漏地从文本中抽取相关信息,必须要对文章中的指代现象进行消解。
指代消解的基本原理是找到一个句子中的所有mention,然后两两配对,评分。
a)传统机器学习解决方案:
词义消歧算法:贝叶斯分类器,最大熵;
语义角色标注算法:格文法;
指代消解:二元分类算法;
b)深度学习方案:
RNN,端到端的神经网络共指消解算法;
对于智能音箱产品,NLP系统输出的是结构化的语义内容,包括领域意图和语义槽信息。这些信息回传给会话管理系统,会话管理系统据此调用相应技能,到资源库检索资源,返回设备端。
2.5 会话管理和技能中心
根据语言理解的结构化语义及上下文来管理整个对话的状态,并决定下一步采取什么样的动作。
会话管理是整个语音系统的中枢,管理设备的会话周期,调度各个系统协调工作,将ASR系统的结果传给NLP系统,将NLP系统的结果传给技能中心,将技能中心拉取的资源和TTS语料回传给客户端。
会话管理的另一个重要任务是收集设备端的数据,为用户数据挖掘,模型训练储备数据。
2.6 语音合成TTS
文字转语音。实际应用,机器人播报新闻,合成语音应答。
传统语音合成分为3个步骤:
1)文本处理,得到文本特征向量;
2)有文本特征向量得到声学特征向量,基于决策树聚类的HMM模型;
3)合成语音波形;
端到端的语音合成:
直接输入文本或者注音字符,系统直接输出音频波形。端到端系统降低了对语言学知识的要求,可以很方便在不同语种上复制,批量实现几十种甚至更多语种的合成系统。
端到端的语音合成减少了特征工程,所有特征模型自行学习,方便添加语种、音色、情感等;避免多模块误差累积;是未来语音合成的主流方向。