如何用python画出语谱图(spectrogram)和mel谱图(mel spectrogram)

1.准备环境
①python
②libsora
③matplotlib

Notes:pip install 直接一步到位

2.具体代码
①语谱图(spectrogram)

import librosa
import numpy as np
import matplotlib.pyplot as plt

path = "./test.wav"

# sr=None声音保持原采样频率, mono=False声音保持原通道数
data, fs = librosa.load(path, sr=None, mono=False) 
 
L = len(data)
print('Time:', L / fs)


#0.025s
framelength = 0.025
#NFFT点数=0.025*fs
framesize = int(framelength * fs)
print("NFFT:", framesize)

#画语谱图
plt.specgram(data, NFFT=framesize, Fs=fs, window=np.hanning(M=framesize))
plt.ylabel('Frequency')
plt.xlabel('Time(s)')
plt.title('Spectrogram')
plt.show()

在这里插入图片描述
②mel谱图

import librosa.display
import numpy as np
import matplotlib.pyplot as plt

path = "./test.wav"

# sr=None声音保持原采样频率, mono=False声音保持原通道数
data, fs = librosa.load(path, sr=None, mono=False)

L = len(data)
print('Time:', L / fs)


# 0.025s
framelength = 0.025
# NFFT点数=0.025*fs
framesize = int(framelength * fs)
print("NFFT:", framesize)

#提取mel特征
mel_spect = librosa.feature.melspectrogram(data, sr=fs, n_fft=framesize)
#转化为log形式
mel_spect = librosa.power_to_db(mel_spect, ref=np.max)

#画mel谱图
librosa.display.specshow(mel_spect, sr=fs, x_axis='time', y_axis='mel')
plt.ylabel('Mel Frequency')
plt.xlabel('Time(s)')
plt.title('Mel Spectrogram')
plt.show()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值