赞
踩
市面上语音识别技术原理已经有很多很多了,然而很多程序员兄弟们想研究的时候却看的头大,一堆的什么转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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。