语言处理 之 xvector

厦门大学智能语音实验室(XMUSPEECH)提供了基于Kaldi和Pytorch两个开源平台的基线系统:基于Kaldi的i-vector系统和x-vector系统,基于Pytorch的x-vector系统。

厦门大学智能语音实验室同时开源了ASV-Subtools工具,ASV-Subtools工具相比于其他开源工具的优势在于其整合了Pytorch的训练和Kaldi的前端后端处理,可用于声纹识别系统的搭建。

语言处理 之 xvector_第1张图片

语言处理 之 xvector_第2张图片

1、先将数据采样率降到16k

写了一个脚本,可以了

2、准备要提取数据的wav.scp、utt2spk、spk2utt。

spk2utt 是说话人id(记作spkid)和说话人语音名称(uttid)的对应关系,通常来讲,一个说话人会有很多条语音,文件中的格式为,spkid uttid1 uttid2...,每一行有且只有一个说话人id。

例如 zws wav1 wav2 wav3...

需要注意的是,每一行的uttid顺序需要按照sort命令的排序模式来排,以及spkid也需要按照排序命令sort的模式来排。否则kaldi脚本在进行validate_data_dir.sh的时候报错。

utt2spk 是单个语音名称uttid和说话人的对应,很明显每行都是一一对应关系。例如 wav1 zws

utt2spk也可以由kaldi自带脚本和spk2utt生成,也可以由自己写脚本完成

wav.scp 是语音名称uttid和其完整路径的对应,也是每行一个音频。

wav1 /home/beibei/data1/zws_subtools/test1.wav

如果需要训练性别有关的模型,还需要加入spk2gender的文本文件,但显然用不到了

搞定

这个需要自己搞

3、提取fbank_41,fbank是类似于mfcc的特征

bash subtools/makeFeatures.sh data/fbank_41/aishell3/enroll fbank conf/fbank_41_16k.conf

这个东西,我安装不了。。。说不定还真的需要自己安装!因为python环境不一样啊。。。自己造吧。。。

说实话你要造一个完全没问题的Ubuntu。。。

4、做vad

subtools/computeVad.sh data/fbank_41/aishell3/enroll conf/vad-5.0.conf

说实话这里有大问题

5、提取一下512维xvector

bash run_train_my.sh

6、降维

bash scoreSets_lad.sh

这里可能还需要用加噪的数据训练plda打分

7、转成txt文件

copy-vector ark:exp/ftdnn_xv_train_4kh_aug_warmR_fbank_41_16k_pytorch/far_epoch_18/all/xvector_lda256.ark ark,t:- > exp/ftdnn_xv_train_4kh_aug_warmR_fbank_41_16k_pytorch/far_epoch_18/all/xvector_256_18.txt

8、每个矩阵放一个文件

python write_xvector.py exp/ftdnn_xv_train_4kh_aug_warmR_fbank_41_16k_pytorch/far_epoch_18/all/xvector_256_18.txt exp/ftdnn_xv_train_4kh_aug_warmR_fbank_41_16k_pytorch/far_epoch_18/all/xvector_256_18/

就差最后的转成txt文件了卧槽。搞不定。。。

这还真TM的慢啊。。。

肝不动啊,看来用512的了,但是就一个512啊,不赖啊。。。就算有speaker_id也没有任何关系了。

 1. 用aishell3 训练的模型 提取的 128 维 xv  /tsdata/cyx/aishell3_xv/128/xvector_128_21
2. 用大量中文数据库提取的 512 维xv  /tsdata/cyx/aishell3_xv/512 
5. 用大量中文数据库提取的 256维xv  /tsdata/cyx/aishell3_xv/256/xvector_256_18
3. 用大量中文数据库提取的 128维xv /tsdata/cyx/aishell3_xv/128/xvector_128_18
4.  用大量中文数据库提取的 512 维xv (同2)

那老师的也能用了。。。

卧槽不一样。。。只能说,emmmm,没办法了,只能重新训练了。那个aishell的embed是谁提取出来的?可能一开始就有吧。。。

虽然不一样,但是加进去看看行不行啊。。。但是decode没办法啊,人家都把内存用完了。。。

今晚三个工作,做完训练fs2的准备工作 7-8

那绝对没问题了,接下来修改代码。分为fs,fs2和config,conf没变啊。。。没变就没变呗。准备完毕了,就等着训练了。512大数据的。

那个新melgan效果真是惊人,/data/OB/TensorFlowTTS-master-new/TensorflowTTS-work/examples/melgan/exp/melgan_16k_new_config/predictions/

/data/OB/TensorFlowTTS-master-new/TensorflowTTS-work/examples/melgan/exp/melgan_16k_new_config/checkpoints/

/data/OB/TensorFlowTTS-master-new/TensorflowTTS-work/examples/melgan/conf/

再训练几天,就真的太强大了。后面的噪音是我固定的,这个可以改。melgan的停了?怎么停了呢?

并不见得那么好哈,念的太快了。而且后面有电音啊。。。这个有待观察。

移植subtools 8-9

注意在fbank的conf中,帧长为25,这个需要注意。

在370行,为什么需要三层结构,啊,因为这里确定的。不好起名字,而且好像还没模型。

它这个为啥这么慢呢?它这个容易卡住啊?

没有那玩意会重新训练的。。。看来自己改不动啊。。。

整体移植吧。。。

一个zcvf,一个zxvf,没问题的

啊?明白了,路径不对!你知道有多少绝对路径啊。。。

Syntax error: Bad for loop variable

从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。

卧槽重新命个名都不可以吗?

成功了一次!我认为这个绝对路径是kaldi自己造的。。。卡住了。。。

成功了卧槽。

修改论文 9-

你可能感兴趣的:(自然语言处理,语音识别,人工智能)