论文
论文:TRISTOUNET: TRIPLET LOSS FOR SPEAKER TURN EMBEDDING
摘要
TristouNet是一种基于长短时记忆循环神经网络(LSTM)的神经网络结构,旨在将语音序列投影到一个固定维度的欧氏空间。得益于三元组损失范式在训练中的使用,使得embedding序列可以直接使用欧氏距离进行比较。在短语音轮(500ms-5s)和说话人改变检测中的实验表明,TristouNet在当前两种任务最先进的性能上获得了显著提升。
PS:本文的引言部分梳理了说话人识别相关任务的研究内容和研究进展,我觉的有兴趣的读者可以详细阅读,帮助建立对这个研究领域的认识,但是这里就省略了
模型结构
TRIPLET LOSS FOR SEQUENCE EMBEDDING
三元组样本(triplet sampling)模块产生三元组((xa, xp, xn),其中xa是从一个给定的说话人的序列(称为anchor,锚)中提取的特征, xp是从另一个来自相同说话人的序列(称为positive,正例), xn是来自另一个不同说话人的序列(称为negative,负例)。然后所有的三个特征向量通过神经网络embedding,最终通过三元组损失来优化,使anchor和positive之间的距离最小,使anchor和negative之间的距离最大。
Triplet loss
τ
\tau
τ为所有可能的三元组
τ
=
(
x
a
τ
,
x
p
τ
,
x
n
τ
)
\tau=(x_a^\tau,x_p^\tau,x_n^\tau)
τ=(xaτ,xpτ,xnτ)
为了使positive和negative之间的更好分离所以给公式下式增加一个安全差值
α
\alpha
α,
Δ
τ
=
∣
∣
f
(
x
a
τ
−
f
(
x
a
τ
)
∣
∣
2
2
−
∣
∣
f
(
x
a
τ
)
−
g
(
x
n
τ
)
∣
∣
2
2
\Delta_\tau=||f(x_a^\tau - f(x_a^\tau)||_2^2 - ||f(x_a^\tau) - g(x_n^\tau)||_2^2
Δτ=∣∣f(xaτ−f(xaτ)∣∣22−∣∣f(xaτ)−g(xnτ)∣∣22
对于任意
τ
\tau
τ,我们希望
Δ
τ
+
α
<
0
\Delta_\tau+\alpha<0
Δτ+α<0,
损失最小化被下式更加精准的定义
Triplet sampling strategy
生成所有可能的三元组是没有效率也是没有效果的,所以关注约束 Δ τ + α < 0 \Delta_\tau+\alpha<0 Δτ+α<0,任何对损失没有贡献的三元组都会使训练变得更慢,所以采用另外的采样策略,随机n个样本序列,两两组合个数n(n-1)/2,又由于有N个说话人,也就是有N个锚点Xa,所以有Nn(n-1)/2个三元组,我从中选择符合: Δ τ + α > 0 \Delta_\tau+\alpha>0 Δτ+α>0的negative。
TristouNet sequence embedding
这是用于提取embedding的神经网络结构。有两个LSTM,都使用特征序列x作为输入。其中,第一个LSTM按时间顺序处理x,第二个LSTM按倒序处理,两个网络的输出经过了均值池化,然后输出的d维向量会被串联在一起,使用均值池化的好处是可以把变长的输入投影到一个固定维度的空间。但是在本文中只使用固定维度的输入以评估时间对该方法性能的影响。然后是两个全连接层被叠加在一起(注意两个全连接层宽度不同),最后是一个L2归一化确保embedding为d维。
数据集
1.ETAPE TV 经过处理标注的数据集。
结果
图6总结了改变最终阈值时得到的结果。基于嵌入的说话人变化检测方法明显优于基于BIC和散度的(Divergence)方法。虽然它并没有提高可达到的最佳纯度(95.2% vs. 95.1%Divergence),但基于嵌入的说话人变化检测确实显著提高了覆盖率。例如,在94.4%纯度时,覆盖率是55%,而基于BIC和分歧的方法停留在48%。换句话说,这意味着假设的话语轮平均长了15%,但纯度相同(也就是说纯度相同的情况下覆盖率更高了)。