python scp 脚本_kaldi清华中文30h脚本阅读笔记(5)

split_scp.pl

1.

fa1ee38d574ca3c0b7f2ca2017c02c26.png

这一段注释告诉我们此脚本是用来对scp文件或者archive-type文件做分割(split),如果没有utt2spk,就分割成同样的行数

2.

135e6f232fe416f30e8b403a37c10705.png

如果有utt2spk,则根据说话人进行分割

3.

427672f6579299f992b26d8bacb45659.png

告诉我们这个脚本的用法

4.

b3c6f16685df681fa85f78b3f7caa5c4.png

首先分析一下perl脚本的语法:

  1. $,开头的是变量,@开头的是数组,%开头的是哈希(类似python的字典)
  2. $0 表示正在运行的perl脚本名,@ARGV表示运行输入参数的数组
  3. 这个函数把数组的第一个值移出并且返回它,然后把数组长度减一并且把所有的东西都顺移。如果在数组中不再存在元素,它返回 undef。如果是单独的shift,就表示shift的是ARVG数组

这个循环会跑两次,对输入的参数解析,有异常会抛出

5.

5d6abccc2dbabb98a7899ecb3d50ad70.png

die,报错,它会执行退出,一般用作错误信息的输出

这一段,就是对异常输入的检查

6.

1cc4a48838a4a4004ecf4d6f560c6378.png

首先分析perl语法:

  1. push,从数组末尾加入元素,(pop是从末尾取元素,shift是从开头取元素,unshift是从开头添加元素)

这一段是把ARGV数组中的元素,传到@OUTPUT数组中

7.

5e633bc85e895b9d5f09ff6cf24cf649.png

首先分析perl语法:

  1. open,在Perl中可以用open或者sysopen函数来打开文件进行操作,这两个函数都需要通过一个文件句柄(即文件指针)来对文件进行读写定位等操作
  2. split,把字符串进行分割并把分割后的结果放入数组中。这个函数使用规则表达式(RE),如果未特定则工作在$_变量上。

仍然是对输入异常的处理

8.

ca1cbb1807a37e1631cab400dee94834.png

定义了一个数组,元素是每一个scp文件

按照scp文件相对于说话人比例,平均分割

换句话说,就是按说话人对scp文件平均分配

9.

37ee883ead4586b479cc2a7d5bad5a96.png

这一段注释告诉我们,下面的代码要对说话人分配开头和结尾,并最小化平方差

10.

dfe6e3aed901e510b22637c1cd2047cc.png

注释告诉我们,这一段是scp文件分配结尾

11.

98c0888df14107aa46a3145112425485.png

计算平方差

12.

335e1dc2be5cd7c70c3c24e8ceff99f5.png

注释告诉我们这一段是打印files

13.

418f89c6beea8f644571b10353f82647.png

没有utt2spk的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值