数据读取 Librosa是一个用于音频、音乐分析、处理的python第三方库。 使用glob函数批量获取音频文件的路径。 通过load函数可以对语音数据进行读取,load函数会返回两个数据:音频时间序列和采样率 获取并保存语音的标签。 使用matplotlib库和librosa库对读取的数据进行简单的可视化。 特征工程 librosa库的feature模块适用于语音数据的特征提取和操作 音高、估计调谐偏差 通过短时傅里叶变换获取数据频率的振幅 设置最小最大基本频率,获取音高、幅度 根据返回的音高计算估计调谐偏差(音高调谐) 最后计算音高的均值、全局标准差、最大值和最小值 频谱质心:幅度频谱图的每一帧都经过归一化并被视为频率箱上的分布,其平均值(质心)为 按帧提取。 使用feature模块中的spectral centroid函数,计算频谱质心。 对返回的频谱质心做简单的标准化。 计算频谱质心的均值、全局标准差和最大值。 光谱平坦度;光谱平坦度(或色调系数)是衡量量化声音有多少类似噪音,而不是 类似音调1.高光谱平 坦度(接近1.0)表示频谱类似于白噪声。 它通常转换为分贝。 使用feature模块中的spectral flatness函数,计算光谱平坦度 计算光谱平坦度的均值。 MFCC特征(梅尔频率倒谱系数):使用系数为50的MFCC特征 使用feature模块中的chroma_stft函数,计算梅尔频率倒谱系数。 计算梅尔频率倒谱系数的均值, 梅尔频率:提供时间序列输入,首先计算其幅度频谱图,然后通过 映射到 mel刻度上。 使用feature模块中的melspectrogram函数,计算梅尔频率: 计算梅尔频率的均值。 光谱对比度:频谱图的每一帧都分为子带。 对于每个子带,通过比较来估计能量对比度最高分位数(峰 值能量)中的平均能量与底部分位数(谷能量)。通常对比度值较高对应于清晰的窄带信号,而低对比度 值对应于宽带噪声。 使用feature模块中的spectral contrast函数,计算光谱对比度 计算光谱对比度的均值。 过零率:计算音频时间序列的过零率。 使用feature模块中的zero crossing rate函数,计算过零率 计算过零率的均值。 磁相:使用librosa库中的magphase函数,计算磁相。 根据返回的量级,计算其均值、全局标准差和最大值。 均方根能量:计算每个帧的均方根(RMS)值,从音频样本或来自频谱图。从音频样本计算RMS值更快, 因为它不需要一个STFT计算。 使用feature模块中的rms函数,计算均方根 计算均方根的均值、全局标准差和最大值。 色谱图:根据功率谱图计算色谱图 使用librosa库中的chroma stft函数,计算色谱图 计算其均值。 特征工程 特征数据的标准化 二维数据转为三维数据 标对签进行数值型编码 划分训练集和验证集 基于tensorflow框架,调用其keras接口,构建LSTM模型 为抑制过拟合的现象,往LSTM网络结构中添加L2正则化 模型编译: 优化器:adam 损失函数:交叉熵损失函数 评估指标:准确率 添加回调函数 模型训练。 可视化模型训练效果(使用系统字体) 小结 使用glob库批量获取语音数据的路径,再调用Iibrosa库中的load函数进行数据读取。 使用Iibrosa库对语音数据进行特征提取。 构建LSTM模型对语音数据进行情绪分析,为抑制过拟合现象的发生添加L2正则化。 可对数据集、特征工程和LSTM模型进行优化。