为什么来自 librosa 库的频谱图的持续时间是实际音轨的两倍?
Why spectrogram from librosa library have twice the time duration of the actual audio track?
我正在使用以下代码从大约 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()
获得的频谱图:Mel spectrogram
你能解释一下为什么时间轴描绘了两倍的持续时间(应该是 30 秒)。代码出了什么问题?
您需要将采样率传递给librosa.display.specshow
(sr=self.SamplingFrequency)。如果不是,它默认为 20050,如果 self.SamplingFrequency
是不同的值,它将显示错误的长度。
您的 librosa.display.spechow
应包括参数:采样率 sr=<your_sampling_rate>
以及跳跃大小 hop_size=<your_hop_size>
。这些参数的默认值分别为 22050 和 512。未正确设置它们会导致生成的频谱图中的 x 轴不正确。
我正在使用以下代码从大约 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()
获得的频谱图:Mel spectrogram
你能解释一下为什么时间轴描绘了两倍的持续时间(应该是 30 秒)。代码出了什么问题?
您需要将采样率传递给librosa.display.specshow
(sr=self.SamplingFrequency)。如果不是,它默认为 20050,如果 self.SamplingFrequency
是不同的值,它将显示错误的长度。
您的 librosa.display.spechow
应包括参数:采样率 sr=<your_sampling_rate>
以及跳跃大小 hop_size=<your_hop_size>
。这些参数的默认值分别为 22050 和 512。未正确设置它们会导致生成的频谱图中的 x 轴不正确。