SincNet 原始波形的说话人识别
论文:M. Ravanelli, Y. Bengio, in 2018 IEEE Spoken Language Technology Workshop, SLT 2018 - Proceedings (Institute of Electrical and Electronics Engineers Inc., 2019), pp. 1021–1028.
主要贡献:
- 滤波器学习
- 数字信号波形来约束第一个卷积层的滤波器
- 滤波器参数少
摘要
说话人识别任务中,MFCC、FBANK、PLP 等频谱特征需要设定多个超参,例如帧长、帧间距、帧窗口类型和频谱个数。从原始模型直接学习说话人嵌入的方法采用数据驱动的方式直接学习滤波器参数。M. Ravanelli 提出 SincNet,该网络的第一层卷积层的参数化带通滤波器引入了数字信号的特定波形约束,例如 Hamming 窗。SincNet 能够很好地学到窄带说话人特性,例如音调和共振峰。实验表明:在 TIMIT 和 Librispeech 语料上,SincNet 收敛速度更快、计算量更好,且性能优于从原始波形学习的 CNN。
引言
在说话人识别领域,传统 i-vector 方法和深度学习方法大多采用手工设计的特征,例如 MFCC、FBANK。这些频谱特征可能阻碍了语音的音调和共振峰的学习。为了避免这个问题,以频谱图和原始波形作为输入的方法开始出现。目前,直接从原始波形学习的语音研究包括:情绪任务、说话人识别、欺骗行为检测和语音合成。
第一层卷积层是原始波形 CNN 模型最关键的部分,这部分需要处理两个问题:1)高维输入,2)梯度消亡的问题。CNN 学习滤波器还需要面临噪声、不协调的多频段形状、训练样本少等困难。
为了解决 CNN 学习滤波器的问题,SincNet 采用了一系列参数化的带通滤波器。滤波器的高低截止频率是唯一需要学习的参数。SincNet 表显著更快的收敛速度、优于 CNN 的性能和短语音的适应能力。
SincNet
SincNet 模型结构,采用 dnn_models.py 的 SincNet 实现:
- 波形:块 200 ms,10 ms 重叠,
- 模型:251 长度 * 80 滤波器 + 2 层 5 长度 * 60 滤波器 + 3 层 全连接层(2048) + softmax 分类起(卷积层可视化描述:https://github.com/vdumoulin/conv_arithmetic),
- 层归一化用于输入样本和所有卷积层,
- 批量归一化用于全连接层,
- eaky-ReLU **函数用于所有隐藏层,
- Sinc 层使用 mel-scale 截止频率作为初始化,
- 除了 Sinc 层的网络使用 “Glorot” 初始化策略;
- 训练过程:RMSprop 优化器,学习速率 0.001,alpha 0.95,epsilon 1e-7,小批量规模 128;
- 超参调试使用 TIMIT 数据集。
滤波器设计
滤波器的设计是 SincNet 的关键部分,M. Ravanelli 引入了数字信号处理方面的带通滤波器,具体过程如下:
-
标准 CNN 的滤波器执行输入波形和有限脉冲响应滤波器之间的时域卷积:
其中 是语音信号的一个块,例如 200 ms 语音信号; 表示长度 的一维滤波器; 是滤波器输出。实现过程可以参考 torch.nn.Conv1d。
-
将滤波器 参数化为 ,其中 是参数。
-
论文中采用矩形带通滤波器作为参数化滤波器的实现,其参数有两个:低频截止频率 和高频截止频率 ,具体地,在频率上的表达式为
使用逆向傅立叶变换,其时域形式为
其中,。
-
进一步对带通滤波器执行窗口化,来缓解通带中的纹波和阻带中的有限衰减,
论文中使用了 Hamming 窗口,测试表明过不同窗函数(例如 Hamming、Hann、Blackman 和 Kaiser)不会产生显著的差异。
在参数化滤波器中, 与 是两个需要优化的参数,它们满足以下三个约束条件:
- ,可引入新参数 来实现这一约束;
- ,可引入新参数 来实现这一约束,
- 还需要满足小于 Nyquist 频率,训练发现这个约束会被自然的满足。
这样设计的滤波器是可微分的,则可以联合 SincNet 模型的其它参数同时进行优化。
SincNet 属性
SincNet 的第一层卷积层采用 2 个参数的带通滤波器,它具有以下属性:
-
收敛速度快:引入滤波器形状的先验知识(来自数字信号处理),学习滤波器特性;
-
参数更少:SincNet 滤波器 2F vs. CNN 滤波器 LF,与滤波器长度无关;
-
计算高效:滤波器波形窗函数是对称函数,可以只计算一半,然后继承给另一半;
-
具有可解释性:第一层卷积层是具有可读、可解释的,实际上,它具有明确的物理意义。
实验设置
语料
语料有两个,分别是 TIMIT 与 Librispeech,数据集的设置如下:
-
声音动态检测(VAD)移除前后非语音片段,
-
语音段内高于 125 ms 作为划分为不同块的规则,
-
移除 TIMIT 句子校准(校准的句子,例如相同的文本),
-
TIMIT 中 5 个句子/人用于训练,3个句子/人用于测试,
-
Librispeech 随机选择 12-15s 训练素材,2-6s 测试素材,
-
TIMIT 训练集 462 人,Librispeech 训练集 2484 人。
说话人验证设定
说话人验证系统,获得说话人 id 的步骤:
-
说话人嵌入:d-vector 框架,最后的隐藏层的输出用于提取说话人特征,或者 DNN-class 使用 softmax 的后验评分;
-
cosine 距离计算注册语音和测试语音之间的相似度。
此外,冒名顶替者使用真实说话人的每个句子的 10 段语音。评测的冒名顶替者与训练的说话人不同。
基准方法设定
基准设置包含 CNN 基准和基于特征的说话人验证基准:
-
CNN + 原始波形
-
CNN + 39 MFCCs(静态 + Delta + Delta Delta) + batch normalization
-
MLP + 40 FBANK + layer normalization
-
i-vector:GMM-UBM + T + PLDA
其中,MFCC 与 FBANK 帧长 25 ms、帧间距 10 ms、窗口约 200 ms,GMM-UBM 2048 高斯成分,i-vector 400 维度,PLDA 采用 Librispeech 的训练集进行训练。
结果与分析
滤波器分析
Librispeech 语料上学习来测试滤波器学习的效果,Fig. 2 和 Fig. 3 表明:
- CNN:学到的滤波器的频率响应,一些像噪声,一些是多组形状;
- SincNet:矩形带通滤波器。
- SincNet 学到音调(男性:133 Hz,女性:234 Hz)、第一共振峰(500 Hz)和第二共振峰(900-1400 Hz)更加明显,更能适应说话人特性,这表明 SincNet 比 CNN 更能捕获窄带的说话人线索。
说话人鉴别
Fig. 4 表明,在 TIMIT 数据集上,SincNet 比 CNN 收敛速度更快,帧误差更低。
| 模型/语料(句子误差率) | TIMIT | Librispeech |
|---|---|---|
| DNN-MFCC | 0.99 | 2.02 |
| CNN-FBANK | 0.86 | 1.55 |
| CNN-Raw | 1.65 | 1.00 |
| SincNet | 0.85 | 0.96 |
上表描述了 SincNet 在说话人鉴别的段误差率上明显优于直接学习原始波形的 CNN,且能高于使用 MFCC 特征的 DNN 结构和 BFANK 特征的 CNN 结构。此外,Librispeech 语料上的测试结果说明了少量训练数据,CNN 无法利用 FBANKs 特征学到滤波器组。
说话人确认
| 模型/Librispeech 说话人嵌入(等误差率) | TIMIT | Librispeech |
|---|---|---|
| DNN-MFCC | 0.88 | 0.72 |
| CNN-FBANK | 0.60 | 0.37 |
| CNN-Raw | 0.58 | 0.36 |
| SincNet | 0.51 | 0.32 |
上表说明,在 Librispeech 语料上, DNN-class 说话人嵌入优于 d-vector,SincNet 实现了最优的性能,相比较 i-vector EER 1.1% 明显较优。
疑问
- 论文没有确定指出测试的说话人是否出现在训练集中。
- NIST SRE 和 VoxCeleb 的说话人识别语料没有被使用到实验中。
参考文献
- Muckenhirn H, Magimai-Doss M, Marcell S. Towards Directly Modeling Raw Speech Signal for Speaker Verification Using CNNS. ICASSP, IEEE International Conference on Acoustics, Speech and Signal Processing - Proceedings. 2018.
作者信息:
CSDN:https://blog.csdn.net/i_love_home?viewmode=contents
Github:https://github.com/mechanicalsea
2019级同济大学博士研究生 王瑞 [email protected]
研究方向:说话人识别、说话人分离