在准备Kaldi的语音识别项目时,我们需要处理和准备训练及测试数据。以下是数据处理阶段的一些关键步骤和脚本说明。
首先,我们执行 run.sh
入口程序。该程序会指导我们完成整个数据处理过程。接下来,我们将重点介绍一些重要的数据处理脚本及其功能。
在开始详细讲解前20行代码之前,我们可以先了解几个关键步骤:
yesno
训练数据文件。如果没有,则自动从OpenSLR仓库下载并解压。data
, exp
, 和 mfcc
文件夹。local/prepare_data.sh
脚本该脚本负责处理 waves_yesno
数据集,具体步骤如下:
waves_yesno
目录中的所有文件名保存到 data/local/waves_all.list
文件中。create_yesno_waves_test_train.pl
脚本将数据集分为训练文件名列表(data/local/waves.train
)和测试文件名列表(data/local/waves.test
),每部分包含30个文件名。create_yesno_wav_scp.pl
脚本对测试数据进行标注,生成 data/local/test_yesno_wav.scp
文件,格式为:
1_0_0_0_0_0_0_0 waves_yesno/1_0_0_0_0_0_0_0.wav
1_0_0_0_0_0_0_1 waves_yesno/1_0_0_0_0_0_0_1.wav
create_yesno_wav_scp.pl
脚本对训练数据进行标注,生成 data/local/train_yesno_wav.scp
文件,格式类似。create_yesno_txt.pl
脚本对测试数据进行标注,生成 data/local/test_yesno.txt
文件,格式为:
1_0_0_0_0_0_0_0 YES NO NO NO NO NO NO NO
1_0_0_0_0_0_0_1 YES NO NO NO NO NO NO YES
create_yesno_txt.pl
脚本对训练数据进行标注,生成 data/local/train_yesno.txt
文件,格式类似。data/local
目录下创建一个 lm_tg.arpa
文件,内容如下:
data
ngram 1=4
1-grams:
-1 NO
-1 YES
-99 <s>
-1 </s>
接下来,我们将数据从 data/local
目录复制到 data/train_yesno
和 data/test_yesno
目录中:
data/train_yesno
和 data/test_yesno
目录。data/local/test_yesno_wav.scp
和 data/local/train_yesno_wav.scp
分别复制到 data/test_yesno/wav.scp
和 data/train_yesno/wav.scp
。data/local/train_yesno.txt
和 data/local/test_yesno.txt
分别复制到 data/train_yesno/text
和 data/test_yesno/text
。awk
工具处理 text
文件,生成 data/train_yesno/utt2spk
和 data/test_yesno/utt2spk
文件。这两个文件记录了每个发音和对应的说话者ID。utils/utt2spk_to_spk2utt.pl
脚本将 utt2spk
文件转换成 spk2utt
格式,以便后续处理。以上步骤完成后,数据准备阶段基本结束。后续步骤将继续更新,请持续关注。
希望这些信息能帮助你更好地理解和使用Kaldi进行语音识别项目的开发。