2

我正在使用以下代码从大约 30 秒的录制音频信号中获取梅尔频谱图:

spectrogram =  librosa.feature.melspectrogram(y=self.RawSamples,sr=self.SamplingFrequency, n_mels=128, fmax=8000)

    if show:
        plt.figure(figsize=(10, 4))
        librosa.display.specshow(librosa.power_to_db(self.Spectrogram, ref=np.max), y_axis='mel', fmax=8000, x_axis='time')
        plt.colorbar(format='%+2.0f dB')
        plt.title('Mel spectrogram')
        plt.tight_layout()

获得的频谱图:梅尔频谱图

你能解释一下为什么时间轴描绘了两倍的持续时间(应该是 30 秒)。代码出了什么问题?

4

2 回答 2

2

您需要将采样率传递给librosa.display.specshow(sr=self.SamplingFrequency)。如果不是,则默认为 20050,如果self.SamplingFrequency是不同的值,则会显示错误的长度。

于 2018-07-15T18:06:36.397 回答
0

librosa.display.spechow应该包括参数:采样率sr=<your_sampling_rate>和跳数hop_size=<your_hop_size>。这些参数的默认值分别为 22050 和 512。未正确设置它们会导致生成的频谱图中的 x 轴不正确。

参考: http: //man.hubwiz.com/docset/LibROSA.docset/Contents/Resources/Documents/generated/librosa.display.specshow.html

于 2021-04-06T18:10:42.130 回答