经过两周的努力,终于将kaldi中thchs语料(train、dev、test)处理成txt格式,其中语料是已经经过分帧的数据,采用mfcc经过一阶、二阶差分所得,下面详细讲解数据的处理过程。
第一步我们得知道数据的内容,由一张表来展示:
下面附上处理数据的脚本:
(1)得到训练标签的脚本程序,即是将训练集的标签提取的程序:
#-*- coding:utf-8 -*- #author : zhangwei import numpy as np if __name__ == '__main__': filename = '/home/zhangwei/mfcc/all_ali.txt' res = np.zeros([0]) with open(filename, 'r') as file_to_read: while True: lines = file_to_read.readline() if not lines: break pass tmp = lines.split(';') for i in tmp: #np.append(res, np.ones(i[2]) * i[1]) if len(l) > 2: res = np.append(res) # print res pass else: res = np.append(res) print res pass np.savetxt('/home/zhangwei/mfcc/res',res)
亲测有效,提取出标签如下所示,只提取前20行:
由于分帧的前几十帧大多是sil,故都为1号音素的序号,与之前的特征对应;
第二步便是把特征里面的说话人id、句子的id以及 [] 删除,采用脚本如下所示:
sed -i ‘/[ABCD]/d’name
sed -i 's/]//' name
主要就是采用这两行脚本进行操作,亲测有效。
目前,在train_label中有一个问题,由于没有太大的人力,只能是采用kaldi中训练的hmm模型将标签与特征进行对齐,但是经过仔细观察发现,在对齐之后的数据少了一句话,问吴本谷师兄,他说在进行对齐的时候,由于语料等原因,一两句不对齐是很正常的事情,但是要找出那一句话没有对齐,这是一个很大的问题。
提取出前面的数据花费了将近1个星期,感谢各位好友的指导,继续努力搬砖