% i/ d7 v! Q0 Q& W- U( L6 k 3 q- L) p8 E0 m& W' l 1 b2 t7 b, v) I# m b& w T $ H# d7 j& \+ v$ TConclusion 7 Y6 e) c' R# l3 }5 Y 0 P ?5 d8 R/ Z5 Y+ _: a& G我们已经提出了注意力统计池化方式来提取deep speaker embedding,**池化层计算的是经过注意力机制作用的加权特征平均值、加权特征标准差。**这使得说话人其纳入能够focus重要的帧。不仅如此,长时间的偏差能够被说话人统计在标准差中。比如结合了注意力机制和标准差提供了协同效应。0 x) c* M$ K& k) E
) x7 K+ N2 g: c1 o! B
Paper2:Self-Attentive Speaker Embeddings for Text-Independent Speaker Verification ) ~! [1 m9 L- q9 z3 A% w% \) h) N0 P
Abstract " h1 M" W" b+ b. G+ ^ 6 V" `' R) L. O这篇文章提出了一种文本无关场景说话人场景用DNN提取特征。通常,说话人嵌入是分类DNN平均了说话人帧上的隐藏向量;所有帧产生的隐藏向量被认为是同等重要的。我们反驳了这一假设,将说话人嵌入作为帧级隐藏向量的加权平均值进行计算。其权重是由自相关机制自动确定的。多个注意头对说话人输入语音不同方面的影响,最后,用PLDA分类器比较嵌入对。在NIST SRE 2016上,将提出的自相关说话人嵌入系统和强大的DNN嵌入baseline进行比较。我们发现,self-attentive的embedding具有卓越的性能,其改进对于长时、短时的语音都有不错的效果。" S+ i% r' x! ?* {
6 h( ?1 ~( a' IIntroduction, o4 B9 N `2 h
' ~6 `7 c% x' e! [
说话人识别(声纹识别)的目的是从几句人说的话来确认一个人的身份。有两种系统:一种是文本相关、一种文本无关。' [% L4 w$ o4 V0 D
近些年对于文本无关的声纹识别方案主要是:结合i-vectors和使用PLDA(概率线性判别分析) . z2 X$ Q6 i+ c/ i( H7 f; I; _1 y另外,将训练好的DNN用于ASR或者其他方案。不仅如此,这个方案的成功率已经主要地独立于英语数据集 2 Q. ]# ~5 t1 OICASSP 2016【End-to-end text-dependent speaker verification】 提出了一种端到端系统,用于文本相关的说话人识别任务,联合的训练来匹配说话人嵌入的帧级特征,并且学习一些相似度比较尺度来匹配embedding pairs。 + @$ t* h' f9 T- E4 I) V Z& CInterspeech 2017【Deep neural network embeddings for text-independent speaker verification】 将端到端系统分为两个部分:a. 产生说话人嵌入的DNN; b. 比较嵌入对的单独训练的PLDA分类器。与端到端方法相比,该方法需要的有效数据更少,并且有利于重用多年来开发的用于处理和比较i-vector的方法的附加好处。 6 j. M9 P8 L: y( [# s: E$ p7 X大多数基于DNN的声纹识别系统使用池化机制来匹配可变长度的语音->定长的embeddings。在一个前馈架构【啥是前馈结构??】里,这通常被池化层使能,并且能够在全语音输入部分平均一些帧级DNN的特征。早期的系统中,如d-vector,DNN是在帧级别上训练的,并且通过对输入话语的所有帧上的最后一个隐藏层' N# s8 \% ? H1 Y) f
这篇文章提出了一种x-vector的架构。为了更好地在输入语音中使用说话人信息,我们提出用结构化的自注意力机制帧级权重,用自注意机制和加权的统计池化层。不同于STL 2016 【End-to-end attention based text-dependent speaker verification】, 这篇文章的工作是文本无关并且是训练、测试数据不同的。因此语音信息可能没有帮助甚至无法使用。1 w6 S9 e6 U, y% w
然而在最先进的工作中,这些池化机制分配同等权重和帧级特征。张等人提出了一种注意力模型来对于文本相关的说话人识别应用,结合帧级特征。8 F3 [$ ?' ]. J+ |: J9 F: c
Speaker verification system( N) A) M1 t6 z! G! E
- E' a8 _) p. Y2 q作者把自己的方案和两个x-vector的baseline方案进行了对比。+ z7 d' u7 S8 Q, I
+ ~- T1 a' f; w8 H- ]6 u
其中图一这个网络结构:L1~ L5使用了时延神经网络,tdnn可以很大程度上保留上下文信息,起到取代rnn的作用,而且tdnn是卷积网络,可以并行计算,rnn不行,tdnn比rnn快,kaldi里面也是强推tdnn,具体L1~ L5的操作如下图所示:+ e5 z: W; D( t8 F
xv每次卷积计算的时候第一层只取输入的5帧,第二层取第一层的3帧,但是这三帧是隔一帧取一帧,第三层取第二层的三帧,隔两帧取一帧。' B/ P1 Q2 }" a8 R f+ m$ K) ?% O
% Y7 x: X! X2 _ j然后统计池化层聚合了所有帧级输出向量,计算他们的平均值和标准差。池化的作用使DNN可以从变化长度的语音中产生定长的表征向量。平均和标准偏差合并在一起,然后向前传送到L6和L7,最后输出到softmax层。 9 \; A2 z& p. l4 ^1 C9 X- }- j# W5 h7 F: ^4 S: V% |+ O' X
比如一段说话时长为T的语音,其输出向量为H = {h1, h2, …, hT},ht是输入帧xt的隐藏表征(通过了L1 ~ L5的TDNN时延神经网络的隐含表示)。我们认为ht的维度是dh。那么,整个H语音隐含向量是dhT。自注意力机制将整个隐含表达H向量作为input,并且输出矩阵A: ' W# m1 ?$ ] _( j7 N: I$ t0 l# t, v; M F8 V- e9 i1 G
H维度dhT;W1维度dhda;W2维度dadr,另外dr是一个超参数,表达注意力机制的多头个数。g(·)是ReLU,softmax是column-wise (按照列分类的)。所以最后得,softmax(T*dr维) => dr维的行向量结果。 ^6 q0 Z% `* N1 U$ s2 h& ~' |7 n* m5 y
因为由(1)知道,A是自注意后得到的权重矩阵,每一个A矩阵的列向量是符号向量,表示了不同ht的权重。当注意力头数是1时,就是一个简单从H中计算得来的加权平均向量。. D. {6 B& j; g5 g! K( g
1 {1 x% d. ?1 h. e0 Z5 b6 b
很明显的是,不同说话人特征不同的原因有多个方面,特别是当语音片段很长的时候。通过增加dr,我们能够轻松的获得多注意力头来学习一个说话人语音的不同方面。为了增加向量的多样性,因此每个注意力透能够从相同的语音片段中获得不同的信息。一个惩罚函数表示如下:- D- J" G; k) H2 l/ S' ?# [! H# a
; W& _: {% s% P& q% C D
P和L2范式非常接近,所以它是想让这个A的权重平方越来越小。 # a+ r% D* n1 {! }; o! V/ ^ 1 W9 X9 n& l: M- p5 @: s \Experiment, H8 B/ i, k) `$ {) e