2017-05-07 103 views
1

我想繪製一個音頻文件在Python中的波形。在matplotlib中繪製librosa的音頻

這是我的代碼(我用的是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) 

奇怪的是,即使我得到一個這個曲線看起來像一個有效的波形: waveform

音頻文件只有5秒長。因此,我不明白x軸在說什麼;它似乎高達90000?

感謝

回答

3

波形將在每個音頻文件被採樣的時間點的數據,他們可以從8000赫茲採樣爲48kHz。 90,000/5 = 18000Hz。

看看你目前從librosa.load中忽略的變量,即採樣率,它可以讓你計算出時間刻度。

+0

謝謝!爲了確保我得到了它,我的採樣率大約是。 22000.這是否意味着,因爲我的音頻文件是5秒鐘,x軸代表22000 * 5 = 110000個採樣,而不是時間? – pk1914

+0

@ pk1914「大約22000」對於「正常」聲音文件的採樣率來說是一件很奇怪的事情。這是否恰好是22050? – Matthias

+0

你是對的!我猜這是一個特殊的數字?爲什麼這樣?謝謝! – pk1914