2017-09-04 703 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) –