Emrys365 / espnet

End-to-End Speech Processing Toolkit
https://espnet.github.io/espnet/
Apache License 2.0
7 stars 2 forks source link

关于wsj0空间版本的双通道代码 #8

Closed shanhaidexiamo closed 2 years ago

shanhaidexiamo commented 3 years ago

师兄您好,在运行代码的时候我遇到了一些bug,想向您请教一下。主要是mixture改成双通道后和ref通道数量不一致的问题: image image

在计算tf_mse_loss的时候出现了这个assert,我是应该注释掉assert函数呢,还是应该在这个函数初将ref的维度先改成双通道维度以避免警告呢?希望指点,谢谢您

Emrys365 commented 3 years ago

@shanhaidexiamo 抱歉啊之前没看到,这应该算是之前处理逻辑上的问题,没考虑 reference 和 enhanced signal 通道数不匹配的情况。我的建议是把

assert ref.shape == inf.shape, (ref.shape, inf.shape)

换成不太严格的约束:

assert ref.dim() == inf.dim(), (ref.shape, inf.shape)

这样你只需要保证计算 loss 时的两个输入维度数量一致就可以了,如果 reference 或 enhanced signal 只有一个通道,而另一个有多个通道,只需要增加一个 singleton 维度就可以了。


对于你的问题中遇到的 reference 和 enhanced signal 分别是 8 通道和 2 通道的情况,我认为是需要在计算 loss 之前事先处理好的,需要确保它们的通道数是一致的。

shanhaidexiamo commented 3 years ago

非常谢谢师兄的回复,不知道在该代码上,您是否有最新的论文产出呢?之前阅读了ESPNET-SE: END-TO-END SPEECH ENHANCEMENT AND SEPARATION TOOLKIT DESIGNED FOR ASR INTEGRATION 这篇文章

Emrys365 commented 3 years ago

@shanhaidexiamo 基于新的 ESPnet-SE 框架,我们最近做了一些关于减小语音增强在真实数据和仿真数据上性能差距的工作,不过论文暂时还没有公开。

shanhaidexiamo commented 3 years ago

好的好的,非常期待师兄的论文

shanhaidexiamo commented 3 years ago

师兄您好,我想问一下,reverb的数据您为什么不选择使用si_snr作为loss函数呢,该指标显然要比mse高不少。我后面也尝试了一下,发现使用sisnr,训练到16个epoch左右会出现grad为nan的情况,不知道是个例还是其他原因?不知道师兄有尝试过嘛?

Emrys365 commented 3 years ago

师兄您好,我想问一下,reverb的数据您为什么不选择使用si_snr作为loss函数呢,该指标显然要比mse高不少。我后面也尝试了一下,发现使用sisnr,训练到16个epoch左右会出现grad为nan的情况,不知道是个例还是其他原因?不知道师兄有尝试过嘛?

在有混响的情况下,我们一般没有选择 SI-SNR 作为 loss,因为它对 sample shift 非常敏感,而我们用 reference channel 的干净语音或者 source signal 作为标签,在有混响存在的情况下,它可能和增强后的音频之间存在一定的样本偏移,这本身不太影响音频质量,却会对 SI-SNR 分数产生较大影响,所以这种情况下我们一般就没有用它来训练。当然可以考虑用今年 ICASSP 上提出来的 CI-SDR 来训练。

shanhaidexiamo commented 3 years ago

师兄您好,我想问一下,reverb的数据您为什么不选择使用si_snr作为loss函数呢,该指标显然要比mse高不少。我后面也尝试了一下,发现使用sisnr,训练到16个epoch左右会出现grad为nan的情况,不知道是个例还是其他原因?不知道师兄有尝试过嘛?

在有混响的情况下,我们一般没有选择 SI-SNR 作为 loss,因为它对 sample shift 非常敏感,而我们用 reference channel 的干净语音或者 source signal 作为标签,在有混响存在的情况下,它可能和增强后的音频之间存在一定的样本偏移,这本身不太影响音频质量,却会对 SI-SNR 分数产生较大影响,所以这种情况下我们一般就没有用它来训练。当然可以考虑用今年 ICASSP 上提出来的 CI-SDR 来训练。

原来是这样,如果要用CI-SDR 的话,reverb的数据的训练标签就可以换成没有混响的clean signal了对吧,非常感谢师兄的解答!

Emrys365 commented 3 years ago

是的,CI-SDR 在设计上就是希望能够直接利用 early reflection 或者 source clean signal 来作为训练标签。

Powered by Mailbutler https://www.mailbutler.io/?utm_source=watermark&utm_medium=email&utm_campaign=watermark-essential-email, the email extension that does it all

