2017-09-04 706 views
1

我無法用我的聲音自定義文件路徑中創建一個librosa MEL-譜圖。使用Librosa來繪製MEL-頻譜

我下面這個文檔: https://librosa.github.io/librosa/generated/librosa.feature.melspectrogram.html

而且我已經看過這個堆棧溢出職位: Spectrograms generated using Librosa don't look consistent with Kaldi?

然而這一切都不幫我解決我的問題。

import librosa 
y, sr = librosa.load("path_to_my_wav_file") 
librosa.feature.melspectrogram(y=y, sr=sr) 
import matplotlib.pyplot as plt 
plt.figure(figsize=(10, 4)) 
librosa.display.specshow(librosa.power_to_db(y,            
ref=np.max), y_axis='mel', fmax=8000, x_axis='time') 
plt.colorbar(format='%+2.0f dB') 
plt.title('Mel spectrogram') 
plt.tight_layout() 

有人能告訴我如何解決此代碼,以便它正確顯示並保存mel-spectrogram到jpg文件?謝謝!

回答

2

哦,你的問題主要是關於如何將其保存爲jpg 如果你只是想顯示的圖片,你只需要添加一行代碼: plt.show()

如果你想保存JPG

,無軸,無白邊:

import os 
import matplotlib 
matplotlib.use('Agg') # No pictures displayed 
import pylab 
import librosa 
import librosa.display 
import numpy as np 

sig, fs = librosa.load('path_to_my_wav_file') 
# make pictures name 
save_path = 'test.jpg' 

pylab.axis('off') # no axis 
pylab.axes([0., 0., 1., 1.], frameon=False, xticks=[], yticks=[]) # Remove the white edge 
S = librosa.feature.melspectrogram(y=sig, sr=fs) 
librosa.display.specshow(librosa.power_to_db(S, ref=np.max)) 
pylab.savefig(save_path, bbox_inches=None, pad_inches=0) 
pylab.close() 
+0

其實,這種解決方案並不爲python3工作,因爲我無法下載scikit.audiolab。你可以請更新你的答案,使其與Python 3兼容? –

+0

我使用scikits.audiolab,因爲我認爲librosa.load()性能低下。如果你不介意,你可以使用它,或者閱讀wav庫。它的作用就是當我與librosa.load取代wavread僅讀取數據WAV – zxf

+0

(「路徑WAV文件」),我得到的錯誤ValueError異常:沒有足夠的數值解壓縮(預計3,拿到2) –