目录
step -1. 数据下载
# data
datadir=./downloads
if [ ${
stage} -le -1 ] && [ ${
stop_stage} -ge -1 ]; then
echo "stage -1: Data Download"
mkdir -p ${
datadir}
local/download_and_untar.sh ${
datadir} ${
data_url}
fi
通过运行local下的download_and_untar.sh脚本下载an4数据集,当然也可以自己从官网下载自己解压缩,下载后的数据集存放在downloads文件夹下
step 0~2. Kaldi格式数据准备
step0. 数据准备
# general configuration
dumpdir=dump # directory to dump full features
# feature configuration
do_delta=false
# data
datadir=./downloads
an4_root=${
datadir}/an4
train_set="train_nodev"
train_dev="train_dev"
if [ ${
stage} -le 0 ] && [ ${
stop_stage} -ge 0 ]; then
### Task dependent. You have to make data the following preparation part by yourself.
### But you can utilize Kaldi recipes in most cases
echo "stage 0: Data preparation"
mkdir -p data/{
train,test} exp #递归创建data/train、data/test、exp目录
if [ ! -f ${
an4_root}/README ]; then #找不到an4数据集的情况
echo Cannot find an4 root! Exiting...
exit 1
fi
python3 local/data_prep.py ${
an4_root} sph2pipe#运行local文件夹下的data_prep.py
#生成train和test的wav.scp、text、utt2spk、spk2utt
for x in test train; do
for f in text wav.scp utt2spk; do
sort data/${
x}/${
f} -o data/${
x}/${
f}
done
utils/utt2spk_to_spk2utt.pl data/${
x}/utt2spk > data/${
x}/spk2utt
done
fi
#递归创建文件夹dump/train_nodev/daltafalse、dump/train_dev/daltafalse
feat_tr_dir=${
dumpdir}/${
train_set}/delta${
do_delta}; mkdir -p ${
feat_tr_dir}
feat_dt_dir=${
dumpdir}/${
train_dev}/delta${
do_delta}; mkdir -p ${
feat_dt_dir}
生成最重要的四个文件wav.scp、text、utt2spk、spk2utt
wav.scp文件保存了语音编号和该语音在系统中的绝对路径的位置
test文件保存了语音编号与该语音对应的转录文本
utt2spk文件保存了语音编号和说话人编号
spk2utt文件保存了说话人编号和该说话人所有语音编号的对应关系
step1. 特征提取
if [ ${
stage} -le 1 ] && [ ${
stop_stage} -ge 1 ]; then
### Task dependent. You have to design training and dev sets by yourself.
### But you can utilize Kaldi recipes in most cases
echo "stage 1: Feature Generation"
fbankdir=fbank
# Generate the fbank features; by default 80-dimensional fbanks with pitch on each frame 对每一帧提取80维的fbank特征
for x in test train; do
steps/make_fbank_pitch.sh --cmd "$train_cmd" --nj 8 --write_utt2num_frames true \
data/${
x} exp/make_fbank/${
x} ${
fbankdir}
utils/fix_data_dir.sh