赞
踩
在python中训练一个语音识别系统主要需要以下几个步骤:
什么是语料库?语料库长什么样?
语料库由两部分组成,第一部分是语音,第二部分是玉莹的标注,通常为字符形式。本次项目中,我们选用的语料库是THCHS-30,这个语料库是在安静的办公室环境下,由录音人员用普通话朗读新闻的语音作为数据,总时长超过30个小时。我们利用语料库,构造转换字典,将中文转换为数字进行模型训练,同时将模型的识别结果转换为中文。
语料库部分数据:
第一部分,采用了wav格式的语音,
第二部分,标注第一行是语音的中文,
第二行是拼音,第三行是音节。
有了语料库即可进行接下来的步骤。
预处理部分分为五部分:j降噪,去静默,分帧,傅里叶,特征对齐。
在语料库的数据中,存在着背景噪声,所以我们对背景噪声进行了抑制,以获得相对干净的语音,同时,我们去除了语音的沉默部分,避免在训练过程中造成干扰。使用神经网络训练模型时,我们对数据进行了归一化处理,加快模型的收敛,减少资源的消耗。同时,为了固定神经网络的输入层,我们以最长音频的特征帧数为模板,帧数不足则以无信息的0填充进行特征对齐。
首先是预加重。预加重会在一定的程度上增加语音的高频分辨率,突出高频的共振峰。在后期的模型训练中,会加速模型对数据特征值的识别。其次是分帧,模型的训练过程中,需要一个固定的输入层进行训练。所以我们需要将连续语音分为不同的帧作为特征值输入。但是,划分语音后会导致频域能量泄露,为了减少分帧所带来的影响,我们在第三部分使用了窗口函数对划分后的帧进行平滑处理,保证后期的傅里叶变换顺利进行。傅里叶变换可以将能量由时域转换至频域上,从而解决一些难以在时域上解决的问题。最后我们根据人耳听觉范围对傅里叶变换后的频谱图进行Mel滤波,再通过离散余弦变换去除滤波器组系数间的高度相关性,以获得Mel频率倒谱系数MFCC。
在循环神经网络RNN中,我们采用了更加轻便的GRU网络作为模型训练。较于LSTM而言,GRU仅采用了合并门和更新门,参数较少更容易收敛,更加节约资源。我们使用前向GRU模型获取上文信息,同时使用后向GRU模型获取下文信息,将语音的上下文信息拼接,得到语句的完整信息,得到的结果会较为准确。在损失函数上我们选择了CTC 连接时序分类,CTC可以省略标签和特征对齐的步骤,大大减少人工工作量。
以上就是语音识别的大致步骤。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。