一、前端信号处理
1. 语音检测(VAD)
语音检测(英文一般称为 Voice Activity Detection,VAD)的目标是,准确的检测出音频信号的语音段起始位置,从而分离出语音段和非语音段(静音或噪声)信号。由于能够滤除不相干非语音信号,高效准确的 VAD 不但能减轻后续处理的计算量,提高整体实时性,还能有效提高下游算法的性能。
VAD 算法可以粗略的分为三类:基于阈值的 VAD、作为分类器的 VAD、模型 VAD。
基于阈值的 VAD:通过提取时域(短时能量、短期过零率等)或频域(MFCC、谱熵等)特征,通过合理的设置门限,达到区分语音和非语音的目的。这是传统的 VAD 方法。
作为分类器的 VAD:可以将语音检测视作语音/非语音的两分类问题,进而用机器学习的方法训练分类器,达到检测语音的目的。
模型 VAD:可以利用一个完整的声学模型(建模单元的粒度可以很粗),在解码的基础,通过全局信息,判别语音段和非语音段。
VAD 作为整个流程的最前端,需要在本地实时的完成。由于计算资源非常有限,因此,VAD 一般会采用阈值法中某种算法;经过工程优化的分类法也可能被利用;而模型 VAD 目前难以在本地部署应用。
2. 降噪
实际环境中存在着空调、风扇以及其他各种各样的噪声。降低噪声干扰,提高信噪比,降低后端语音识别的难度。
常用的降噪算法有 自适应 LMS 和维纳滤波等。
3. 声学回声消除(Acoustic Echo Cancellaction, AEC)
AEC也是一种常见的技术,在语音通话中,AEC是必不可少的基础技术。
具体的,AEC 的目的是,在音箱扬声器工作(播放音乐或语音)时,从麦克风中收集的语音中,去除自身播放的声音信号。这是双工模式的前提。否则,当音乐播放时,我们的声音信号会淹没在音乐声中,不能继续对音箱进行有效的语音控制。
4. 去混响处理
在室内,语音会被墙壁等多次反射,麦克风采集到(图12)。混响对于人耳完全不是问题,但是,延迟的语音叠加产生掩蔽效应,这对语音识别是致命的障碍。
对于混响,一般从两个方面来尝试解决:1)去混响 2)对语音识别的声学模型加混响训练。由于真实环境的复杂性,一定的前端去混响算法还是非常有必要的。
5. 声源定位(Direction of Arrival estimation, DOA)
声源定位是根据麦列收集的声音语,确定说话人的位置。DOA 至少有两个用途,1)用于方位灯的展示,增强交互效果;2)作为波束形成的前导任务,确定空间滤波的参数。
声源定位有如下常用方法有基于波束扫描的声源定位、基于起分辨率率谱估计的声源定位以及 基于到达时间差(Time Difference of Arrival, TDOA)的声源定位。考虑到算法复杂性和延时,一般采用TDOA方法。
6. 波束形成(Beam Forming, BF)
波束形成是利用空间滤波的方法,将多路声音信号,整合为一路信号。通过波束形成,一方面可以增强原始的语音信号,另一方面抑制旁路信号,起到降噪和去混响的作用(图13)。
二、 唤醒
出于保护用户隐私和减少误识别两个因素的考虑,智能音箱一般在检测到唤醒词之后,才会开始进一步的复杂信号处理(声源定位、波束形成)和后续的语音交互过程。
一般而言,唤唤醒模块是一个小型语音识别引擎。由于目标单一(检测 出指定的唤醒词),唤醒只需要较小的声学模型和语言模型(只需要区分出有无唤醒词出现),声学打分和解码可以很快,空间占用少,能够在本地实时。
也有唤醒做为关键词检索(key word search)或文本相关的声纹识别问题来解决。
三、语音交互
语音交互的基本流程如图16所示。下面分别对各个环节进行简要介绍。
1. 语音识别(Automatic Speech Recognition, ASR)
语音识别的目的是将语音信号转化为文本。语音识别技术相对成熟。目前,基于近场信号的、受控环境(低噪声、低混响)下的标准音语音识别能够达到很的水平。然而在智能音箱开放性的真实环境,语音识别依然是一个不小的挑战,需要接合前端信号处理一起来优化。
2. 自然语言理解(Natural Language Understanding, NLU)
NLU 作为一个研究课题还远没有被解决。但是在限定领域下,结合良好的产品设计,我们还是能够利用现有技术,做出实用的产品。
可以将基于框架的(frame-based) NLU 分为三个子问题去解决(图15):
* 领域分类:识别出用户命令所属领域。其中,领域是预先设计的封闭集合(如产品设计上,音箱只支持音乐、天气等领域),而每个领域都只支持无限预设的查询内容和交互方式。
* 意图分类:在相应领域,识别用户的意图(如播放音乐、暂停或切换等)。意图往往对应着实际的操作。
* 实体抽取(槽填充):确定意图(操作)的参数(如确定,具体是播放哪首歌或哪位歌手的歌曲)。
3. 对话管理(Diaglou Management, DM)
多轮对话对于自然的人工交互非常重要。比如,当我们询问“北京明天的天气怎么?”,之后,更习惯追问“那深圳呢?”而不是重复的说”**深圳明天的天气怎么?**“
在 NLU 无有得到很好解决的情况下,对话管理似乎不可能。好在限范围下,结合产品设计,还是能做的不错。一般的作法是,将轮对话解析出的参数做为上下文(全局变量),带入到下一轮对话;当前轮对话,根据一定的条件判断,是否保持在上一轮的领域,是否清空上下文。
不同于纯粹的聊天机器的对话管理,智能音箱的对话管理还有实际的操作功能(查询信息、提供控制指令)。
4. 自然语言生成(Natural Language Generation, NLG)
目前完全自动化的 NLG 方法还不成熟。实际产品中,多采用预先设计的文本模板来生成文本输出。比如,播放歌曲时,生成语句为:“即将为您播放【歌手名】的【歌曲名】”。
5. 语音合成(Speech Synthesis)
语音合成又叫做文语转换(Text-to-Speech,TTS),更常见可能是 TTS 这一称呼。TTS 的终极目标是,使机器能够像人一样朗读任意给定的文本。
评价实用的语音合成系统的两个主要的标准是1)可懂度(人能够听懂)和2)自然度(使人听着舒服)。目前,可懂度的问题基本得到解决。参数合成和拼接合成是TTS的两种主要合成方法,其中,参数计算量小,部署灵活,但自然较差;拼接接近真人发音,存储和计算资源高,一般只能在线合成。例如,Echo 采用的基于单元选择(unit selection)的拼接合成。
四、 其他技术
最后,我们简单列举一些相对成熟,但还没有广泛应用于智能音箱的技术。
声纹识别
声纹识别是据语音波形反映说话人生理和行为特征的语音参数,自动识别说话人身份的一项技术。微信中的声音锁就是声纹技术的一项具体应用。
通过声纹识别,可以设计出更加个性化的服务。
人脸检测
如果音箱配置为摄像头,可以通人脸检测,确定用户的位置。一方面可以有更好的交互设计,另一方面可以辅助声源定位。
人脸识别
同声纹识别类似,人脸识别也可以用来确定用户的身份。
原文出处:https://blog.csdn.net/jackytintin/article/details/62040823