lattice-copy脚本分析,将lattice压缩包解压后对其中的内容合并或删减后重新生成相应的lattice压缩包。

1.首先将lat.1.gz和lat.2.gz解压出来

gunzip -c lat.1.gz >lat.1
gunzip -c lat.2.gz >lat.2

2.将lat.1通过lattice-copy转化为相应的ark和scp

lattice-copy --write-compact=true ark:lat.1 ark,scp:lat1.ark,lat1.scp
lattice-copy --write-compact=true ark:lat.2 ark,scp:lat2.ark,lat2.scp

3.将两个scp合并为一个scp

cat lat1.scp lat2.scp >lat.scp

4.filter_scp.pl对scp进行清洗,删除掉uut2speak没有出现过得语句

filter_scp.pl的脚本功能详细解释参照我的博客:传送门

./utils/filter_scp.pl utt2spk lat.scp >lat_clean.scp

5.lattice-copy生成新的ark

lattice-copy --write-compact=true scp:lat_clean.scp ark:lat.ark

6.将新得到的ark压缩成压缩包

gzip -c lat.ark >lat.gz

PS:4.5.6一般在脚本中会合并成一行代码

lattice-copy --write-compact=true  \
"scp:utils/filter_scp.pl utt2spk lat.scp |" \
 "ark:| gzip -c  >lat.gz" ||exit 1

7.现在我们重新解压我们得到的lat.gz来比较一下我们得到的scp和之前合并的scp的区别:

gunzip -c lat.gz >lat
lattice-copy --write-compact=true  ark:lat ark,scp:latcheck.ark,latcheck.scp

以下是我们之前合并清洗之后的scp,他上半部分的话语id指向的ark和下半部分的话语id所指向的ark是不同。

head lat_clean.scp 
tail lat_clean.scp

G0001T0001G0001S01010002 lat1.ark:25
G0001T0001G0001S01010003 lat1.ark:4908
G0001T0001G0001S01010004 lat1.ark:7199
G0001T0001G0001S01010005 lat1.ark:11086
G0001T0001G0001S01010006 lat1.ark:14941
G0001T0001G0001S01010009 lat1.ark:18876
.....
.....
G0071T0055G0071S0497 lat2.ark:69946454
G0071T0055G0071S0498 lat2.ark:69949529
G0071T0055G0071S0499 lat2.ark:69951588
G0071T0055G0071S0500 lat2.ark:69953691

以下是新生成的scp,指向的都是我们刚新生成的ark:

head latcheck.scp
tail latcheck.scp

G0001T0001G0001S01010002 latcheck.ark:25
G0001T0001G0001S01010003 latcheck.ark:4908
G0001T0001G0001S01010004 latcheck.ark:7199
G0001T0001G0001S01010005 latcheck.ark:11086
G0001T0001G0001S01010006 latcheck.ark:14941
......
......
G0071T0055G0071S0497 latcheck.ark:139780929
G0071T0055G0071S0498 latcheck.ark:139784004
G0071T0055G0071S0499 latcheck.ark:139786063
G0071T0055G0071S0500 latcheck.ark:139788166

8.几个需要注意的重点

1.lattice-copy生成出来的两个文件,scp和ark。scp是我们用来操作的,可以进行删除,添加等等。

2.lattice-copy通过scp可以生成相应的ark。我对scp操作完之后,就通过lattice-copy来把scp生成ark文件,输入是scp,也就是我们通过scp中的内容信息,将指向的ark合并成一个新的ark。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值