wenet 频谱增强的原理和代码实现

原理

该方法实在u2++中作为第二个创新点提出的,其作用是使模型见多识广,更加robust。主要思路是随机用之前的chunk来代替当前的chunk。

论文位置:https://arxiv.org/pdf/2106.05642.pdf 详见文章的3.2.3小结

代码位置:https://github.com/wenet-e2e/wenet/blob/main/wenet/dataset/dataset_deprecated.py

代码分析:

————————————

_spec_aug_mentation

参数:x,warp for time,num t mask,num f mask,max t,max f, max w

作用:增强特征

参数介绍

x: input feature, T * F 2Da

num_t_mask: number of time mask to apply

num_f_mask: number of freq mask to apply

max_t: max width of time maska

max_f: max width of freq maska

max_w: max width of time warp

过程

    步骤一:数据准备。先将输入特征进行备份,然后获取特征的最大帧长和最高频率,即2维特征的宽和高。

    步骤二:time_warp。

      2.1 设maxw= 80,maxframes=1000,则center则为80至920之间的一个整数;

      2.2 设该整数center为500,则warped为420至580之间的一个整数;

      2.3 以center为分界线,将特征左侧的内容resize,并调用BICUBIC进行插值;

      2.4 以center为分界线,将特征右侧的内容resize,并调用BICUBIC进行插值;

      2.5 将2.3和2.4得到的左右特征以横轴方式进行拼接,得到新的特征。

    步骤三:time_mask。进行num_t_mask次横向特征随机挑选开始和结束点,然后以0进行mask。

    步骤四:freq_mask。进行num_f_mask次纵向特征随机挑选开始和结束点,然后以0进行mask,最终返回y。

————————————

###注意点###

  1. BICUBIC插值:主要用在图像中插值或者增加像素数量/密度。通常利用插值技术增加图形数据,以便在打印或其他形式输出的时候,能够增大打印面积以及分辨率。
  2. 在这个函数中为y单独开辟了一块空间,但单从这一块代码,个人觉得这一块没必要单独复制一份y出来,可以直接在输入x上进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值