yongxuUSTC / sednn

deep learning based speech enhancement using keras or pytorch, make it easy to use
http://staff.ustc.edu.cn/~jundu/The%20team/yongxu/demo/SE_DNN_taslp.html
334 stars 124 forks source link

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

Open YongyuG opened 5 years ago

YongyuG commented 5 years ago

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

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

谢谢

qiuqiangkong commented 5 years ago

你好,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时会有问题, 请问你们是如何做的

谢谢

― You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FyongxuUSTC%2Fsednn%2Fissues%2F34%3Femail_source%3Dnotifications%26email_token%3DADFXTSMJRWLG6GDGIJ3MQZDPXTZGXA5CNFSM4HQBJ7Q2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GWFQVSQ&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C317580c1eda544eeb72308d6e34c4674%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946314082693058&sdata=omkCP%2BOo4sWrPAAWRXp4er85ruBgFYcpQasdaqR2vR8%3D&reserved=0, or mute the threadhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADFXTSIAIFCUFX7ORVXCMY3PXTZGXANCNFSM4HQBJ7QQ&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C317580c1eda544eeb72308d6e34c4674%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946314082693058&sdata=ZhAvEQxwx8H77RqiP8c8V0V9DLujXbhVMC7nzIcy%2Fx8%3D&reserved=0.

YongyuG commented 5 years ago

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

  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时会有问题, 请问你们是如何做的 谢谢 ―

qiuqiangkong commented 5 years ago

您好!

1. 我现在用不同SNR的训练数据去训练的思路是: 我在把feature放进去nn训练之前,在scale data之后把它们的数据和label concatenate在一起,这样的做法虽然暴力,但是应该是合理的吧??

为什么要和label concatenate一起呢?

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

数据量不够的话会导致loss下不来。最好用1000条以上语音训练。

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

论文里主要看客观评价指标PESQ,实际应用中的确会出现PESQ和人耳主观可懂度不一致的情况。主观评测不可重复且需要花更多时间,所以目前只用客观评价指标。目前有一些论文讨论主观和客观评测不一致。

Best wishes,

Qiuqiang


