声学特征提取

声学特征提取流程图
在这里插入图片描述

语谱图

语谱图的横坐标是时间,纵坐标是频率,坐标点值为语音数据能量。由于是采用二维平面表达三维信息,所以能量值的大小是通过颜色来表示的,颜色深,表示该点的语音能量越强。

语谱图形成过程

  • 信号预加重

因为语音信号的功率谱随频率的增加而减小,导致语音的大部分能量都集中在低频部分,从而导致高频部分的信噪比很低。因此一般使用一阶高通滤波器去提升信号在高频部分的信噪比。对语音进行完预加重后,然后就是分帧加窗操作;

  • 对信号进行分帧加窗,进行STFT, 得到每帧信号的频谱图;

对于一段语音,以10ms~30ms 为一帧,为了保证帧与帧之间平滑过渡保持连续性,帧与帧之间会有重叠。一段语音信号x(t) , 通过分帧之后, 数据由一维信号变为二维信号;分帧之后,变为x(m,n)m为帧长, 代表每一帧的长度;n 为帧的个数, n 列代 n个帧;

  • 对频谱图进行旋转加映射;
  • 将变换后的多帧频谱进行拼接,形成语谱图;

语谱图形成原理

频谱spectrum 的产生

将每一帧的数据都进行FFT变换(严格来讲, 每帧数据加窗后做FFT , 称之为STFT),由 x ( m , n ) x(m,n) x(m,n) 得到 X ( m , n ) X(m,n) X(m,n) X ( m , n ) X(m,n) X(m,n) 称作频谱, 反应了频率与能量之间的关系。

在实际使用中,频谱图有三种,即

  • 线性振幅谱
  • 对数振幅谱:(对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB分贝)。
  • 自功率谱

这个变换的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号。

语谱图作用

因为声谱图中有很多重要的特征, 比如音素特征;共振峰特征(formants 即频谱图中的峰值)以及观察他们的转变趋势, 可以更好的识别音频;

  • 语音信号的时间-频率表示方法:
  • 语谱图是研究语音(音素Phone)的工具
  • 语音学家对音素Phone及其特性进行直观研究
  • 隐马尔科夫模型隐含了语音到文本系统的语谱图模型有助于评估文本到语音系统——一个高质量的文本到语音系统应该产生合成语音,其频谱图应该与自然句子几乎一致

MFCC算法

参考地址

预加重

为了避免在后边的FFT操作中出现数值问题,我们需要加强一下高频信息,因为一般高频能量比低频小。其预加重函数如下所示:
y ( n ) = x ( n ) − α ⋅ x ( n − 1 y(n) = x(n)-\alpha\cdot x(n-1 y(n)=x(n)αx(n1

分帧

我们要对语音数据做傅里叶变换,将信息从时域转化为频域。但是如果对整段语音做FFT,就会损失时序信息。因此,我们假设在很短的一段时间t内的频率信息不变,对长度为t的帧做傅里叶变换,就能得到对语音数据的频域和时域信息的适当表达。例如我们这里的采样点数为200000个点,如果真的这样做的话,就很麻烦了,于是我们在语音分析中引入分帧的概念,将原始语音信号分成大小固定的N段语音信号,这里每一段语音信号都被称为一帧。

但是,如果我们这样分帧的话,帧与帧之间的连贯性就会变差,于是我们每一帧的前N个采样点数据与前一帧的后N个采样点数据一样。

对于整个采样点数据可以分为多少帧以及帧与帧之间交叉的采样点个数N,不是随便分的,一般来说帧长设置为25 m s ms ms,帧移设置为10 m s ms ms

帧数 = f s ⋅ 0.025 = 0.025 f s ( 个采样点 ) 帧数 = f_s\cdot 0.025=0.025f_s(个采样点) 帧数=fs0.025=0.025fs(个采样点)

帧移 = f s ⋅ 0.001 = 0.001 f s ( 个采样点 ) 帧移=f_s\cdot 0.001=0.001f_s(个采样点) 帧移=fs0.001=0.001fs(个采样点)

加窗

将信号分帧后,我们将每一帧代入窗函数,窗外的值设定为0,其目的是消除各个帧两端可能会造成的信号不连续性(即谱泄露 spectral leakage)。常用的窗函数有方窗、汉明窗和汉宁窗等,根据窗函数的频域特性,常采用汉明窗(hamming window)。

W ( n ) = ( 1 − α ) − a ⋅ c o s ( 2 ⋅ π ⋅ n N ) , 1 ≤ n ≤ N W(n)=(1-\alpha)-a\cdot cos(2\cdot \pi\cdot\frac{n}{N}), 1\leq n\leq N W(n)=(1α)acos(2πNn),1nN

梅尔滤波器

梅尔值,这是一个新的量度,相比于正常的频率机制,梅尔值更加接近于人耳的听觉机制,其在低频范围内增长速度很快,但在高频范围内,梅尔值的增长速度很慢。每一个频率值都对应着一个梅尔值,其对应关系如下

m = 2595 ⋅ log ⁡ 10 ( 1 + f 700 ) m = 2595\cdot \log_{10}(1+\frac{f}{700}) m=2595log10(1+700f)

Python声学特提取是指使用Python编程语言来提取音频信号中的种声学特征。声学特征是对音频信号进行数分析和处理后得到的一些数值指标,可以用于音频信号的分类、识别、分析等任务。 在Python中,使用一些库和工具来进行声学特征提取,其中最常用的是Librosa和pyAudioAnalysis。 1. Librosa是一个用于音频和音乐信号处理的Python库,它提供了丰富的函数和工具来提取各种声学特征。例如,可以使用Librosa提取音频信号的时域特征(如时长、能量、过零率等)、频域特征(如梅尔频谱系数、色度谱等)以及其他高级特征(音调、节奏等)。Librosa还提供了可视化工具,可以将提取的特征可视化展示出来。 2. pyAudioAnalysis是另一个用于音信号处理和分析的Python库,它提供了一系列函数和工具来进行声学特征提取。pyAudioAnalysis支持多种特征提取方法,包括时域特征、频域特征、光谱特征、时频特征等。此外,pyAudioAnalysis还提供了一些器学习算法,可以用于音频信号的分类和识别。 使用这些库进行声学特征提取的步骤通常包括以下几个步骤: 1. 读取音频文件:使用Python库中的函数读取音频文件,将其转换为音频信号。 2. 预处理:对音频信号进行预处理,如去除噪声、平滑等。 3. 特征提取:使用相应的函数从音频信号中提取所需的声学特征。 4. 特征表示:将提取的特征表示为量或矩阵形式,以便后续处理和分析。 5. 可视化:可选步骤,将提取的特征可视化展示出来,以便更直观地理解和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞华1993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值