小编swe*_*e87的帖子

了解频谱图和 n_mels 的形状

我正在浏览这两个 librosa 文档:melspectrogramstft

我正在研究可变长度的音频数据集,但我不太了解形状。例如:

(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)
Run Code Online (Sandbox Code Playgroud)

输出:

torch.Size([128, 150])
22050
3.48
Run Code Online (Sandbox Code Playgroud)

我得到的有以下几点:

  1. 采样率是每秒获取 N 个样本,在本例中每秒获取 22050 个样本。
  2. 窗口长度是针对该音频长度周期计算的 FFT。
  3. STFT 是在音频的小时间窗口内进行 FFT 计算。
  4. 输出的形状为(n_mels, t)。t = 持续时间/fft 窗口。

我试图理解或计算:

  1. n_fft是什么?我的意思是它到底对音频波做了什么?我在文档中读到以下内容:

    n_fft : int > 0 [标量]

    用零填充后加窗信号的长度。STFT 矩阵 D 的行数为 (1 + n_fft/2)。默认值 n_fft=2048 个样本,对应于 22050 Hz 采样率下的 93 毫秒物理持续时间,即 librosa 中的默认采样率。


    这意味着在每个窗口中采集 2048 个样本,这意味着 --> 1/22050 * 2048 = 93[ms]。每 …

python audio spectrogram audio-processing librosa

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

audio ×1

audio-processing ×1

librosa ×1

python ×1

spectrogram ×1