我正在阅读这两篇Librosa文档:
我正在处理长度可变的音频数据集,但是我不太理解它们的形状。例如:
以下是翻译的结果:
melspectrogram
和 stft
。我正在处理长度可变的音频数据集,但是我不太理解它们的形状。例如:
(waveform, sample_rate) = librosa.load('audio_file')
spectrogram = librosa.feature.melspectrogram(y=waveform, sr=sample_rate)
dur = librosa.get_duration(waveform)
spectrogram = torch.from_numpy(spectrogram)
print(spectrogram.shape)
print(sample_rate)
print(dur)
输出:
torch.Size([128, 150])
22050
3.48
以下是翻译的结果:
我所掌握的要点如下:
- 采样率指的是每秒获取N个样本,本例中为每秒22050个样本。
- 窗口长度指的是用于计算音频该段时间内FFT的长度。
- STFT是在音频的小时间窗口中进行FFT计算。
- 输出的形状为(n_mels, t),其中t = 音频持续时间/FFT窗口。
我想理解或计算以下内容:
n_fft是什么?我想知道它对音频波形做了什么。我在文档中读到以下内容:
n_fft : int > 0 [scalar]
用零填充后的窗口信号长度。STFT矩阵D的行数为(1 + n_fft/2)。默认值n_fft=2048表示在22050 Hz的采样率下, 2048个样本对应物理持续时间为93毫秒。
这意味着每个窗口取2048个样本,也就是说 --> 1/22050 * 2048 = 93[ms]。FFT是针对每93[ms]的音频计算的吗?
这是否意味着窗口大小和窗口用于在这个帧中过滤信号?
在上面的示例中,我理解为我得到了128个梅尔频谱图,但具体指什么呢?
什么是hop_length?根据文档,我了解到它是如何将窗口从一个FFT窗口移动到另一个窗口的,对吗?如果该值为512并且n_fft也为512,那么这是什么意思?这是否意味着它会取23[ms]的窗口,计算此窗口的FFT并跳过下一个23[ms]的窗口?
如何指定我希望从一个FFT窗口重叠到另一个窗口?
请帮帮我,我看了很多计算频谱图的视频,但似乎无法在实际生活中看到它。