Python 为什么librosa图书馆的声谱图的持续时间是实际音轨的两倍?

Python 为什么librosa图书馆的声谱图的持续时间是实际音轨的两倍?,python,audio,spectrogram,librosa,Python,Audio,Spectrogram,Librosa,我使用以下代码从大约30秒的录制音频信号中获取Mel频谱图: 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(se

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

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秒)。代码出了什么问题

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

您的
librosa.display.spechow
应包括以下参数:采样率
sr=
以及跃点大小
跃点大小=
。这些参数的默认值分别为22050和512。如果设置不正确,则会导致生成的光谱图中的x轴不正确


参考资料:

您的原始样本是否来自立体声文件?是的,它是一个立体声wav文件@PaulROK-因此,如果您将样本视为单个通道,那么您将获得两倍的持续时间。您知道在从librosa调用spectrogram方法时是否需要设置任何属性以避免这种情况吗?顺便说一句,非常感谢您的回答,这帮了大忙@PaulRI我不熟悉特定的库,但是提取单个(左或右)通道,或者将两个通道合并到单个(单)通道中,然后进行处理应该是相当简单的。我正在以12000采样率工作90秒。光谱图显示了错误的持续时间,但光谱图本身实际上是正确的,对吗?很有可能。但是最好将正确的选项传递给specshow,以验证事情是否如您所期望的那样。我的代码如下所示:data,sr=librosa.load(file\u name,sr=None,duration=90)
D=librosa.amplication\u to\u db(np.abs(librosa.stft(data)),ref=np.max)

librosa.display.specshow(D,y_轴='linear',x_轴='time',sr=12000)

我传错了吗?看起来差不多是对的。但是如果你有问题,你应该打开一个新问题。现在光谱图显示的持续时间正确,但采样率错误:(.谢谢你:)