前几天是实现wav文件的特征提取,今天来使用kaggle上上案例测试一番,实践基于GTZAN数据集,是用于评估音乐流派识别的机器聆听研究中最常用的公共数据集。经过实践,发现这个案例基本攘括了前段时间神经网络学习的所有知识,可以很很好的复习学习的内容,可以作为以后简单网络的开局案例。
语音特征提取时,笔者以前只知道帧数放在一起算平均来提取一段语音的特征(均值np.mena),还可以增加特征的方差(np.var)来丰富特征,在以后笔者oneclass语音识别是值得借鉴。
1、数据读取dateset
基于GTZAN数据集,使用pd.read_csv读取csv文件,数据文件共1000行,60个列。特征列包含音频文件中提取的多个要素的均值和方差。包含10种类型的集合,每个流派有100个音频文件,所有文件的长度均为30秒,所有数据的数据点数在30 * 22050 = 661500附近。
2、特征处理Feature Extraction
使用sklearn.preprocessing的LabelEncoder() 函数完成目标类别数字编码。
3、特征标准化Scaling the features
使用sklearn.preprocessing的StandardScaler函数使数据形成标准正态分布。
5、训练测试分离Dividing Training and Testing Dataset
使用train_test_split完成测试集和训练集分离,test_size=0.1。
6、创建DNN模型Building the model
DNN模型包含四个隐藏层,激活函数使用relu,同时使用dropout防止过拟合。
输出层有十个神经元,因为输出的是互斥的多分类,激活函数使用softmax。
使用Adam优化器来训练模型,训练轮次为600,Adam优化器是一种自适应学习率算法。
model.summary()显示模型的所有层以及参数等信息,Total params: 203,338。
7、模型验证Model Evaluation
model.evaluate在测试集上验证可以得到78%的准确率。
查看学习曲线,训练模型过拟合。
使用分割的3秒音乐数据再次训练
features_3_sec.csv这个文件具有相同的结构,但歌曲之前被拆分为3秒的音频文件,这样可以增加10倍于我们进入分类模型的数据量,是解决过拟合的一个方法,数据越多越好。
再次训练发现,模型在测试集上可以达到93.99的准确率。
网友评论