首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个图形上绘制声波、mfcc和mel频谱图?

如何在单个图形上绘制声波、mfcc和mel频谱图?
EN

Stack Overflow用户
提问于 2021-08-16 05:38:54
回答 2查看 374关注 0票数 0

我有一个包含多个wav文件的文件夹(目前是4个)。我想在一行中绘制wav,它的mfcc和mel频谱图,所以最后是一个有12个图形的图形(每行有3个图形,因此是4行)。我无法绘制图表,只能提取特征。有人可以帮助这个for循环吗?我的意思是如何使用subplot命令以及如何在循环中存储每个图形。

问候

代码语言:javascript
复制
path=glob.glob('the path having four wav files/*.wav')

for p in path:
    y, sr = librosa.load(p, sr=16000)
    mfcc=librosa.feature.mfcc(y)
    S = librosa.feature.melspectrogram(y, sr)
    fig, ax = plt.subplot(4,3,.....)
    librosa.display.waveplot(y, sr=sr)
    librosa.display.specshow(librosa.power_to_db(S, ref=np.max))
    librosa.display.specshow(mfcc, x_axis="time",y_axis="mel")
    plt.show()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-17 04:49:35

最后的代码是:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import librosa
import librosa.display
import glob

path=glob.glob('E:/Python_On_All_Dataset/Four emotion_for plot/*.wav') 

fig, ax =  plt.subplots(nrows=4, ncols=3, sharex=True)

    
for i in range(4) :
   
    y, sr = librosa.load(path[i], sr=16000)
    librosa.display.waveplot(y, sr, ax=ax[i, 0])  # put wave in row i, column 0
    plt.axis('off')
    
    
   
    mfcc=librosa.feature.mfcc(y) 
    librosa.display.specshow(mfcc, x_axis='time', ax=ax[i, 1]) # mfcc in row i, column 1
   

    S = librosa.feature.melspectrogram(y, sr)
    librosa.display.specshow(librosa.power_to_db(S), x_axis='time', y_axis='log', ax=ax[i, 2])  # spectrogram in row i, column 2

我试着把这个轴(在每次绘图后都关闭,但不知何故不起作用)

票数 0
EN

Stack Overflow用户

发布于 2021-08-16 10:00:58

代码语言:javascript
复制
import matplotlib.pyplot as plt
Arrays=np.random.rand(6,10,10)
N_figures=Arrays.shape[0]
for Id in range(1,N_figures+1):
    Array=Arrays[Id-1]
    plt.subplot(N_figures/2,N_figures/3,Id)
    plt.imshow(Array)

您只需将imshow更改为所需的绘图即可。因为我没有频谱图文件,所以我使用随机创建的NumPy数组。您的实现无法工作,因为fig, ax = plt.subplot(4,3,.....)不适合使用。Fig和axs在函数plt.subplots not for中返回,plt.subplot.You也可以使用该方法,但在for循环之外,然后访问axs元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68797840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档