自己的想法:
先配置好环境,采用conda安装
conda create -n yuyin python=3.6.5
conda install numpy pandas matplotlib scikit-learn scipy tensorflow-gpu==2.0.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numba==0.49.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple librosa==0.6.3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ffmpeg==4.2.2
因为这篇博客使用的Python是3.6版本的,所有上面的一些包,必须安装对应的版本,不然会报错。
我安装的是tensorflow-gpu=2.0,所以修改了他原来的代码,放在了我的码云里,连接https://gitee.com/rengarwang/python-speech-recognition-system/tree/master/
数据集地址:http://www.openslr.org/18/,浏览器下载只有10KB/s。所以把地址放在迅雷里下载,就快很多了,10MB/s
运行
python main.py
能有博客中的结果,就是能跑动了。但注意,你换个自己的语音文件wav格式的,代码运行完后,有结果,但结果不是我们想要的,如下:
['test01.wav']
test01.wav
(592, 13)
青音青村仁史损武赏
是代码错了??不是,这个训练模型不是用你的声音训练的,是用那个清华大学的thchs30中文数据集训练的,如果你想用自己声音的模型,你可以需要自己声音的数据集。
但我运行了一个测试数据,效果也不是很理想,如下:
['D4_762.wav']
D4_762.wav
(949, 13)
七客或范赖五新发午照厂很放法台和子斯腾特样呀子失也息的要才代二派肥
这又是什么原因呢?
因为测试数据是0dB的,含有噪声且信号与噪声比例为1:1,一般为20dB效果会好些。信号功率和噪声功率相除就是信噪比(SNR)。比如:30dBm - 0dBm = 1000mW/1mW = 1000 = 30dB。
其实这个结果不好是正常的,因为它是采用提取语音数据集的MFCC特征。
(原话如下)
首先人的声音是通过声道产生的,声道的形状决定了发出怎样的声音。如果我们可以准确的知道这个形状,那么我们就可以对产生的音素进行准确的描述。声道的形状在语音短时功率谱的包络中显示出来。而MFCCs就是一种准确描述这个包络的一种特征。
其实就是利用图像来训练的,这样的效果肯定不好,只要你换个人说话,或者有点噪音,这个图像就变化很大。它的基本特征就变了,所以结果就不好了。NLP(自然语言处理)实现还是现在很困难的,一般用LTSM神经网络,要克服不同人说话还要过滤说话时的噪音,这些东西现在英伟达和百度做的语音识别还不错。不过这篇博客还是有参考价值的,我认为可以利用卷积神经网络去掉噪声,结果应该还是可以的,这个突然想到可以用在安保语音上,训练自己的声音,最后也只能识别自己的声音,这样感觉有点道理(狗头。。。哈哈哈)!
有用请点个赞!!
本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/weixin_45092662。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。