位置: IT常识 - 正文

【语音算法】wav2vec系列原理和使用(语音处理算法)

编辑:rootadmin
【语音算法】wav2vec系列原理和使用 文章目录前言1. wav2vec2. vq-wav2vec3. wav2vec2.03.1 encoder3.2 context3.3 wav2vec2.0的使用(transformers库)参考文献前言

推荐整理分享【语音算法】wav2vec系列原理和使用(语音处理算法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:语音识别算法c源码,语音处理算法,语音 算法,语音 算法,phonetics语音算法,语音算法方向及前景,语音算法方向及前景,语音算法方向及前景,内容如对您有帮助,希望把文章链接给更多的朋友!

wav2vec系列工作由facebook AI Research团队提出,包括wav2vec、vq-wav2vec、wav2vec2.0,效仿nlp上的word2vec,是语音的一种通用特征提取器。本文重点讲解wav2vec2.0模型及其使用方法。

1. wav2vec

论文:wav2vec: Unsupervised Pre-training for Speech Recognition

本文提出一种无监督的语音预训练模型 wav2vec,可迁移到语音下游任务。模型结构如下图,分为将原始音频x编码为潜在空间z的 encoder network(5层卷积),和将z转换为contextualized representation的 context network(9层卷积),最终特征维度为512x帧数。目标是在特征层面使用当前帧预测未来帧。

2. vq-wav2vec

论文:vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations

【语音算法】wav2vec系列原理和使用(语音处理算法)

本文基于wav2vec,将连续特征z通过提出的量化模块,变成离散特征z‘,实现特征空间从无限的连续到有限的离散的转换过程。文中提出了两种量化方法,Gumbel softmax和K-Means,如下图。 其中,左右两个部分中的 e1 … ev,就是码本(记录特征集,可以理解为 BERT 中的词表),Gumbel通过逻辑值最大化(回传时使用Gumbel softmax来保证可导)找对应码本条,K-Means通过计算与码本距离来找最小距离的码本条。

3. wav2vec2.0

论文:wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations

本文基于wav2vec,结合了vq-wav2vec的量化模块和Transformer,提出了wav2vec2.0,如下图。其中,encoder network基于CNN,而context network基于Transformer,任务是在特征层面恢复被mask的量化的帧。 模型的整体结构如下图,以下具体讲解结构。

3.1 encoder

feature extractor 使用了7层的一维CNN,步长为(5,2,2,2,2,2,2),卷积核宽度为(10,3,3,3,3,2,2)。 对于x=16000的输入语音,各卷积层输出的时间维度为: cnn0 (16000-10)/5+1 = 3199 cnn1 (3199-3)/2+1 = 1599 cnn2 (1599-3)/2+1 = 799 cnn3 (799-3)/2+1 = 399 cnn4 (399-3)/2+1 = 199 cnn5 (199-2)/2+1 = 99 (除法有小数,向下取整) cnn6 (99-2)/2+1 = 49 (除法有小数,向下取整) 因此,对于16k采样率的1s的语音对应矩阵(1,16000),channels大小为512,对应的输出为 (512,49),时间维度上约相当于每20ms产生一个512维的特征向量,但实际上每一帧都经过多层卷积,可见到的时间不止20ms。 另外,在cnn0使用了GroupNorm,在cnn1-6的输出使用了GELU。

(feature_extractor): Wav2Vec2FeatureEncoder( (conv_layers): ModuleList( (0): Wav2Vec2GroupNormConvLayer( (conv): Conv1d(1, 512, kernel_size=(10,), stride=(5,), bias=False) (activation): GELUActivation() (layer_norm): GroupNorm(512, 512, eps=1e-05, affine=True) ) (1): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False) (activation): GELUActivation() ) (2): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False) (activation): GELUActivation() ) (3): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False) (activation): GELUActivation() ) (4): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False) (activation): GELUActivation() ) (5): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(2,), stride=(2,), bias=False) (activation): GELUActivation() ) (6): Wav2Vec2NoLayerNormConvLayer( (conv): Conv1d(512, 512, kernel_size=(2,), stride=(2,), bias=False) (activation): GELUActivation() ) ) )3.2 context

整体结构图中的context包括左右两部分,左边负责将z转换成c(对应wav2vec2特征),右边负责将z离散化以计算损失。

