Волновая диаграмма Librosa, отображающая неправильное время по оси X

#python #matplotlib #librosa

Вопрос:

Я пытаюсь визуализировать волновой график следующим образом:

 sig, rate = librosa.load(test_audio, sr=32000, offset=None) plt.figure(figsize=(15, 5)) librosa.display.waveplot(sig, sr=3200)  

что обеспечивает этот результат:

волновая диаграмма

Если вы посмотрите на эту ось x, это будет выглядеть как 8-минутный аудиофайл, но на самом деле он длится всего 47 секунд. Что я здесь упускаю?

Ответ №1:

Я думаю x-axis , что он внутри samples . По умолчанию метод уменьшает значение сигнала, что означает, что для выравнивания другого временного ряда патрону необходимо вычислить его x позиции, samples а затем скорректировать их downsampling factor (по умолчанию 1000 / sr ).

Позвольте мне показать вам пример, может быть, это развеет ваши сомнения.

 import librosa import librosa.display import matplotlib.pyplot as plt import numpy as np  y, sr = librosa.load(librosa.util.example_audio_file())  tempo, beats = librosa.beat.beat_track(y=y, sr=sr, units='time', trim=False)  fig = plt.figure(figsize=(15, 8)) librosa.display.waveplot(y=y, sr=sr) plt.vlines(beats, -1, 1, color='r',linestyles="dashed") plt.grid()  

введите описание изображения здесь

Вы можете видеть, что теперь все дисплеи находятся в естественных координатах.