On Jul 19, 2021, at 20:51, shanhaidexiamo @.***> wrote:

师兄您好,我想问一下,reverb的数据您为什么不选择使用si_snr作为loss函数呢,该指标显然要比mse高不少。我后面也尝试了一下,发现使用sisnr,训练到16个epoch左右会出现grad为nan的情况,不知道是个例还是其他原因?不知道师兄有尝试过嘛?

在有混响的情况下,我们一般没有选择 SI-SNR 作为 loss,因为它对 sample shift 非常敏感,而我们用 reference channel 的干净语音或者 source signal 作为标签,在有混响存在的情况下,它可能和增强后的音频之间存在一定的样本偏移,这本身不太影响音频质量,却会对 SI-SNR 分数产生较大影响,所以这种情况下我们一般就没有用它来训练。当然可以考虑用今年 ICASSP 上提出来的 CI-SDR 来训练。

原来是这样,如果要用CI-SDR 的话,reverb的数据的训练标签就可以换成没有混响的clean signal了对吧,非常感谢师兄的解答!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Emrys365/espnet/issues/8#issuecomment-882520935, or unsubscribe https://github.com/notifications/unsubscribe-auth/AENMOMOC5CCUUEZ2Z6UYZUDTYQNUJANCNFSM4YPD7EGQ.

shanhaidexiamo commented 3 years ago

谢谢师兄耐心的回复,前端增强这部分我会仔细钻研的。关于wsj0空间版本的增强我还有个疑问,就是使用预训练的wsj识别模型进行wer性能检测,我看到您的论文ESPNET-SE: END-TO-END SPEECH ENHANCEMENT AND SEPARATION TOOLKIT DESIGNED FOR ASR INTEGRATION 中, 使用了wsj的识别模型,不知道这个是用的espnet里面wsj/asr的预训练模型进行解码得到的wer结果吗?因为增强默认是min+8k的,识别模型应该是16k的,师兄您在论文中使用的增强数据应该是max+16k的对吧?

Emrys365 commented 3 years ago

不太准确,我们其实用的是 max+8k 的空间版本数据。因为为了和前面的实验一样采用相同的 ASR 模型。

On Jul 20, 2021, at 16:53, shanhaidexiamo @.***> wrote:

谢谢师兄耐心的回复,前端增强这部分我会仔细钻研的。关于wsj0空间版本的增强我还有个疑问,就是使用预训练的wsj识别模型进行wer性能检测,我看到您的论文ESPNET-SE: END-TO-END SPEECH ENHANCEMENT AND SEPARATION TOOLKIT DESIGNED FOR ASR INTEGRATION 中, 使用了wsj的识别模型,不知道这个是用的espnet里面wsj/asr的预训练模型进行解码得到的wer结果吗?因为增强默认是min+8k的,识别模型应该是16k的,师兄您在论文中使用的增强数据应该是max+16k的对吧?

shanhaidexiamo commented 3 years ago

好的,谢谢师兄! 那我就用espnet的wsj识别代码,采用8k采样率跑一个识别模型,这样应该是可以对齐采样率的

------------------ 原始邮件 ------------------ 发件人: "Emrys365/espnet" @.>; 发送时间: 2021年7月24日(星期六) 凌晨2:55 @.>; @.**@.>; 主题: Re: [Emrys365/espnet] 关于wsj0空间版本的双通道代码 (#8)

不太准确,我们其实用的是 max+8k 的空间版本数据。因为为了和前面的实验一样采用相同的 ASR 模型。

Powered by Mailbutler <https://www.mailbutler.io/?utm_source=watermark&amp;utm_medium=email&amp;utm_campaign=watermark-essential-email&gt;, the email extension that does it all

> On Jul 20, 2021, at 16:53, shanhaidexiamo @.***> wrote: > > > 谢谢师兄耐心的回复,前端增强这部分我会仔细钻研的。关于wsj0空间版本的增强我还有个疑问,就是使用预训练的wsj识别模型进行wer性能检测,我看到您的论文ESPNET-SE: END-TO-END SPEECH ENHANCEMENT AND SEPARATION TOOLKIT DESIGNED FOR ASR INTEGRATION 中, 使用了wsj的识别模型,不知道这个是用的espnet里面wsj/asr的预训练模型进行解码得到的wer结果吗?因为增强默认是min+8k的,识别模型应该是16k的,师兄您在论文中使用的增强数据应该是max+16k的对吧? > > — > You are receiving this because you commented. > Reply to this email directly, view it on GitHub <https://github.com/Emrys365/espnet/issues/8#issuecomment-883221057&gt;, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AENMOMMUWEVL6JF64RPE5ELTYU2QXANCNFSM4YPD7EGQ&gt;. >

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.