2017-05-07 4 views
1

Ich versuche, die Wellenform einer Audiodatei in Python zu plotten.Plotten Audio von Librosa in Matplotlib

Dies ist mein Code (ich die Librosa Bibliothek bin mit):

import plot as plt 

def save_plot(filename): 
    y, sr = librosa.load(filename)   
    plt.plot(y, 'audio', 'time', 'amplitude') 

Wo die plot.py Datei ist:

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) 

Die seltsame Sache ist, dass, obwohl ich eine bekommen Diagramm, das wie eine gültige Wellenform aussieht: waveform

Die Audiodatei ist nur 5 Sekunden lang. Daher verstehe ich nicht, worüber die x-Achse spricht; es scheint zu 90000 zu gehen?

Dank

Antwort

3

Die Wellenform wird zu jedem Zeitpunkt Ihre Audiodatei abgetastet wird, einen Datenpunkt haben, können sie von 8000 Hz bis 48 kHz abgetastet werden. 90.000/5 = 18000 Hz.

Betrachten Sie die Variable, die Sie gerade ignorieren von librosa.load, das ist die Abtastrate, mit der Sie die Zeitskala herausfinden können.

+0

Danke! Um sicher zu sein, dass ich es bekommen habe, ist meine Abtastrate ca. 22000. Bedeutet das, dass, weil meine Audiodatei 5 Sekunden ist, die x-Achse die 22000 * 5 = 110000 Samples darstellt, die aufgenommen wurden, und nicht die Zeit? – pk1914

+0

@ pk1914 "ca .. 22000" ist eine seltsame Sache über die Abtastrate einer "normalen" Sound-Datei zu sagen. Ist es (genau) 22050? – Matthias

+0

Sie haben Recht! Ich denke, es ist eine spezielle Nummer? Warum? Vielen Dank! – pk1914