2.1 前端信号处理7 ]- A' x& O8 N+ k7 f8 |4 ^
) x# N1 g$ S0 r) [, |
2.1.1 语音检测(VAD)7 B6 c& I& Z! t( ^8 G
! G( m& V9 v( m. f- F语音检测(英文一般称为 Voice Activity Detection,VAD)的目标是,准确的检测出音频信号的语音段起始位置,从而分离出语音段和非语音段(静音或噪声)信号。由于能够滤除不相干非语音信号,高效准确的 VAD 不但能减轻后续处理的计算量,提高整体实时性,还能有效提高下游算法的性能。* y6 Y M R, d/ Y j2 A$ s, U" S
3 _' N5 h. P* }+ pVAD 算法可以粗略的分为三类:基于阈值的 VAD、作为分类器的 VAD、模型 VAD。( O) X9 |+ C6 e8 |
9 L% ~! {8 g+ G8 \# D1 O
基于阈值的 VAD:通过提取时域(短时能量、短期过零率等)或频域(MFCC、谱熵等)特征,通过合理的设置门限,达到区分语音和非语音的目的。这是传统的 VAD 方法。
! M1 R T2 B* m2 w% M. ]作为分类器的 VAD:可以将语音检测视作语音/非语音的两分类问题,进而用机器学习的方法训练分类器,达到检测语音的目的。) Q! v" m# r0 P* ^) }2 k
模型 VAD:可以利用一个完整的声学模型(建模单元的粒度可以很粗),在解码的基础,通过全局信息,判别语音段和非语音段。0 x5 x; W9 S0 } }& E. O" [
VAD 作为整个流程的最前端,需要在本地实时的完成。由于计算资源非常有限,因此,VAD 一般会采用阈值法中某种算法;经过工程优化的分类法也可能被利用;而模型 VAD 目前难以在本地部署应用。* ~" y, ?' a$ H, ^3 T- C
* v6 I/ G; e7 M: P" a/ |
2.1.2 降噪
- l E2 T5 H2 @4 Y4 k* l9 h; ?! k* {
实际环境中存在着空调、风扇以及其他各种各样的噪声。降低噪声干扰,提高信噪比,降低后端语音识别的难度。
3 b& O" e) r# A( G2 S' M常用的降噪算法有 自适应 LMS 和维纳滤波等。
( [- M/ ^4 R @. |5 K5 H$ k, E
8 S) Z$ }) `" x6 q2.1.3 声学回声消除(Acoustic Echo Cancellaction, AEC)5 }4 Q A' v& ^2 f$ ~: l# ?
3 D% H7 v- u" f2 p o; U) b- J/ `, X
AEC也是一种常见的技术,在语音通话中,AEC是必不可少的基础技术。
/ G9 m! v; q5 V" ^3 O8 |) P& T" S5 g2 q" Q9 o2 j$ Z7 m
图11. AEC 示意【来源】
/ y- O" z1 I6 d2 c% n2 @7 }2 w$ n$ P1 R6 N, @
具体的,AEC 的目的是,在音箱扬声器工作(播放音乐或语音)时,从麦克风中收集的语音中,去除自身播放的声音信号。这是双工模式的前提。否则,当音乐播放时,我们的声音信号会淹没在音乐声中,不能继续对音箱进行有效的语音控制。, D5 j4 y/ M1 c, n7 M `
7 M: v9 W+ Y( T9 |0 X& t3 |3 Q2.1.4 去混响处理
( f/ @9 ~) ]$ n* u& l% v9 I) [3 a2 j6 w
在室内,语音会被墙壁等多次反射,麦克风采集到(图12)。混响对于人耳完全不是问题,但是,延迟的语音叠加产生掩蔽效应,这对语音识别是致命的障碍。
7 J& L& g7 `7 ~3 r6 N& u6 m, D' s* b1 M9 ?6 R
& U ?: _. B+ e( e8 Y3 u1 [. _( |图12. 混响【来源】
9 z# T' [) N& l6 g
* d. S# h ^9 j8 Q0 f* q对于混响,一般从两个方面来尝试解决:1)去混响 2)对语音识别的声学模型加混响训练。由于真实环境的复杂性,一定的前端去混响算法还是非常有必要的。
4 E d {* `, v9 F# i4 `7 z& k
; p; U. r; @4 G& r2.1.5 声源定位(Direction of Arrival estimation, DOA)9 ^6 l" X3 [8 l$ R/ V3 e- U" ]9 x
: D7 ~1 E* w8 K7 _1 Y0 c1 `0 H
声源定位是根据麦列收集的声音语,确定说话人的位置。DOA 至少有两个用途,1)用于方位灯的展示,增强交互效果;2)作为波束形成的前导任务,确定空间滤波的参数。% z. R: z, S9 E& p. Q U
% m W1 |4 Y' ?. }4 b9 K y0 X
声源定位有如下常用方法有基于波束扫描的声源定位、基于起分辨率率谱估计的声源定位以及 基于到达时间差(Time Difference of Arrival, TDOA)的声源定位。考虑到算法复杂性和延时,一般采用TDOA方法。! h" D+ q. a) E3 b# f- i) b
' W' m" a/ V" a j$ ~$ |
2.1.6 波束形成(Beam Forming, BF)
; G: R. t1 b: h: I# N( O$ p" E) A D7 T# m) J- L) v
波束形成是利用空间滤波的方法,将多路声音信号,整合为一路信号。通过波束形成,一方面可以增强原始的语音信号,另一方面抑制旁路信号,起到降噪和去混响的作用(图13)。
" f4 F. ^: y! B3 n2 J% ~3 d4 s: F- D4 d! E
, P% y, c: Q# q图13. 波形成示意图【来源】
/ L1 e' _ b i- |' c/ ?) b0 P1 A9 t' N% {
2.2 唤醒. p; |& p& a( C$ \
/ @0 m* ?: C% G+ j出于保护用户隐私和减少误识别两个因素的考虑,智能音箱一般在检测到唤醒词之后,才会开始进一步的复杂信号处理(声源定位、波束形成)和后续的语音交互过程。. v( B' c4 x) }/ i- w+ C6 |+ Z
2 ~6 `( ]( W. q
一般而言,唤唤醒模块是一个小型语音识别引擎。由于目标单一(检测 出指定的唤醒词),唤醒只需要较小的声学模型和语言模型(只需要区分出有无唤醒词出现),声学打分和解码可以很快,空间占用少,能够在本地实时。) _( O+ }: f$ G/ f5 O- y, U4 e' C
7 t7 b# d/ q8 j1 G
也有唤醒做为关键词检索(key word search)或文本相关的声纹识别问题来解决。! b" p) `$ y1 h N. V
$ r O/ G- L* P: r! [
2.3 语音交互' `) k2 {0 G3 E, _! |3 F
1 w; J& M0 u8 M# b& O: N2 b2 O" x# w1 ?语音交互的基本流程如图16所示。下面分别对各个环节进行简要介绍。
4 ~7 T! [, m% K- W7 r' S4 n5 e3 v$ V
图14. 语音交互基本流程$ H) ~ \% {) M
$ R0 ^- I8 `) y% N% O/ O6 [) _
ICASSP’17 关于对话系统的 tutorial ,并附有系统性的参考文献。/ \( z) t" g2 ~' h' Q
2.3.1 语音识别(Automatic Speech Recognition, ASR)
* x: T7 g7 E) L; B
: V( D% {0 s+ m6 s语音识别的目的是将语音信号转化为文本。语音识别技术相对成熟。目前,基于近场信号的、受控环境(低噪声、低混响)下的标准音语音识别能够达到很的水平。然而在智能音箱开放性的真实环境,语音识别依然是一个不小的挑战,需要接合前端信号处理一起来优化。, c* T7 q+ t" I2 x% y
0 ^. J$ q' |7 g4 H9 ?4 x c' T2.3.2 自然语言理解(Natural Language Understanding, NLU)/ j5 `4 @4 Q8 H
$ y; t P; [8 M2 J p l( e: ]
NLU 作为一个研究课题还远没有被解决。但是在限定领域下,结合良好的产品设计,我们还是能够利用现有技术,做出实用的产品。3 o4 g, R1 O* l1 ~6 K* }. z6 [
Q& W& C8 X' h0 b" U# G8 ?6 O可以将基于框架的(frame-based) NLU 分为三个子问题去解决(图15): - @: [$ \; q$ S" `
* 领域分类:识别出用户命令所属领域。其中,领域是预先设计的封闭集合(如产品设计上,音箱只支持音乐、天气等领域),而每个领域都只支持无限预设的查询内容和交互方式。
; S$ t5 ?/ S3 _9 x% _" x* 意图分类:在相应领域,识别用户的意图(如播放音乐、暂停或切换等)。意图往往对应着实际的操作。
& B+ l* D5 }4 v. q. o% @* 实体抽取(槽填充):确定意图(操作)的参数(如确定,具体是播放哪首歌或哪位歌手的歌曲)。
2 Z# ?: q' T, ^7 D) e1 W& x5 o6 F
$ d3 H2 M* A$ A+ v
图15. 基于框架的自然语言理解! o1 |( v: y+ E. W" V: O' A3 G
, }* [6 \3 u6 Z0 K
, h+ L8 \* k3 z( ? |