语音信号处理之语音特征提取(1)机器学习的语音处理

本文首先是将Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What's In-Between这篇2016年4月21号的文章翻译了一下,然后讲出一点自己的理解和注释。

机器学习的语音处理:滤波器组,梅尔频率倒谱系数(MFCC)以及两者之间的区别

语音处理在任何语音系统中都扮演着重要的角色,无论它是自动语音识别(ASR)还是说话者识别等等。 长期以来,梅尔频率倒谱系数(MFCC)是非常受欢迎的功能。 但是最近,滤波器组正变得越来越流行。 在这篇文章中,我将讨论滤波器组和MFCC,以及为什么滤波器组变得越来越流行。

计算滤波器组和MFCC涉及相同的过程,在这两种情况下,都将计算滤波器组,并通过一些额外的步骤可以获得MFCC。 简而言之,信号会通过预加重滤波器。 然后将其切成(重叠的)帧,并将窗口函数应用于每个帧; 之后,我们在每个帧上进行傅立叶变换(或更具体地说是短时傅立叶变换),并计算功率谱; 然后计算滤波器组。 为了获得MFCC,可将离散余弦变换(DCT)应用于滤波器组,以保留多个所得系数,而其余系数则被丢弃。 两种情况的最后一步是平均归一化。

 

建立


       在本文中,我从此处使用了一个16位PCM wav文件,称为“ OSR_us_000_0010_8k.wav”,其采样频率为8000 Hz。 wav文件是干净的语音信号,包括单个语音,在其中说出一些句子,中间有一些停顿。 为简单起见,我使用了信号的前3.5秒,大致相当于wav文件中的第一句话。
       我将使用Python 2.7.x,NumPy和SciPy。 这篇文章中使用的一些代码基于该存储库中可用的代码。

import numpy
import scipy.io.wavfile
from scipy.fftpack import dct

sample_rate, signal = scipy.io.wavfile.read('OSR_us_000_0010_8k.wav') # File assumed to be in the same directory
signal = signal[0:int(3.5 * sample_rate)] #Keep the first 3.5 seconds

'''
显示这个图片
plt.figure(figsize=(20,5)) # 修改坐标显示
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.plot(x , signal)
plt.show()
'''

原始信号在时域中具有以下形式:

时域信号

强化前

第一步是对信号应用预加重滤波器,以放大高频。 预加重滤波器在几种方面很有用:(1)平衡频谱,因为与低频相比,高频通常具有较小的幅度;(2)避免在傅立叶变换操作期间出现数值问题;(3)还可改善信号 噪声比(SNR)。

可以使用以下等式中的一阶滤波器将预加重滤波器应用于信号xx:

y(t)= x(t)-αx(t-1)

可以使用以下代码轻松实现,其中滤波器系数(αα)的典型值为0.95或0.97,pre_emphasis = 0.97:

emphasized_signal = numpy.append(signal[0], signal[1:
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值