X-LANCE / UniCATS-CTX-vec2wav

[AAAI 2024] Code for CTX-vec2wav in UniCATS
https://cpdu.github.io/unicats/
122 stars 16 forks source link

提取ppe #6

Closed yinruiqing closed 1 year ago

yinruiqing commented 1 year ago

使用项目里的ppe提取脚本 跑出来的结果和项目提供的ppe特征对不上。还有这三个特征有没有做过消融实验呀?

cantabile-kwok commented 1 year ago

您好!由于我们的工作中PPE的提取使用的是Kaldi,而安装Kaldi比较麻烦,所以便没有给出完整的提取脚本,而是直接提供了提取好的PPE文件。 如果您安装了Kaldi并想要自己提取,确实可以利用local/make_ppe.sh中的代码,但是接着需要进行normalization,即从训练集计算均值方差,然后把所有PPE减去均值除以方差。这一步跟extract_fbank.sh中的stage 1是一样的。 经过normalize过的PPE应当和我们提取的一致了。

yinruiqing commented 1 year ago

前两维是一致的,第三维能量还是不一致。

cantabile-kwok commented 1 year ago

我刚刚测试了一下,能量维度上的数值也是比较接近的,能否看看您使用的cmvn命令?

yinruiqing commented 1 year ago

我是照着 extract_fbank.sh 的代码写的,我把ppe cmvn的值打印了一下,是:

[[-8.39433032e+07,  1.00398811e+09,  3.17046403e+09, 1.99149193e+08],
 [ 6.21878470e+07,  5.08943132e+09,  5.26694237e+10, 0.00000000e+00]]

能否看一下是否一致呀?

cantabile-kwok commented 1 year ago

这确实有点奇怪,我这边的值是

array([[-8.39473270e+07,  1.00398806e+09,  3.43334481e+09, 1.99149193e+08],
       [ 6.21899246e+07,  5.08943088e+09,  6.14383048e+10, 0.00000000e+00]])

在第三列上差别比较大,我怀疑是计算ppe时候的能量就已经不同了。能否输出一下1001_134708_000013_000000这句话的没有norm的PPE,取前20帧对一下,我的是这样: image

yinruiqing commented 1 year ago

确实不太一样,有可能是降采样算法不一样导致的,我降采样用的是sox。 image

cantabile-kwok commented 1 year ago

那可能的确是由于数据处理的一些缘故了;不过我认为这个影响不会很大,毕竟PPE的信息只是在模型训练的过程中做一个辅助监督的作用,只要这一维度仍然代表了energy的意义,那就仍然是可以用的。 进一步地,由于PPE不直接输入模型中,所以即使训练时候的PPE存在一些差别,训出来的模型也是可以通用的。 所以如果您想换成自己提取的PPE,我觉得直接用提取出来的就可以~

cantabile-kwok commented 1 year ago

还有这三个特征有没有做过消融实验呀?

不加PPE这个分支的话,不仅PPE重建的效果会下降,还会影响一些音质,因为用PPE辅助信息来输入后面的HifiGAN是能帮助其优化重建效果的

Alidaling commented 9 months ago

这可能确实是由于数据处理的一些初步的训练;不过我认为这个影响不会很大,毕竟PPE的信息只是在模型的过程中起到辅助监督的作用,只要这个维度仍然代表了能量的意义,仍然是可以用的。 进一步地,由于PPE不直接输入模型中,所以即使训练时的PPE存在一些差别,训练出来的模型也是可以通用的。所以 如果您想换成自己提取的PPE,我觉得直接用提取出来的就可以~

I used ffmpeg for downsampling, and the energy in the third dimension is still inconsistent. May I ask what method you used for downsampling?Looking forward to your reply.

cantabile-kwok commented 9 months ago

@Alidaling Our data preprocessing was conducted long ago, and if my memory serves me well, we used the SoX command sox --norm -r 16000 to normalize and downsample.