From: Yongyu Gao notifications@github.com Sent: 29 May 2019 04:34 To: yongxuUSTC/sednn Cc: Kong, Qiuqiang (PG/R - Elec Electronic Eng); Comment Subject: Re: [yongxuUSTC/sednn] 关于不同生成snr带躁语音训练的问题 (#34)

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

  1. 我现在用不同SNR的训练数据去训练的思路是: 我在把feature放进去nn训练之前,在scale data之后把它们的数据和label concatenate在一起,这样的做法虽然暴力,但是应该是合理的吧??

  2. 我用aishell和musan的noise-free简单的训练了一版出来,但他们的train loss和test loss 太高了, 请问是我的数据不够多, noise类型覆盖的不够大吗, 如图所示 [2019-05-29 11-23-19 的屏幕截图]https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F33458902%2F58527225-70797980-8204-11e9-9abc-b2c2328ea1e4.png&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C559624f62ab04e88d3ce08d6e3e68aeb%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946976647178629&sdata=QhCA9DhiHbAEUi8wSxW3KLum3MuTIASW5pVWh3BVqZg%3D&reserved=0 因为我在另外一个项目用同样的干净数据和噪音类型, loss能降到3%左右, 只不过数据量会比我在sednn用的大很多

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

谢谢

你好,scalar的具体数值并不重要,只要训练和测试用的是同一个scalar,就可以。在很多应用场景中,我们也会用在别的数据上计算的scalar用在speech enhancement中。 Best wishes, Qiuqiang … ____ From: Yongyu Gao notifications@github.commailto:notifications@github.com Sent: 28 May 2019 10:10 To: yongxuUSTC/sednn Cc: Subscribed Subject: [yongxuUSTC/sednn] 关于不同生成snr带躁语音训练的问题 (#34https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FyongxuUSTC%2Fsednn%2Fissues%2F34&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C559624f62ab04e88d3ce08d6e3e68aeb%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946976647188617&sdata=H2DKy%2FWvAhKz8HB7udaLGZufOzz9oWt12wpTCPZ1cHs%3D&reserved=0) 你好,感谢你们的工作, 我想请问一下,目前你们原始代码只能对一个固定信噪比的条件下进行训练和测试, 但是如果你论文所说,我们需要去解决对不同 SNR的语音进行增强, 所以我希望能用不同的snr的语音数据拿去训练得到一个比较general的模型. 之前也有类似的issue问过这个问题,只是我不太理解那个答案. 我的做法是在pack features那一步把之前生成的不同snr的mixture features集合起来到一个data.h5中去, 但问题是,这样在compute scaler的时候生成scaler.p文件会有问题,因为data.h5的信噪比不同了. 导致了在main_dnn.py里面训练时候scale data时会有问题, 请问你们是如何做的 谢谢 D

― You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FyongxuUSTC%2Fsednn%2Fissues%2F34%3Femail_source%3Dnotifications%26email_token%3DADFXTSJHLAMGTBTT2Y2E53TPXX2T5A5CNFSM4HQBJ7Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWOB4UI%23issuecomment-496770641&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C559624f62ab04e88d3ce08d6e3e68aeb%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946976647188617&sdata=yAxnNzXT4dLFbjbZZrXDQcpHskqG0pLLkMBIJioLTho%3D&reserved=0, or mute the threadhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADFXTSIU25KAFW3PZ3FGSFTPXX2T5ANCNFSM4HQBJ7QQ&data=02%7C01%7Cq.kong%40surrey.ac.uk%7C559624f62ab04e88d3ce08d6e3e68aeb%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636946976647198611&sdata=AaIJB2SX6ajPzhKVRF9M%2BmEUAQjsiICBBGQaGdVqJKw%3D&reserved=0.

YongyuG commented 5 years ago

hi, 感谢回复,

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

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

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

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

    这样是可以的。

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

      在TIMIT上训练的loss结果可以参见https://github.com/yongxuUSTC/sednn/tree/master/mixture2clean_dnn

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

      我们没有对比过ASR。

Best wishes,

Qiuqiang


From: Yongyu Gao notifications@github.com Sent: 29 May 2019 07:02 To: yongxuUSTC/sednn Cc: Kong, Qiuqiang (PG/R - Elec Electronic Eng); Comment Subject: Re: [yongxuUSTC/sednn] 关于不同生成snr带躁语音训练的问题 (#34)

hi, 感谢回复,

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

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

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

― You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FyongxuUSTC%2Fsednn%2Fissues%2F34%3Femail_source%3Dnotifications%26email_token%3DADFXTSP5Q3MFMNJQLMQRPGTPXYL6BA5CNFSM4HQBJ7Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWOIJ7Y%23issuecomment-496796927&data=02%7C01%7Cq.kong%40surrey.ac.uk%7Cd6d2c12f3f344bf9b32508d6e3fb2fa2%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636947065310239994&sdata=x5K2vEZ3J2eVBYA56D7OppDttjOM8ErNPpSa5sKGjHA%3D&reserved=0, or mute the threadhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADFXTSKDPJHC367F5KG6HHDPXYL6BANCNFSM4HQBJ7QQ&data=02%7C01%7Cq.kong%40surrey.ac.uk%7Cd6d2c12f3f344bf9b32508d6e3fb2fa2%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636947065310239994&sdata=0p9p201gvvgYVLMjousKXJlTPcvddqGLLU%2B9151rtAw%3D&reserved=0.

YongyuG commented 5 years ago

好的,谢谢,

YongyuG commented 5 years ago

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

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

qiuqiangkong commented 5 years ago

在inference时使用和训练时一样的scalar。

Best wishes,

Qiuqiang


From: Yongyu Gao notifications@github.com Sent: 30 May 2019 03:32 To: yongxuUSTC/sednn Cc: Kong, Qiuqiang (PG/R - Elec Electronic Eng); Comment Subject: Re: [yongxuUSTC/sednn] 关于不同生成snr带躁语音训练的问题 (#34)

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

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

― You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FyongxuUSTC%2Fsednn%2Fissues%2F34%3Femail_source%3Dnotifications%26email_token%3DADFXTSMJJN6OGB7HPL4Z3IDPX44FJA5CNFSM4HQBJ7Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWRFQGI%23issuecomment-497178649&data=02%7C01%7Cq.kong%40surrey.ac.uk%7Ce442b90118ae4f536e0908d6e4a71e13%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636947803833695063&sdata=LnvUdHgXGOAjKvWWeGHbWD%2BgSA0nyRtdzX9bCZLfhWA%3D&reserved=0, or mute the threadhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADFXTSM3SLQ3LAPTUR54KNTPX44FJANCNFSM4HQBJ7QQ&data=02%7C01%7Cq.kong%40surrey.ac.uk%7Ce442b90118ae4f536e0908d6e4a71e13%7C6b902693107440aa9e21d89446a2ebb5%7C0%7C0%7C636947803833705056&sdata=vcyBRLBwYUqAXegWTGvm759hRmlTRemMo3ycQ4JK3bw%3D&reserved=0.

YongyuG commented 5 years ago

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