要在单个图形上绘制声波、MFCC(Mel频率倒谱系数)和Mel频谱图,你可以使用Python中的matplotlib
和librosa
库。以下是一个示例代码,展示了如何实现这一点:
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# 加载音频文件
file_path = 'your_audio_file.wav'
y, sr = librosa.load(file_path, sr=None)
# 绘制声波图
plt.figure(figsize=(14, 8))
# 声波图
plt.subplot(3, 1, 1)
librosa.display.waveshow(y, sr=sr)
plt.title('Waveform')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
# 计算Mel频谱图
D = librosa.stft(y)
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)
plt.subplot(3, 1, 2)
librosa.display.specshow(S_db, sr=sr, x_axis='time', y_axis='mel')
plt.colorbar(format='%+2.0f dB')
plt.title('Mel Spectrogram')
plt.xlabel('Time (s)')
plt.ylabel('Mel Frequency')
# 计算MFCC
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=20)
plt.subplot(3, 1, 3)
librosa.display.specshow(mfccs, x_axis='time')
plt.colorbar()
plt.title('MFCC')
plt.xlabel('Time (s)')
plt.ylabel('MFCC Coefficients')
# 调整布局并显示图形
plt.tight_layout()
plt.show()
通过上述代码和解释,你应该能够在单个图形上绘制声波、MFCC和Mel频谱图,并理解其基础概念和应用场景。
领取专属 10元无门槛券
手把手带您无忧上云