63 lines
3.5 KiB
Plaintext
63 lines
3.5 KiB
Plaintext
数据读取
|
||
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模型进行优化。 |