梅尔语谱图在自动编码器encoder中的应用
发布网友
发布时间:2022-12-23 10:48
我来回答
共1个回答
热心网友
时间:2023-08-27 22:36
最近在实践语音文件神经网络自动编码器encoder时一直创建语音文件不成功,经过几天学习发现进入了一个误区,输入神经网络的数据不能是原始的wav文件数据samples,而是应该做特征工程,提取梅尔语谱图。下面是摘抄的一些关键信息,然后在此基础上在此训练encoder。
那么在音频、语音信号处理领域,我们需要将信号转换成对应的语谱图(spectrogram),将语谱图上的数据作为信号的特征。语谱图的横轴x为时间,纵轴y为频率,(x,y)对应的数值代表在时间x时频率y的幅值。
得到了梅尔语谱图,想得到MFCCs就很简单了。首先,为啥要用MFCCs? 因为得到的梅尔谱系数是互相关的,在一些机器学习算法中可能会出问题,因为有些算法假设数据不存在互相关性。因此,可以用DCT变换来压缩梅尔谱,得到一组不相关的系数。
总的来说,过去在HMM、GMM等模型用的比较火的时候,多将MFCC用于特征提取,因为当时的机器学习算法有相应的不足。如今最热门的是以神经网络为代表的深度学习算法,神经网络内部复杂,在训练的过程中可以在网络内部将互相关的问题弱化,也因此DCT变换显得有些多余,何况还会提高计算量,而且DCT作为一种线性变换,有可能会导致损失信号中一些非线性信息。因此,如今Mel-spectogram用的更多。
在使用深度学习时实际上并没有处理原始格式的音频数据。我们常常是把音频数据转换为图像,然后使用标准的 CNN 架构来处理这些图像!深度学习模型很少将这种原始音频直接输入,大多数深度学习音频应用都使用声谱图来表示音频。
1/音频深度学习(第一部分):前沿技术 [https://rtcdeveloper.agora.io/t/topic/21480] .
声谱图X 轴上绘制时间,在 Y 轴上绘制频率,使用不同的颜色表示每个频率的振幅或强度。声谱图是利用傅立叶变换将信号分解成其组成频率而产生的。
2/音频深度学习(第二部分):为什么梅尔声谱图性能更佳 [https://rtcdeveloper.agora.io/t/topic/21571]
人类感知声音的方式比较独特,我们能够听到的大多数声音都集中在狭窄的频率和振幅范围内,人类不会线*知频率,我们对低频之间的差异比高频更为敏感,不能使用常规声谱图。在处理数据的频率和幅度时,必须通过梅尔刻度和分贝刻度来使用对数刻度,于是深度学习模型通常使用**梅尔声谱图**而不是简单的声谱图。
3/音频深度学习(第三部分):数据准备和增强 [https://rtcdeveloper.agora.io/t/topic/21658]
根据librosa.feature.melspectrogram计算得到melspectrogram图并librosa.power_to_db转换功率率图后生成文件npy,得到(12758, 128, 47)的数据。建立编码器和解码器网络再次训练自动编码器如下:
经过多次训练发现loss一直不下降,网络还是存在问题!
创建之后的梅尔语谱图仍然没有学习到wav单语音的模式,还得继续探索!