python声音分类_Python音频信号分类MFCC特征神经网络

我试图把声音信号从语音到情感进行分类。为此,我提取音频信号的MFCC特征,并将其输入到一个简单的神经网络(由PyBrain的BackpropTrainer训练的前馈网络)。不幸的是结果非常糟糕。从这5个班级来看,网络似乎总是会产生同样的结果。在

我有5个情感类和大约7000个有标签的音频文件,我把它们分开,这样每个类的80%用于训练网络,20%用于测试网络。在

其思想是使用小窗口并从中提取MFCC特征来生成大量的训练示例。在评估中,来自一个文件的所有窗口都会被评估,并且大多数投票决定预测标签。在Training examples per class:

{0: 81310, 1: 60809, 2: 58262, 3: 105907, 4: 73182}

Example of scaled MFCC features:

[ -6.03465056e-01 8.28665733e-01 -7.25728303e-01 2.88611116e-05

1.18677218e-02 -1.65316583e-01 5.67322809e-01 -4.92335095e-01

3.29816126e-01 -2.52946780e-01 -2.26147779e-01 5.27210979e-01

-7.36851560e-01]

Layers________________________: 13 20 5 (also tried 13 50 5 and 13 100 5)

Learning Rate_________________: 0.01 (also tried 0.1 and 0.3)

Training epochs_______________: 10 (error rate does not improve at all during training)

Truth table on test set:

[[ 0. 4. 0. 239. 99.]

[ 0. 41. 0. 157. 23.]

[ 0. 18. 0. 173. 18.]

[ 0. 12. 0. 299. 59.]

[ 0. 0. 0. 85. 132.]]

Success rate overall [%]: 34.7314201619

Success rate Class 0 [%]: 0.0

Success rate Class 1 [%]: 18.5520361991

Success rate Class 2 [%]: 0.0

Success rate Class 3 [%]: 80.8108108108

Success rate Class 4 [%]: 60.8294930876

好的,现在,你可以看到结果在类上的分布是非常糟糕的。类0和2永远不会被预测。我想,这暗示了我的网络或者更可能是我的数据有问题。在

我可以在这里发布很多代码,但我认为在下面的图片中显示我为获得MFCC特性而采取的所有步骤更有意义。请注意,我使用的整个信号没有窗口只是为了说明。这个看起来可以吗?MFCC值非常大,不是应该小很多吗?(我把它们缩小,然后用minmaxscaler将所有数据输入到网络中[-2,2],也尝试了[0,1])

python声音分类_Python音频信号分类MFCC特征神经网络_第1张图片

这是我用于Melfilter库的代码,我在离散余弦变换之前直接应用它来提取MFCC特征(我从这里得到它:stackoverflow):

^{pr2}$

怎样才能得到更好的预测结果?在

你可能感兴趣的:(python声音分类)