STFT(短时傅里叶变换)音频特征提取,用于语音识别 python

本文介绍了在音频处理任务中,尤其是语音识别,如何利用STFT(短时傅里叶变换)提取音频特征。首先解释了原始音频信号的概念,接着详细阐述了STFT的原理,包括声谱图的生成、FFT参数N的影响以及FFT结果的对称性。此外,推荐使用librosa这一Python库来实现STFT操作,该库提供了丰富的音频处理和特征提取功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在各种音频相关的任务中,不管用什么模型或网络,得到所需的音频特征肯定是必要的一步。下面简单说一下STFT特征

一、原始信号
在说STFT之前,先说一下读入的原始信号,图像是在XY二维上描述的像素点的集合,相应的,原始音频只需要t一维上描述,从音频文件中读取出来的原始语音信号是一个一维数组,长度是由音频长度和采样率决定,比如采样率Fs为16KHz,表示一秒钟内采样16000个点,这个时候如果音频长度是10秒,那么raw waveform中就有160000个值,值的大小通常表示的是振幅。

二、STFT
1.概念——STFT短时傅里叶变换:STFT短时傅里叶变换,实际上是对一系列加窗数据做FFT。有的地方也会提到DCT(离散傅里叶变换),而DCT跟FFT的关系就是:FFT是实现DCT的一种快速算法。

2.概念——声谱图:对原始信号进行分帧加窗后,可以得到很多帧,对每一帧做FFT(快速傅里叶变换),傅里叶变换的作用是把时域信号转为频域信号,把每一帧FFT后的频域信号(频谱图)在时间上堆叠起来就可以得到声谱图。

3.FFT有个参数N,表示对多少个点做FFT,如果一帧里面的点的个数小于N就会zero-padding到N的长度。每个点对应一个频率点,某一点n(n从1开始)表示的频率为Fn=(n−1)∗Fs/N,第一个点(n=1,Fn等于0)表示直流信号,最后一个点N的下一个点(实际上这个点是不存在的)表示采样频率Fs。

4.FFT后我们可以得到N个频点,比如,采样频率为16000,N为1600,那么FFT后就会得到1600个点,FFT得到的1600个值的模可以表示1600个频点对应的振幅。因为FFT具有对称性,当N为偶数时取N/2+1个点,当N为奇数时,取(N+1)/2个点,比如N为512时最后会得到257个值。

以下有几个方便理解的图,转载过来的,大家可以用于理解:
在这里插入图片描述

每帧frame通过FFT得到一个向量,对应的是各频点的大小。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值