在准备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进行语音识别项目的开发。