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