TasNet端到端模型

这个模型的输入和输出都是声波信息。一开始输入的维度信息为1。

分为三块:

1. Encoder:声音讯号通过 Encoder后变成 Feture map

2. Separator:Encode的输出给 Separator后产生两个Mask

3. Decoder:将这两个Mask分别乘上 Encode的输出上,将这两个结果给 Decoder后就会产生分离后的两段声音讯号。

4.PIT:TasNet在训练的时候是需要PIT的

解码和编码/Encoder&Decoder

编码其实就是一个线性的转换(在线性代数中,我们知道任何的线性变化都可以表示成为矩阵相乘的形式,所以这里的编码器的内部其实就是一个,Matrix矩阵)

这里有两个关键点:

1.每一次取的都是非常小的一端声音讯号(下面以500ms为例子),在这段讯号中取16个采样点,经过Encoder后便可以得到16*512维的矩阵向量信息(这也是线性代数的知识,进行矩阵之间的运算)

2.看上去来说,Encoder和Decoder其实应该是完全相反的,毕竟如何编码就应该如何解码,但是实际问题上是有区别的,不可以如何编码就如何解码,这样的效果会变得比较差,需要对Encoder和Decoder分贝进行训练,但是实际上,训练出来的图像结果是大致一样的,下面是他们的训练出来的权重向量的结果:

如上图所示,很明显,它们在匹配不同的频率 frequency的讯号(|FFT|频率图上图的黑色框),有 encode高频的、有 encode比较低频的,低频的特别多,因为人的发音也是低频的更多。

而这一切都是 network自动学到的。

Seperation:分离阶段

Encoder输出的是一堆黄色的向量,Separator会全部放进去,然后产生两个mask。(后面的东西就是和之前的掩模一致 了)

具体流程:

有很多层CNN,每一个层都是把两个vector变成一个vector,然后进入到下一层,直到最后只剩下一个vector的时候,乘上两个不同的transform(?),并且通过sigmoid激活函数(比较low的那种),得到了两个mask,然后再输出。

真正的模型如下:

值得一提的是,这里不通过LSTM,而用了最基本的CNN?

因为对于一般的LSTM而言,输入的开始往往就是讯息的起始点,但声音片段的输入往往不是声音的起始,有人做过实验,发现LSTM的稳定性很差。(结果如下图)

位置数量的声源分离:

有一个想法便是每一次是分开出一个声源的信息,然后在剩下的声源分离,至于总共要分离多少次也是要模型训练才可以掌控的。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值