左边部分中,对于输入512x50的z,有: post_extract_proj: 768x50 apply_mask->pos_conv->LN: 768x50 Transformer*12: 768x50 choose_masking: 768xM,M为mask的帧数 final_proj: 256xM

右边部分中,对于输入512x50的z,有: choose_masking: 512xM quantizer: 256xM project_q: 256xM

其中,量化的参数有:码本个数G=2,每个码本的条目个数V=320,条目的维度d/G=256/2=128。参数含义:G=latent_groups,V=latent_vars,d=vq_dim。 具体的quantizer流程如下图所示,前向的时候直接找出来最大值对应的码本中的条目,相当于是一个离散的操作,但是这个步骤不可导,无法进行反向传播,为了解决这个问题,采用了gumbel softmax操作。

3.3 wav2vec2.0的使用(transformers库)import soundfile as sfimport torchfrom transformers import Wav2Vec2ForCTC, Wav2Vec2Processorprocessor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h") # 用于ASR等,32维audio_input, sample_rate = sf.read(path_audio) # (31129,)input_values = processor(audio_input, sampling_rate=sample_rate, return_tensors="pt").input_values # torch.Size([1, 31129])logits = model(input_values).logits # torch.Size([1, 97, 32])predicted_ids = torch.argmax(logits, dim=-1) # torch.Size([1, 97])transcription = processor.decode(predicted_ids[0]) # ASR的解码结果from transformers import Wav2Vec2Modelmodel = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base-960h") # 用于提取通用特征,768维wav2vec2 = model(input_values)['last_hidden_state'] # torch.Size([1, 97, 768]),模型出来是一个BaseModelOutput的结构体。参考文献

https://blog.csdn.net/xmdxcsj/article/details/115787729

本文链接地址:https://www.jiuchutong.com/zhishi/288923.html 转载请保留说明!

上一篇:支付宝小程序跳转第三方H5页面(支付宝小程序跳回app)

