语音情感频谱图可视化
时间: 2025-03-05 14:46:18 浏览: 15
使用 Python 或 MATLAB 进行语音情感频谱图可视化
在 MATLAB 中实现语音情感频谱图可视化
为了在 MATLAB 中完成这一任务,可以按照如下方式编写代码:
% 加载音频文件
[audio, fs] = audioread('speech_file.wav');
% 计算短时傅里叶变换 (STFT)
windowSize = 256;
overlap = round(0.75 * windowSize);
fftLength = 1024;
stftMatrix = stft(audio,'Window',hamming(windowSize),'OverlapLength',overlap,'FFTLength',fftLength);
% 绘制语谱图
figure;
spectrogram(audio, hamming(windowSize), overlap, fftLength, fs, 'yaxis');
title('Speech Spectrogram Visualization');
xlabel('Time (s)');
ylabel('Frequency (Hz)');
colorbar;
上述代码展示了如何加载一个音频文件,并利用 stft
函数计算其短时傅立叶变换矩阵。接着调用了 spectrogram
来展示该音频的语谱图[^1]。
利用 Python 实现相同功能
对于 Python 用户来说,则可以通过 Librosa 库轻松达成目标:
import librosa
import matplotlib.pyplot as plt
import numpy as np
# 加载音频文件
audio_path = 'speech_file.wav'
y, sr = librosa.load(audio_path)
# 提取梅尔频率倒谱系数(MFCC),这里仅作为例子;实际应用中可根据需求调整特征提取部分
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
# 创建语谱图
plt.figure(figsize=(10, 6))
D = np.abs(librosa.stft(y)) # STFT of y
db = librosa.amplitude_to_db(D, ref=np.max)
librosa.display.specshow(db, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Speech Emotion Spectrum Visualization using Mel Scale')
plt.tight_layout()
plt.show()
这段脚本同样实现了对给定路径下的 .wav
文件读入操作,之后借助于 Librosa 的强大工具集完成了从时间序列到频域表示形式之间的转换过程。最后通过 Matplotlib 展示了最终的结果图像。
相关推荐


















