librosa.stft & librosa.core.stft

该函数是音频信号短时傅里叶变化的librosa实现,旧版本调用方式为librosa.core.stft, 目前新版本已经修改为librosa.stft

文档地址 : https://librosa.org/doc/0.8.0/generated/librosa.stft.html

函数头:
librosa.stft(y, n_fft=2048, hop_length=None, win_length=None, window=‘hann’, center=True, dtype=None, pad_mode=‘reflect’)

在这里插入图片描述

  • stft : short-time Fourier Transform。
  • y : numpy数组,一般来自librosa.load(path, sr)[0]。
  • n_fft : stft计算过程中的帧长,单位为采样点,默认值为2048,指的是采样率为22050时93ms音频对应的采样点,对于其他采样率的音频,可以适当修改。
  • hop_length : 帧移。默认hop_length=nfft // 4。分帧涉及的概念,由于stft是短时傅里叶变换,需要首先将音频分帧,一帧一帧向后滑动不断计算,这里向后滑动的距离就是hop_length, 单位也是采样点数。此外这个概念与overlapping相关,帧与帧之间需要有重叠,才能保证信号的平滑星,这里重叠的长度(采样点数)就是overlapping, n_fft = hop_length + overlapping。这里hop_length会影响最终结果的帧数,但是对频率分辨率并不会产生影响。
  • win_length : 窗函数的长度,一般与 n_fft 相等。帧长会影响stft的时间分辨率,但是需要注意与频率分辨率取得平衡。窗函数的长度与频带宽一般成反比,具体可参见语谱图 基频 共振峰和宋知用老师《matlab语音信号分析与合成》2.4.2节。
  • window : 窗函数。默认使用汉宁窗。
  • center : 一帧开始的位置。默认是True, 表示当前帧t是以 t*hop_length 这一点为第t帧的中心点。否则是以 t*hop_length 这一点为一帧的起始点。
  • dtype:D的复数值类型。默认值为64-bit complex复数
  • pad_mode:如果center = True,则在信号的边缘使用填充模式。默认情况下,STFT使用reflection padding。
  • 返回 : 是一个复数矩阵,shape = [1+n_fft/2, n_frams]
    • 其中,n_fft/2是因为实数FFT信号具有对称性,我们只需要去一般的数据分析即可,全部返回有数据冗余。
    • n_frames: n_frames = (speech_len) // hop_len + 1。 具体可以画图,信号处理之前首先需要padding, padding之后分帧,画图可以看到,真正与帧数有关系的,是hop_len。

一个示例如下:
在这里插入图片描述

参考:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值