python+keras汉字单字语音识别

一、两种思路

就当前学习所知,有两种语音识别的思路 1、将语音文件提取mfcc,即转为二维张量形式,然后进行dense全连接层叠层训练,当然这个也可以使用传统机器学习方法。 转为二维张量格式为: 2、将语音文件提取mfcc转为三维张量形式即频谱图,然后进行cnn卷积神经网络训练,看了几个资料,这个似乎准确率更高,但是比较麻烦 所以下文采取第一种方式进行尝试 频谱图形式为:

二、代码更新

2、代码有部分出现缺漏 报错 这个报错是由于num_class没有传递过来,导致label标签one-hot化不成功 打印num_class时发现num_class=0,应该为2的

data.remove(0)

dense层模型调控最优的结果为测试集上93%左右 设置为:

model = Sequential()
    model.add(Dense(1024, activation=relu))
    model.add(Dropout(0.2))
    model.add(Dense(512, activation=relu))
    model.add(Dense(256, activation=relu))
    model.add(Dense(128, activation=relu))

三、汉字语音识别

1、数据集问题 数据集使用的是百度语音合成对3500个常用汉字进行合成的数据集,每个字大概8个不同发音人,之后进行数据增强。 数据增强主要是对波形、位移以及加噪等处理,可以参见大佬凌逆战:《音频数据增强及python实现》链接: .

2、跑的结果 三个数据集,每个数据集有32个音频文件,一共96个,训练集85个,测试集15个,三分类样本数据平均,测试集结果1.0。 3、问题 这里的问题在于数据增强暂时只是用的音量,所以测试集与训练集可能没有什么差异,导致了这个结果,后续加噪、波形拉长等等后准确率可能会迅速下降。

经验分享 程序员 微信小程序 职场和发展