当前位置:   article > 正文

python+keras实现语音识别_基于keras语音识别技术python

基于keras语音识别技术python

市面上语音识别技术原理已经有很多很多了,然而很多程序员兄弟们想研究的时候却看的头大,一堆的什么转mfcc,然后获取音素啥的,对于非专业音频研究者或非科班出生的程序员来说,完全跟天书一样。

最近在研究相关的实现,并且学习了keras和tensorflow等。用keras做了几个项目之后,开始着手研究语音识别的功能,在网上下载了一下语音的训练文件,已上传到了百度云盘:https://pan.baidu.com/s/1Au85kI_oeDjode2hWumUvQ
目录如下,文件夹名就是里面的语音的标签,语音由很多不同年龄性别的人发音收集而来
在这里插入图片描述

拿到一个语音文件之后需要先转mfcc,这个操作很简单,不需要什么高深的内功。用python写一段函数专门用来获取语音文件的fmcc值。

def get_wav_mfcc(wav_path):
    f = wave.open(wav_path,'rb')
    params = f.getparams()
    # print("params:",params)
    nchannels, sampwidth, framerate, nframes = params[:4]
    strData = f.readframes(nframes)#读取音频,字符串格式
    waveData = np.fromstring(strData,dtype=np.int16)#将字符串转化为int
    waveData = waveData*1.0/(max(abs(waveData)))#wave幅值归一化
    waveData = np.reshape(waveData,[nframes,nchannels]).T
    f.close()

    ### 对音频数据进行长度大小的切割,保证每一个的长度都是一样的
    #【因为训练文件全部是1秒钟长度,16000帧的,所以这里需要把每个语音文件的长度处理成一样的】
    data = list(np.array(waveData[0]))
    # print(len(data))
    while len(data)>16000:
        del data[len(waveData[0])-1]
        del data[0]
    # print(len(data))
    while len(data)<16000:
        data.append(0)
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/390581
推荐阅读
相关标签
  

闽ICP备14008679号