ppgs

it2024-08-11  50

0. 说明

使用sch给的ForceAlignment好的librispeech语料, 训练ASR, 用来提取PPG

960小时均有, 但是有几句长度错误超参数见下面, 不管是第一版audio, 我的audio, 对于mfcc的提取从来都是一样的ASR模型沿用的sch的, 而sch沿用的lh的

alignment文件在: 链接:https://pan.baidu.com/s/1pWWH1mUFWsdi9xgbDVa3xQ  提取码:4h5a 

Git: https://github.com/ruclion/ppgs_extractor_10ms_sch_lh_librispeech

Lab地址: /datapool/home/hujk17/ppgs_extractor_10ms_sch_lh

 

第二次提取时, 注:

服务器上的Librispeech只有10w条wav, 而不是20+w只使用三个文件即可

0.1. Alignment文件的制作

目前不会TODO...先贴出来大家讨论的供参考~(感谢):

方案1: kaldi按步骤(我猜是ForceAlignment的结果, 猜的哈, 具体的去kaldi中应该很简单~)方案2: 可以类似MFA 一样,提取每个音素的时长,再把每一帧对应到到音素(每一个音素作为一个类别)

1. 数据处理

1.1. 提取MFCC

路径麻烦些, 其他的调用audio接口就行

注意超参数的 'center': False,

注意使用的是sch的audio, 也就是第一版, 不过MFCC这块和我的版本是一摸一样的~

 

1.2. 提取PPG

解读alignment, 拆分名字, 找到和MFCC一样的路径

全部转, 和MFCC不匹配的丢到meta的制作中筛选

1.3. 制作meta.txt

1.3.1. 首先找到公共的句子

Get_Meta_LibriSpeech.py得到meta_960.txt, train_960.txt, test_960.txt

但是里面有PPG和MFCC帧数不同的, 筛选出来

1.3.2. 筛不同

check_meta_mfcc_ppg_same_dim.py得到same_meta_960.txt, diff_meta_960.txt, 不过same和diff写反了..... = .=

1.3.3. 切分

split_train_test_for_diff_960.py得到train_diff_meta_960.txt, test_diff_meta_960.txt作为输入的diff_meta_960.txt不小心丢了...

1.4. 服务器移动

因为期间服务器换了一次存储, 所以数据有损失, 因此代码有点乱, 留下的也是只有没损坏的数据.

不乱的代码, 在Aishell中会有一版

2. tensorflow的dataset和train中的调用

完美的使用方式参考下面两个:

https://stackoverflow.com/questions/48091693/tensorflow-dataset-api-diff-between-make-initializable-iterator-and-make-one-sho

https://github.com/ruclion/tacotron_with_style_control/blob/master/tain_hjk.py

但是还是不改了...也没意义, 1.x已经被弃用了额

所以保留的原来的:

padding, 但是不sortrepeat, 但是不确定是否每个epoch都重新shuffle

train_librispeech.py几乎没有改动

3. 挑选上次训好的model接着训

想要log的文件夹接着训, 添加上了非随机的日期的代码段:

等check_meta_mfcc_ppg_same_dim.py

复制一份: same_meta_960_v2.txt -> same_meta_960_v2_cp.txt

然后跑v2_split_train_test_for_same_960.py

得到train_same_meta_960_v2.txt, test_same_meta_960_v2.txt

然后修改dataset和train中的meta路径为same v2等等, 去接着跑. 这样保证了validation的有效性

效果不错~

4. 进行对LJSpeech和DataBaker的English-PPG提取

4.1. 使用我的audio.py

保证我的audio.py和旧的audio.py对mfcc的提取一摸一样, 因此直接替换; 不过导致了同一个项目有两版audio.py

拷贝audio.py到audio_hjk2.py到根目录ppgs_extractor_10ms_sch_lh_librispeech, 名字防止和aishell里的audio.py冲突注意里面超参数的更改: 160和'center': True,

4.2. 确定提取的PPG正确性

如何确定提取LJSpeech和DataBaker的PPG的正确性呢?

先不确定

4.3. extract_ppg_generate_XXX.py

注意更改路径, 不同数据集分开算在学校服务器处理一份数据, 在公司也处理一份数据DataBaker的采样率是48000, 直接读取的时候指定16000, 应该没问题

 

最新回复(0)