Librosa 波形图在 X 轴上显示错误的时间
Librosa Waveplot Displaying Wrong Time on X-Axis
我正在尝试将波图可视化如下:
sig, rate = librosa.load(test_audio, sr=32000, offset=None)
plt.figure(figsize=(15, 5))
librosa.display.waveplot(sig, sr=3200)
它提供了这个结果:
如果您查看此 x 轴,它会显示为 8 分钟的音频文件,但实际上只有 47 秒长。我在这里错过了什么?
我认为 x-axis
在 samples
中。默认情况下,该方法对信号进行下采样,这意味着要对齐另一个时间序列赞助人需要计算其在 samples
中的 x
位置,然后通过 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()
你可以看到,现在所有的显示都是自然坐标。
我正在尝试将波图可视化如下:
sig, rate = librosa.load(test_audio, sr=32000, offset=None)
plt.figure(figsize=(15, 5))
librosa.display.waveplot(sig, sr=3200)
它提供了这个结果:
如果您查看此 x 轴,它会显示为 8 分钟的音频文件,但实际上只有 47 秒长。我在这里错过了什么?
我认为 x-axis
在 samples
中。默认情况下,该方法对信号进行下采样,这意味着要对齐另一个时间序列赞助人需要计算其在 samples
中的 x
位置,然后通过 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()
你可以看到,现在所有的显示都是自然坐标。