python生成mel频谱图并保存图片

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()
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要画出Log-Mel频谱图,需要进行以下步骤: 1. 读入音频文件,并将其转换为时间序列信号。 2. 将信号分帧,并进行加窗(通常使用汉明窗)。 3. 对每一帧进行快速傅里叶变换(FFT)。 4. 将FFT结果转换为功率谱,并将其映射到Mel频率尺度上。 5. 取对数并进行DCT变换,得到Log-Mel频谱系数(MFCC)。 6. 画出Log-Mel频谱图。 下面是一个简单的Python代码示例,用于绘制Log-Mel频谱图: ```python import librosa import librosa.display import matplotlib.pyplot as plt import numpy as np # 读入音频文件 y, sr = librosa.load('audio.wav') # 分帧并进行加窗 n_fft = 2048 hop_length = 512 win_length = 2048 S = np.abs(librosa.stft(y, n_fft=n_fft, hop_length=hop_length, win_length=win_length, window='hamming')) # 映射到Mel频率尺度 n_mels = 128 mel_f = librosa.filters.mel(sr=sr, n_fft=n_fft, n_mels=n_mels) melspec = np.dot(mel_f, S) # 取对数并进行DCT变换 logmelspec = librosa.power_to_db(melspec) mfcc = librosa.feature.mfcc(S=logmelspec, n_mfcc=20) # 绘制Log-Mel频谱图 librosa.display.specshow(mfcc, x_axis='time', cmap='cool') plt.colorbar() plt.title('Log-Mel Frequency Spectrogram') plt.xlabel('Time (s)') plt.ylabel('MFCC Coefficients') plt.show() ``` 这段代码读入名为“audio.wav”的音频文件,计算其Log-Mel频谱系数,并绘制出Log-Mel频谱图。你可以根据自己的需求修改参数,例如Mel频带数量、MFCC系数数量等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GodenEngineer

你的赞赏,是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值