下一篇:得了遗尿症应该怎么办?(得了遗尿症应该怎么办)

  • pcnm00是oppo哪个型号(oppopcnm00是什么型号手机)

    pcnm00是oppo哪个型号(oppopcnm00是什么型号手机)

  • 网易云头像红圈什么意思(网易云头像红圈但没有动态)

    网易云头像红圈什么意思(网易云头像红圈但没有动态)

  • miui12如何自定义相机布局(miui12.5怎么自定义图标)

    miui12如何自定义相机布局(miui12.5怎么自定义图标)

  • c语言中exit(0)什么意思

    c语言中exit(0)什么意思

  • 三星exynos980相当于骁龙多少(三星esynos980相当于)

    三星exynos980相当于骁龙多少(三星esynos980相当于)

  • 淘宝取消订单有什么影响(淘宝取消订单有赔偿吗)

    淘宝取消订单有什么影响(淘宝取消订单有赔偿吗)

  • 数据管理发展的三个阶段(数据管理发展的三个阶段不包括)

    数据管理发展的三个阶段(数据管理发展的三个阶段不包括)

  • 11和xr膜通用吗(11和xr的手机膜一样吗)

    11和xr膜通用吗(11和xr的手机膜一样吗)

  • 苹果怎么拉黑对方(苹果怎么拉黑对方手机号码还能收到短信吗)

    苹果怎么拉黑对方(苹果怎么拉黑对方手机号码还能收到短信吗)

  • 网络信号hd是什么意思(网络信号上出现hd是什么意思啊)

    网络信号hd是什么意思(网络信号上出现hd是什么意思啊)

  • 手机增强信息啥意思(手机中增强信息是什么)

    手机增强信息啥意思(手机中增强信息是什么)

  • x27是升降摄像头吗(x27升降摄像头安装视频)

    x27是升降摄像头吗(x27升降摄像头安装视频)

  • 华为nova5pro怎么局部截屏(华为nova5pro怎么录屏)

    华为nova5pro怎么局部截屏(华为nova5pro怎么录屏)

  • 快手里怎么没有查找了(快手里怎么没有玩法库)

    快手里怎么没有查找了(快手里怎么没有玩法库)

  • 电力猫最多支持一个主猫对应多少个从猫(电力猫最多支持几个)

    电力猫最多支持一个主猫对应多少个从猫(电力猫最多支持几个)

  • 高额半停机怎么恢复(高额半停机怎么自行解除)

    高额半停机怎么恢复(高额半停机怎么自行解除)

  • 淘宝的闲鱼平台在哪里(淘宝上面的闲鱼怎么样)

    淘宝的闲鱼平台在哪里(淘宝上面的闲鱼怎么样)

  • vivoy93怎么关机开机(vivo y93怎么强制关机)

    vivoy93怎么关机开机(vivo y93怎么强制关机)

  • 微信如何查询建群时间(微信如何查询建设卡余额)

    微信如何查询建群时间(微信如何查询建设卡余额)

  • 水印相机打卡怎么修改(水印相机打卡怎么修改时间和日期位置)

    水印相机打卡怎么修改(水印相机打卡怎么修改时间和日期位置)

  • vue+element ui完成头像上传功能(文件转base64)以及自定义布局。(vue element ui)

    vue+element ui完成头像上传功能(文件转base64)以及自定义布局。(vue element ui)

  • vue中axios的使用(vue axios.all)

    vue中axios的使用(vue axios.all)

  • 【学姐面试宝典】前端基础篇Ⅳ(JavaScript)(学长学姐面试要注意哪些细节)

    【学姐面试宝典】前端基础篇Ⅳ(JavaScript)(学长学姐面试要注意哪些细节)

  • 来料加工与进料加工的相似之处有
  • 年度纳税申报表A105000纳税调整项目明细表中,收入
  • 企业税前扣除凭证包括增值税发票吗
  • 2020小规模纳税人增值税税率
  • 法人其他应付款在借方表示
  • 处置其他权益工具投资时,应按取得的价款
  • 海关入库成功下一步干嘛
  • 进项税额加计抵扣账务处理
  • 取得保险赔偿的会计分录
  • 跨区域经营企业
  • 应交税费未交增值税借方余额表示什么
  • 租赁厂房发生的改造装修费用
  • 存货损失会计处理
  • 2018企业所得税小微企业优惠政策
  • 金税四期什么时候结束
  • 重点创业人群
  • 附加税减半征收计提和缴纳的会计分录
  • 个税和实发不一样
  • 跨年度的费用发票做错了怎么办
  • 有销项没有进项怎么结算成本
  • 受赠房屋涉及哪些税?
  • h3c路由配置教程
  • 发票登记薄的样式是什么
  • win7系统中病毒怎么办
  • 员工聚餐费用计入
  • 境外服务包括哪些内容
  • html img位置
  • 股票的发行费用怎么入账
  • wordpress自定义文章类型
  • 各级税务机关应当遵循依法
  • 担保公司未到期责任准备金会计及税务处理案例
  • 特许权使用费啥意思
  • 多表联动查询
  • 制造费用的归集
  • 子公司破产对母公司是利好还是利空
  • cmd 过滤命令
  • ps怎么参考线快捷键
  • 苹果2021年在中国不能用了吗
  • 二季度平均薪酬
  • 工业企业成本核算的一般程序
  • 食堂增值服务有哪些
  • python中htmlparser解析html
  • 收到增值税收入423300,款项已存入国库
  • phpcms是什么
  • excel随机抽取n行数据
  • 金税盘登录密码和口令从哪查
  • 长期股权投资减值准备是什么科目
  • 发票开具内容与实际经营范围不符是否合适呢?
  • 四种股利分配政策及适用情况
  • sql server安装出现值不能为null
  • 银行手续费未开发票前计入什么科目
  • 个体工商户生产经营所得税税率表2023
  • 拆迁补偿款收税吗
  • 其他应付款结转收入的条件
  • 社保补缴收滞纳金吗
  • 人民币支付结算系统CIPS
  • 专项应付款能转出吗
  • 投资性房地产涉及其他综合收益
  • 企业发生坏账损失时,在当期确认坏账损失
  • 应付职工薪酬包括辞退福利吗
  • 为什么会有进项税和销项税
  • 人力成本工资总额指应发工资
  • 单位委托单位
  • 远程桌面连接 server 2016
  • 如何在百度上发布自己的广告
  • info.exe病毒
  • linux 文件命名
  • win10的命令行在哪里
  • linux sh
  • unity开发用什么电脑比较好
  • angular ...
  • jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
  • python中的print语句
  • python框架flask系列
  • 个体户注销税盘需要公章吗
  • 税务局电子化
  • 货车可申请停保吗
  • 交管123发票审核
  • 怎么申请浙江长沙健康码
  • 营改增后如何纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设