说话人识别是从语音信号识别出说话者的任务,分为说话人辨认(speaker identification)和说话人确认(speaker verification)两类。文章提出了一种新颖的卷积结构SincNet,直接从波形提取特征,作为说话人识别任务的输入。实验表明,SincNet在说话人辨认和说话人确认任务上都有性能提升。
论文地址:
https://arxiv.org/abs/1808.00158
代码地址:
https://github.com/mravanelli/SincNet
引言
近年来,许多深度神经网络(DNNs)模型被用于说话人识别。过去大多数的尝试,都是基于手工设计的特征,例如FBank、MFCC等。这些特征在设计之初都是基于人类的听觉感知理论,并不能保证对于具体的语音任务都是最优的。因此,一些新的工作尝试将语音波形直接输入到CNN网络。
本文的作者认为,CNN在处理原始语音波形时,起到关键作用的是第一层卷积层。第一层的卷积核可能会捕捉到一些人类直觉之外的,但是对神经网络有效的一些特征。基于这个想法,本文提出SincNet,将第一层卷积层设计为可训练的带通滤波器。实验表明SincNet相比于标准的CNN,收敛更快,性能更好。
数据集
本文提出的方法在不同的数据集上进行了验证,包括 TIMIT 和 Librispeech 数据集。TIMIT 包含462名说话人,Librispeech包含2484名说话人。在预处理时,切除掉语音开头和结尾的静音部分。Librispeech 中的长语音也进行分割,在超过125ms的静音段处进行切割。
模型
第一层卷积层的设计
处理语音波形的第一层卷积,可以视为一组可训练的有限冲激响应滤波器(FIR),形式化描述如下:
其中
x
[
n
]
x[n]
x[n]是滑动窗口内的语音信号片段,
h
[
n
]
h[n]
h[n]是长度为
L
L
L的滤波器。在标准的CNN中,
h
[
n
]
h[n]
h[n]中所有的
L
L
L个元素都是从数据中学习的。在本文提出的SincNet中,将
h
[
n
]
h[n]
h[n]预定义为一个函数
g
g
g,
g
g
g只具有少量可学习的参数
θ
\theta
θ。因此,前面的卷积公式修改如下:
受到信号处理方法的启发,文章提出将
g
g
g定义为一个带通滤波器,因此
g
g
g就可以被描述成两个低通滤波器的结果的差分:
其中
f
1
f_{1}
f1 和
f
2
f_{2}
f2 是可学习的参数,代表带通滤波器的低、高截止频率。上式是
g
g
g的频域表示,经过逆傅里叶变换,最终得到滤波器
g
g
g的时域表示:
其中的
s
i
n
c
sinc
sinc函数定义为:
根据奈奎斯特采样定理,
f
f
f应当不超过采样频率的一半。但是文章的作者指出并没有必要加入这一限制到网络设计中,因为他们发现,
f
f
f经过训练后会很自然地符合这一规律。
在传统信号处理的方法中,加窗操作被用来减弱频谱泄露效应,本文中也在卷积中加入了窗函数,因此加窗后的滤波器为:
在本文中使用的窗函数是汉明窗,定义如下:
模型整体结构
诚如前文所述,文章的主要的贡献是对CNN的第一层卷积层进行改进。因此,在第一层卷积之后,使用了常见的用于说话人识别的网络结构。模型的整体架构如下:
实验
说话人识别辨认
本文在TIMIT和Librispeech数据集上训练了说话人辨认SincNet模型,并与基线系统进行比较。在不同数据集上,SincNet的表现均超过所有基线系统。
说话人确认
文章还在Librispeech上进行说话人确认实验,分别比较了基于d-vector和基于DNN-class两类方法。可以看到,两类方法上,SincNet的性能都是最优的。
结论
本文提出了SincNet,一种新颖的处理时域波形的卷积网络结构。SincNet将第一层卷积作为可训练的FIR,使得网络的可解释性变得更强。SincNet的结构非常简洁,在实验中也表现出了比其它传统网络更快的收敛速度和更好的性能。SincNet是将信号处理概念融入到网络架构设计中的一次成功的尝试。

扫码识别关注,获取更多论文解读