#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()
Вы можете видеть, что теперь все дисплеи находятся в естественных координатах.