wenet 频谱增强的原理和代码实现_少游223的博客-程序员秘密_频谱处理深度学习代码

技术标签: wenet  深度学习  人工智能  kaldi  语音识别  频谱增强  

原理

该方法实在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上进行操作。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shaoyou223/article/details/122182688

智能推荐

showModalDialog()_yunxiang1224的博客-程序员秘密

JS中showModalDialog 详细使用(转)基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog() 方法用来创建一个显示HTML内容的模...

python pdfplumber读取PDF指定表格内容批量文件重命名_Wilburzzz的博客-程序员秘密

帮以前大学写的一个小程序代码,就不公开了,写的时间比较急,有点乱,一天的作品,现在只公开给关注有兴趣的人看下:import syssys.setrecursionlimit(5000) # 使用pyinstaller打包成EXE格式出错解决语句之一import osimport reimport pdfplumber# 设置初始目录file_dir = 'D:\你的文件夹'file_list = [] # 设置空列表用来接收文件夹下的文件名称os.chdir('D:\你的文件夹')f

二分图最佳完美匹配——Kuhn-Munkres算法 (最大权匹配)_nisxiya的博客-程序员秘密

二分图最大权匹配的代码:#include #include #include #include using namespace std;#define N 100class Solution {public: int S[N]; int left[N]; // the id in left that matches an id in the right co

jdk 1.7 ConcurrentHashmap的底层原理_静看星辰变的博客-程序员秘密

ConcurrentMashmap与HashTable的区别ConcurrentMashmap和HashTable都是线程安全的。HashTable内部通过一个table[ ] 来存储数据,然后通过给put,get等方法加上synchronized方法来实现同步,虽然实现同步了,但是导致一个线程获得了锁,其它线程就不能执行put和get操作,这在高并发情况下效率非常低。当然这里的前提是这个Ha...

Pyecharts输出图片问题_pyecharts 输出图片_cwh_rs_giser的博客-程序员秘密

Pyecharts输出图片问题文章目录Pyecharts输出图片问题1.问题描述2.解决措施2.1安装snapshot-selenium2.1安装snapshot-pyppeteer2.2安装 snapshot_phantomjs3.另外一种折中的方法3.1.下载python的imgkit、pdfkit库3.2.下载wkhtmltopdf工具包参考1.问题描述用pyecharts输出的日历图结果保存为html,无法导出为png、jpg等格式2.解决措施官方给出三种解决措施,点击查看前两个我没有

每日整理Python基础——python教程入门学习_普通网友的博客-程序员秘密

01_Linux基础1.操作系统的作用?操作系统是配置在计算机硬件上的第一层软件,主要作用是管理好硬件设备。2.Linux中根目录和家目录分别用什么表示?/表示根目录、~表示家目录3.Linux中相对路径和绝对路径?以根目录(/)或者家目录(~)开始的路径称为绝对路径,反之称为相对路径4.常用终端命令的介绍。ls list 查看当前文件夹下的内容pwd print wrok directory 查看当前所在文件夹cd [目录名] change directory 切换文件夹touch.

随便推点

URL传中文参数导致乱码的解决方案之encodeURI_外呼的中文参数由encode编译_ly199108171231的博客-程序员秘密

通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码。解决方案有很多种。本文介绍如何通过encodeURI来解决中文乱码问题。首先,在前端页面准备参数的时候,需要对中文参数进行encode处理:var url = 'HelloWorldServlet?star_name='+encodeURI(encodeURI("刘德华"));window.open(url);其

java: 程序包 javax.annotation 不可见,@Resource注解无法使用 【解决方法】_飞翔的代码猪的博客-程序员秘密

Error:(9, 13) java: 程序包 javax.annotation 不可见(程序包 javax.annotation 已在模块 java.xml.ws.annotation 中声明, 但该模块不在模块图中)出现上面这种情况有两种解决办法:方法1:这是JDK9 出现的问题,降低版本设置为JDK8问题就解决了。1、Ctrl+Alt+s 快捷键或者(鼠标右击File,再选择Se...

异常Exception详解_exception异常_The_Best_Hacker的博客-程序员秘密

【1】异常的划分1)按继承体系划分:分为两个子类,一个是ERROR(错误),另一个是Exception(异常)错误属于比较严重的,异常属于可以恢复的错误。2)按检查和未检查划分:分为检查异常(蓝色方框)和未检查异常(红色方框)。 区别:检查异常需要配合try-catch或throws关键字一起使用, 否...

【译】JasperReports Library使用指南_weixin_34007906的博客-程序员秘密

简介(Introduction)Jasperreports是一个强大的开源报表工具,它能够传送丰富的内容到屏幕上、打印机或者转换为PDF、HTML、XLS、RTF、ODT、CSV、TXT和XML文件等多种格式的文件。Jasperreports完全由Java编写,它可以被用于各种各样的Java程序来动态的生成内容。它主要的目的就是帮助以一...

有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别_zxletjy的博客-程序员秘密

有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入的区别最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 

黑马程序员--Socket套接字聊天室_weixin_30737433的博客-程序员秘密

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------Socket的英文原意是"孔"或"插座".作为进程通信机制,取后一种意思,通常也成为"套接字".用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的).有两种类型①.流式Socket(STREAM)  是一种面向连接的Socket,针对与面向连接的TCP服务应...

推荐文章

热门文章

相关标签