Kaldi中thchs30训练自己数据集的步骤

本文介绍了语音语言模型构建与训练流程。首先要准备数据集,将网上下载的数据集换成自己的,还需训练好的语音模型和词典,安装并配置SRILM工具。接着利用SRILM建立语言模型,包括统计语料库生成n - gram统计文件、生成语言模型等步骤。最后准备好相关文件后运行run.sh进行训练。

一、数据准备过程
网上下载的thchs-openslr数据集需要换成自己的数据集,包含两个文件夹:data_thchs30和resource。下面讲解如何搞定这一部分。
数据集在data_thchs30文件中,包含四个部分(data、train、dev、test)。
data文件夹中包含(.wav文件和.trn文件;trn文件里存放的是.wav文件的描述:第一行为词,第二行为拼音,第三行为音素);
train文件夹中包含(.wav文件和.trn文件;trn文件存放的是.wav文件对应的data里trn文件的路径)
dev文件夹中包含(同上)
test文件夹中包含(同上)
上面这一部分的数据准备如果不太明白,可参考thchs30数据集的格式(注意.wav文件的命名也是比较重要的。尽量按照原例子中的格式)。
除数据集之外还包括训练好的语音模型word.3gram.lm和phone.3gram.lm以及相应的词典。(这两种LM用SRILM来训练)
SRILM是一个统计和分析语言模型的工具,需要安装和更改相关配置。
具体如何安装请参考链接:https://blog.csdn.net/u011500062/article/details/50781101,这个教程的最后一步修改环境变量有点问题,改为:export PATH=/GaoMY/ZhangX/srilm-1.7.1/bin/i686-m64/:/GaoMY/ZhangX/srilm-1.7.1/bin/:$PATH 这种形式即可,这个是临时环境变量,即关机开机之后会无效,如何改为永久环境变量参考网上关于环境变量的文章即可。

二、利用SRILM工具建立语言模型
建立语言模型的过程包含1两个步骤
步骤1:统计预料库生成n-gram统计文件
命令行:ngram-count -vocab segment_dict.txt -text train_data -order 3 -write my.count -unk
segment_dict.txt:词典文件,一行代表一个切词;
train_data:语料库,一行行的数据,行内数据用空格隔开来表示切词
输出文件为my.count:统计文件
步骤2:生成语言模型
命令行:ngram-count -read my.count -order 3 -lm train.lm -interpolate
输入为统计文件
输出文件为train.lm:语言模型
网上有许多代码是:ngram-count -read my.count -order 3 -lm train.lm -interpolate -kndiscount
这时候会报错误,如下图:
这里写图片描述
只要把命令行后面的-kndiscount去掉即可
步骤3:在生成语言模型之后,我们需要将词典文件segment_dict.txt重命名为lexicon,将语言模型重命名为word.3gram.lm,并将这两个文件防放入thchs30数据集中的lm_word文件
以上为构造lm_word文件内词典和语言模型的过程;
构造lm_phone文件内词典和语言模型的过程同上,只是定义的词典和语料库不同。

运行run.sh文件
在准备好数据、lm_word和lm_phone文件后,就可以运行run.sh了,在运行之前需要更改相关的代码,参考如下链接:https://blog.csdn.net/snowdroptulip/article/details/78943748
在执行代码时,建议手动一步一步执行。
我在执行#build a large lexiocn that invovles words in both the training and decoding这一段代码的时候,我是把

cat $thchs/resource/dict/lexicon.txt $thchs/data_thchs30/lm_word/lexicon.txt | \
grep -v '<s>' | grep -v '</s>' | sort -u > data/dict/lexicon.txt || exit 1;

这一段给注释掉,直接将lm_word中的lexicon写入thchs30/data/dict/内,格式模仿原例子,注意lexicon文件的编码方式为U8-UNIX方式(即要在Linux系统下编译,不然会报文件中存在不被识别的空格和回车符)。
同样的道理,将lm_phone中的lexicon写入thchs30/data/dict_phone/内
下面就可以正常的训练了。
训练过程中的错误率存放在exp的对应的文件内,比如tri1,tri2b等等。

基于深度学习识别THCHS30数据集 深度学习(Deep Learning,简称DL)是机器学习(Machine Learning,简称ML)领域中一个新的研究方向,其目标是让机器能够像人一样具有分析学习能力,识别文字、图像和声音等数据。深度学习通过学习样本数据的内在规律和表示层次,使机器能够模仿视听和思考等人类活动,从而解决复杂的模式识别难题。 深度学习的核心是神经网络,它由若干个层次构成,每个层次包含若干个神经元。神经元接收上一层次神经元的输出作为输入,通过加权和转换后输出到下一层次神经元,最终生成模型的输出结果。神经网络之间的权值和偏置是神经网络的参数,决定了输入值和输出值之间的关系。 深度学习的训练过程通常涉及反向传播算法,该算法用于优化网络参数,使神经网络能够更好地适应数据。训练数据被输入到神经网络中,通过前向传播算法将数据从输入层传递到输出层,然后计算网络输出结果与实际标签之间的差异,即损失函数。通过反向传播算法,网络参数会被调整以减小损失函数值,直到误差达到一定的阈值为止。 深度学习中还包含两种主要的神经网络类型:卷积神经网络(Convolutional Neural Networks,简称CNN)和循环神经网络(Recurrent Neural Networks,简称RNN)。卷积神经网络特别擅长处理图像数据,通过逐层卷积和池化操作,逐步提取图像中的高级特征。循环神经网络则适用于处理序列数据,如文本或时间序列数据,通过捕捉序列中的依赖关系来生成模型输出。 深度学习在许多领域都取得了显著的成果,包括计算机视觉及图像识别、自然语言处理、语音识别及生成、推荐系统、游戏开发、医学影像识别、金融风控、智能制造、购物领域、基因组学等。随着技术的不断发展,深度学习将在更多领域展现出其潜力。 在未来,深度学习可能会面临一些研究热点和挑战,如自监督学习、小样本学习、联邦学习、自动机器学习、多模态学习、自适应学习、量子机器学习等。这些研究方向将推动深度学习技术的进一步发展和应用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值