在 matplotlib 中绘制来自 librosa 的音频
Plotting audio from librosa in matplotlib
我正在尝试绘制 Python 中音频文件的波形图。
这是我的代码(我使用的是 Librosa 库):
import plot as plt
def save_plot(filename):
y, sr = librosa.load(filename)
plt.plot(y, 'audio', 'time', 'amplitude')
plot.py 文件所在位置:
import matplotlib.pylab as plt
def plot(vector, name, xlabel=None, ylabel=None):
plt.figure()
plt.plot(vector)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.plot()
plt.savefig('static/plots/' + name)
奇怪的是,即使我得到的图看起来像一个有效的波形:
音频文件只有5秒长。因此,我不明白 x 轴在说什么;好像涨到90000了?
谢谢
每次对音频文件进行采样时,波形都会有一个数据点,可以从 8000 Hz 到 48 kHz 进行采样。 90,000/5 = 18000 赫兹。
查看您当前从 librosa.load 中忽略的变量,即采样率,它可以让您计算出时间尺度。
这就是您使用 matplotlib.pyplot
绘制矢量的原因,该矢量包含许多项,因为它(可能)每秒采样 22050 个数据点。如果你得到一个 5 秒的音频文件,那么你将得到 5 * 22050 = 110250 个数据点,这些数据点将绘制在图中。您可以使用 librosa
:
的正确方法,而不是使用 matplotlib.pyplot
import librosa
import librosa.display
y, sr = librosa.load(<path_audio_file>, sr=<sample_rate>)
fig, ax = librosa.display.waveplot(y, sr=sr)
因为它保留了采样率作为信息,所以它会在正确的时间长度上对时间序列进行归一化!
请注意,要使用 librosa.display
,您需要明确导入它。
如果您对更多详细信息感兴趣,请查看 librosa.display.waveplot。
我正在尝试绘制 Python 中音频文件的波形图。
这是我的代码(我使用的是 Librosa 库):
import plot as plt
def save_plot(filename):
y, sr = librosa.load(filename)
plt.plot(y, 'audio', 'time', 'amplitude')
plot.py 文件所在位置:
import matplotlib.pylab as plt
def plot(vector, name, xlabel=None, ylabel=None):
plt.figure()
plt.plot(vector)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.plot()
plt.savefig('static/plots/' + name)
奇怪的是,即使我得到的图看起来像一个有效的波形:
音频文件只有5秒长。因此,我不明白 x 轴在说什么;好像涨到90000了?
谢谢
每次对音频文件进行采样时,波形都会有一个数据点,可以从 8000 Hz 到 48 kHz 进行采样。 90,000/5 = 18000 赫兹。
查看您当前从 librosa.load 中忽略的变量,即采样率,它可以让您计算出时间尺度。
这就是您使用 matplotlib.pyplot
绘制矢量的原因,该矢量包含许多项,因为它(可能)每秒采样 22050 个数据点。如果你得到一个 5 秒的音频文件,那么你将得到 5 * 22050 = 110250 个数据点,这些数据点将绘制在图中。您可以使用 librosa
:
matplotlib.pyplot
import librosa
import librosa.display
y, sr = librosa.load(<path_audio_file>, sr=<sample_rate>)
fig, ax = librosa.display.waveplot(y, sr=sr)
因为它保留了采样率作为信息,所以它会在正确的时间长度上对时间序列进行归一化!
请注意,要使用 librosa.display
,您需要明确导入它。
如果您对更多详细信息感兴趣,请查看 librosa.display.waveplot。