繁体   English   中英

"在 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<\/code>绘制向量的原因,该向量包含许多项,因为它(可能)每秒采样 22050 个数据点。 如果你得到一个 5 秒的音频文件,那么你会得到 5 * 22050 = 110250 个数据点,这些数据点将绘制在图中。 而不是使用matplotlib.pyplot<\/code>您可以使用正确的方法来使用librosa<\/code> :

import librosa
import librosa.display

y, sr = librosa.load(<path_audio_file>, sr=<sample_rate>)
fig, ax = librosa.display.waveplot(y, sr=sr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM