声纹识别模型- ECAPA从0到1 -2

160 阅读3分钟

本章节主要介绍本次训练的前两步,数据来源,以及特征提取的作用和步骤以及每一步的意义,因为也是刚入门,如有错误,欢迎指正。

一.训练数据

1.数据来源

www.kaggle.com/competition…

因为训练需要大量数据模型,数据源考虑从网上下载,此处下载下来大概有100多种鸟类的声音,因为每种都有好几个音频数据,因为只是研究训练模型,本次只计划挑选其中的20条左右用来训练,且因为下载的音频格式是ogg,不确定能否可以直接使用,这个后期在看,如有必要可以考虑转换。

2.特征提取(Feature Extraction)

有非机器学习的方法提取出特征,Fbank或者MFCC,这种特征模拟了人耳的特性,因为人耳无法区分非常相近的两个声音,用这个特性可以区分特征,简单来说,就是在预处理中,我们从原始波形中提取频率特征(本次使用Fbank特征)到说话人模型中。 简单来说,就是提取音频中的声纹特征信息 提取主要分以下四步

  • 第1步:预加重
  • 第2步:分帧和加窗
  • 第3步:傅里叶变换和功率谱
  • 第4步:梅尔滤波器组

参考链接:

2.1 预加重

目的:为了增加语音的高频分辨率

  • 对语音的高频部分进行加重。
  • 公式: y(t) = x(t) - a*x(t-1)

大概理解:因为信号是连续的,预加重的时候用每一个信号减去后一个信号*系数, 其中系数a介于0.9-1.0之间一般用0.95 或者0.97(暂时不知道为啥)

2.2 分帧和加窗

目的:将连续的信号切成固定长度的连续片段,方便下一步的傅里叶变换

  1. 分帧:就是有overlap的split
  • 分帧是指在跟定的音频样本文件中,按照某一个固定的时间长度分割,分割后的每一片样本,称之为一帧,其中连续两帧之间需要有重叠
  1. 加窗
  • 为了解决由于信号的非周期截断,使全局更加连续,让每帧的信号中间大一些,两边小一些

  • 加窗本次使用汉明窗(Hamming)

  • 公式

    假设分帧后的信号为 S(n),n=0,1,2…,N-1,其中N为帧的大小

    S(n) = S(n) * W(n) W(n,a) = (1-a) - a * cos(2π/N-1) ,0<=n<=N-1

    同样,a是一个系数,一般情况取值为0.46

2.3 短时傅里叶变换 和 功率谱

目的: 分帧后的每一帧,通过短时傅里叶变换得到一个频谱,每个频谱通过计算,得到频谱对应的能量谱

1)短时傅里叶变换 * 为了更清晰的看出信号特征,得到每帧在频谱上的能量分布对于每一帧的加窗信号,进行N点FFT变换,也称短时傅里叶变换(STFT),N通常取256或512。

image.png

  • 为了获取语音信号的能量谱
  • image.png

2.4梅尔滤波器组

目的:模拟人耳对声音的非线性感知,低频更有辨别力

参考链接: