对于较大的测试集,或者不支持batch解码的解码算法,我们可以使用将数据集分割成多个子集,使用shell的多进程并行化处理。
# 1. 将数据集按照行数进行分割
mkdir -p fbank/tmp # 分割后的数据都在这
split -l 10009 fbank/train_sp/format.data -d -a 2 fbank/tmp/format.data_
# 对format.data这个文件按照10009行为一个子集进行分割
# 2. 将这些文件分别放在fbank/train/{00,01,02,....}下面
for x in `ls fbank/tmp`; do
{
suffix=`echo $x|awk -F'_' '{print $NF}'` # 编号
mkdir -p fbank/train/$suffix
name=`echo $x|awk -F'_' '{print $1}'` # 文件名
cp fbank/tmp/$x fbank/train/$suffix/$name
cp fbank/train_sp/utt2dur fbank/train/$suffix/
cp fbank/train_sp/global_cmvn fbank/train/$suffix
cp fbank/train_sp/text fbank/train/$suffix
}done