使用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只使用三个文件即可目前不会TODO...先贴出来大家讨论的供参考~(感谢):
方案1: kaldi按步骤(我猜是ForceAlignment的结果, 猜的哈, 具体的去kaldi中应该很简单~)方案2: 可以类似MFA 一样,提取每个音素的时长,再把每一帧对应到到音素(每一个音素作为一个类别)路径麻烦些, 其他的调用audio接口就行
注意超参数的 'center': False,
注意使用的是sch的audio, 也就是第一版, 不过MFCC这块和我的版本是一摸一样的~
解读alignment, 拆分名字, 找到和MFCC一样的路径
全部转, 和MFCC不匹配的丢到meta的制作中筛选
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不小心丢了...因为期间服务器换了一次存储, 所以数据有损失, 因此代码有点乱, 留下的也是只有没损坏的数据.
不乱的代码, 在Aishell中会有一版
完美的使用方式参考下面两个:
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都重新shuffletrain_librispeech.py几乎没有改动
想要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的有效性
效果不错~
保证我的audio.py和旧的audio.py对mfcc的提取一摸一样, 因此直接替换; 不过导致了同一个项目有两版audio.py
拷贝audio.py到audio_hjk2.py到根目录ppgs_extractor_10ms_sch_lh_librispeech, 名字防止和aishell里的audio.py冲突注意里面超参数的更改: 160和'center': True,如何确定提取LJSpeech和DataBaker的PPG的正确性呢?
先不确定