yongxuUSTC/sednn

关于不同生成snr带躁语音训练的问题

YongyuG opened this issue · 9 comments

你好,感谢你们的工作,
我想请问一下,目前你们原始代码只能对一个固定信噪比的条件下进行训练和测试,
但是如果你论文所说,我们需要去解决对不同 SNR的语音进行增强, 所以我希望能用不同的snr的语音数据拿去训练得到一个比较general的模型. 之前也有类似的issue问过这个问题,只是我不太理解那个答案.

我的做法是在pack features那一步把之前生成的不同snr的mixture features集合起来到一个data.h5中去, 但问题是,这样在compute scaler的时候生成scaler.p文件会有问题,因为data.h5的信噪比不同了. 导致了在main_dnn.py里面训练时候scale data时会有问题, 请问你们是如何做的

谢谢

谢谢您的回复,
我这里有三个问题希望您能回复一下

  1. 我现在用不同SNR的训练数据去训练的思路是: 我在把feature放进去nn训练之前,在scale data之后把它们的数据和label concatenate在一起,这样的做法虽然暴力,但是应该是合理的吧?? 然后因为不同信噪比生成的scaler不一样的,我不明白的是训练可以根据不同信噪比去乘上相对应的scaler,但是在真实做inference的时候,不确定snr, 这个scalar该用哪个. 或者说我在训练时不管数据是0db, 5db或者10db的snr,我都让它全部乘上比如0dbsnr生成的scalar就行了,测试同理

  2. 我用aishell和musan的noise-free简单的训练了一版出来,但他们的train loss和test loss 太高了, 请问是我的数据不够多, noise类型覆盖的不够大吗, 如图所示
    2019-05-29 11-23-19 的屏幕截图
    因为我在另外一个项目用同样的干净数据和噪音类型, loss能降到3%左右, 只不过数据量会比我在sednn用的大很多

3.我想请问一下你们这个论文和代码的目的主要是提高asr的wer还是提高人耳的主观可懂度, 因为我发现模型增强语音后,或多或少会有些失真,wer并不会有很显著的提高

谢谢

你好,scalar的具体数值并不重要,只要训练和测试用的是同一个scalar,就可以。在很多应用场景中,我们也会用在别的数据上计算的scalar用在speech enhancement中。 Best wishes, Qiuqiang

________________________________ From: Yongyu Gao notifications@github.com Sent: 28 May 2019 10:10 To: yongxuUSTC/sednn Cc: Subscribed Subject: [yongxuUSTC/sednn] 关于不同生成snr带躁语音训练的问题 (#34) 你好,感谢你们的工作, 我想请问一下,目前你们原始代码只能对一个固定信噪比的条件下进行训练和测试, 但是如果你论文所说,我们需要去解决对不同 SNR的语音进行增强, 所以我希望能用不同的snr的语音数据拿去训练得到一个比较general的模型. 之前也有类似的issue问过这个问题,只是我不太理解那个答案. 我的做法是在pack features那一步把之前生成的不同snr的mixture features集合起来到一个data.h5中去, 但问题是,这样在compute scaler的时候生成scaler.p文件会有问题,因为data.h5的信噪比不同了. 导致了在main_dnn.py里面训练时候scale data时会有问题, 请问你们是如何做的 谢谢 ―

hi, 感谢回复,

  1. 我是不同snr的data与data concate, 然后label与labelconcate使之维度与data匹配, 目的是为了让nn输入覆盖不同snr

  2. 我用了1万多条得到这个loss, 有点奇怪, 你们之前训练的loss一般是多少%

  3. 你们尝试过对比asr的效果么

好的,谢谢,

不好意思,再请教一下
不同的snr有不同的scaler,我理解的scaler作用是用normalizatioin的,那么如果我train是对不同的snr的数据用scaler transfrom去训练的,我在做inference的时候该怎么选择scaler呢.

因为在现实场景下我无法知道 要进行增强的音频的snr, 我该如何做inference,如果选择用什么scaler呢

好的谢谢,
我看代码上计算scaler和inver scaler那里好像没有把global equalization也算上去,只有mean为0, 方差为1的 normalization. 换句话说, paper上的global equalization和nat都要自己开发然后实验对吧