2016-07-04 7 views
3

Wenn dabei eine STFT und dann eine inverse STFT (ISTFT) auf einem 16 Bit 44,1 kHz Audiodatei mit der Bibliothek Librosa:Abtastrate Ausgabe mit Librosa

import librosa 

y, sr = librosa.load('test.wav', mono=False) 
y1 = y[0,] 
S = librosa.core.stft(y1) 
z1 = librosa.core.istft(S, dtype=y1.dtype) 
librosa.output.write_wav('test2.wav', z1, sr) 

der Ausgang ist nur ein 22-kHz-Audio-Datei . Warum? Wo ändert sich die Abtastrate in librosa?

Antwort

6

Die Funktion librosa.load() ermöglicht eine Zielabtastung, bei der die importierte Audiodatei erneut auf die durch das Schlüsselwortargument sr angegebene Zielabtastrate abgetastet werden kann.

Wenn Sie die ursprüngliche Abtastrate verwenden möchten, müssen Sie die Zielabtastrate explizit auf Keine setzen: sr=None. Standardmäßig ist sr=22050, weshalb Ihre Ausgabe ~ 22khz ist.

Als Beispiel:

Einstellung Standard - Unterabtastung 22.050 Hz

In[51]: filename = librosa.util.example_audio_file() 
In[52]: y1, sr1 = librosa.load(filename) 
In[53]: print sr1 
22050 

Explizit zur Standardeinstellung sr=None ursprünglichen Sampling sorgt für auf einen bestimmten

In[54]: y2, sr2 = librosa.load(filename,sr=None) 
In[55]: print sr2 
44100 

Unterabtastung erhalten Rate, 16.000 Hz

In[56]: y3, sr3 = librosa.load(filename,sr=16000) 
In[57]: print sr3 
16000 

Das Ergebnis: enter image description here

-1

Sein, weil u die einige abhängigen Bibliotheken nicht installiert hat, schlage ich vor, u sudo apt-get install libav-tools zu installieren, da es Audio- und Video-Tools im Linux-System installiert.

+0

das ist nicht die richtige Antwort yunus. –