python+keras实现语音识别

该博客介绍了如何使用python和keras进行语音识别,通过将音频文件转换为MFCC特征,建立神经网络模型进行训练,最终实现了90.5%的识别准确率。文章还分享了数据集获取、模型训练过程以及模型预测的步骤,并提供了相关代码链接。
摘要由CSDN通过智能技术生成

市面上语音识别技术原理已经有很多很多了,然而很多程序员兄弟们想研究的时候却看的头大,一堆的什么转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)
    # print(len(data))

    data=np.array(data)
    # 平方之后,开平方,取正数,值的范围在  0-1  之间
    data 
语音情感识别是一项非常有挑战性的任务,而使用深度学习技术进行语音情感识别已经成为了研究的热点。其中,基于CNN+MFCC的方法是一种比较经典的方法。 MFCC(Mel-Frequency Cepstral Coefficients)是一种用于语音信号特征提取的方法,它可以将语音信号转换为一组特征向量。而CNN(Convolutional Neural Network)则是一种常用于图像和语音信号处理的深度学习模型,它可以自动从数据中学习特征并进行分类。 下面我们来介绍一下基于CNN+MFCC的语音情感识别的实现步骤: 1. 数据准备:首先需要准备好一批带有情感标签的语音数据集,并将其分为训练集和测试集。 2. 特征提取:使用MFCC方法提取语音信号的特征,将每个语音信号转换为一个固定长度的特征向量,作为CNN的输入。这里可以使用Python中的librosa库进行MFCC特征提取。 3. 模型设计:设计一个CNN模型,用于从MFCC特征中学习情感分类的特征。模型的输入是MFCC特征向量,输出是每个情感类别的概率。 4. 模型训练:使用训练集对CNN模型进行训练,不断调整模型参数以提高模型的分类效果。这里可以使用Python中的Keras库进行模型训练。 5. 模型评估:使用测试集对训练好的CNN模型进行评估,计算准确率、召回率和F1值等指标,评估模型的分类效果。 6. 模型应用:将训练好的CNN模型用于实际的语音情感识别任务中,对新的语音信号进行情感分类。 希望以上步骤能够对你有所帮助,祝你实现成功!
评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值