中文语音识别系统搭建流程笔记

标签:ASR, Python, Keras, CTC

最近在自己动手搭建一个中文语音识别系统,因为也是入门阶段,所以比较吃力,直到在GitHub上找到了一个已经在做的开源工程,找到了做下去的动力,附上原作者项目的GitHub地址:A Deep-Learning-Based Chinese Speech Recognition System

这位作者人非常好,给予了我不少启发。那么在这里也附上我自己工程的地址:ASR

现在工程还处于起步阶段,虽然跑出了一些结果,但并不是很出色,仍旧在做一些调整,有不错的结果的时候就去更新GitHub,那现在就以本文来梳理一下搭建的思路。

一、数据集

在最开始,先介绍一下我使用的数据集。

我所使用的数据集是清华大学THCHS30中文语音数据集。

data_thchs30.tgz OpenSLR国内镜像 OpenSLR国外镜像

该数据集的介绍请参考THCHS-30:一个免费的中文语料库

在该数据集中,已经分好训练集、验证集和测试集(分别在train、dev、和test文件夹中),其中训练集有10000个样例,验证集有893个样例,测试集有2495个样例,每个样例大约是10秒左右的语音段。

在thchs30这个文件夹里包含了索引性质的文件(cv和dev好像是一毛一样的)

b9b8aa64cbe1

thchs30文件夹中的文件

wav.txt是音频文件的相对路径

b9b8aa64cbe1

dev.wav.txt

syllable.txt是对应的标签

b9b8aa64cbe1

syllable.txt

标签内容首先是文件名,然后是对应的拼音内容,拼音后的数字代表几声,5代表轻声。

二、特征提取

通常来讲,语音识别常用的特征有MFCC、Fbank和语谱图。

在本项目中,暂时使用的是80维的Fbank特征,提取特征利用python_speech_features库,将特征提取后保存成npy文件。

提取特征在先前的文章中写了详细的做法:使用python_speech_features提取音频文件特征

对于标签,项目中有dict.txt文件,这个文件的内容是字典,是拼音和汉字的对应,如下图所示。

b9b8aa64cbe1

dict.txt内容

将标签中的拼音转换成数字,例:a1为0,a2为1,以此类推。

以第一条数据为例:

lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de5 di3 se4 si4 yue4 de5 lin2 luan2 geng4 shi4 lv4 de5 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2

转换到对应的数字列表就是:

597 910 1126 159 1121 451 191 505 1051 1209 208 215 874 939 1168 208 570 599 325 910 597 208 1072 420 1099 634 907 1140 14 829

同样,也将标签保存到npy文件中。

三、模型搭建

在该系统中我们使用的深度学习模型是由科大讯飞提出的称为全序列卷积神经网络(deep fully convolutional

neural network,DFCNN)模型,论文地址: 语音识别技术的研究进展与展望

他的结构图如下所示:

b9b8aa64cbe1

DFCNN 先对时域的语音信号进行傅里叶变换得到语音的语谱图,DFCNN 直接将一句语音转化成一张图像作为输入,输出单元则直接与最终的识别结果(比如音节或者汉字)相对应。

模型中使用的卷积核大小都为3*3,每个模块都为两层卷积加上一层池化,第一个模块的filter为32,第二个为64,之后还可以增加到128、256等,最后在输出层前,还有一层全连接网络。

对于损失函数,这里选择的是CTCLoss。

待更新....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值