Wav2Vec HuBert 自监督语音识别模型

news2025/4/11 13:26:34

文章目录

  • Wav2Vec: Unsupervised pre-training for speech recognition
    • abstract
    • method
  • wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations
    • abstract
    • introduction
    • method
      • MODEL arch
      • 损失函数
      • finetune
    • expriment
  • HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Unit
    • abstract
    • intro
    • method
      • 聚类

Wav2Vec: Unsupervised pre-training for speech recognition

  • Facebook AI
  • code
  • 2019 interspeech

abstract

  • 使用大量无标签数据做无监督预训练,学到语音的高维表征用于语音识别
  • 模型:多层CNN,noise contrastive binary classification task。
  • 结论:用pre-trained wav2vec的特征代替fbank-mel,labeled data越少,wav2vec相比baseline带来的提升就越多。

method

在这里插入图片描述
z = e n c o d e r n e t w o r k ( X ) z = encoder network (X) z=encodernetwork(X)
c = c o n t e x t n e t w o r k ( z i , . . . , z i − u ) c = context network(z_i, ..., z_{i-u}) c=contextnetwork(zi,...,ziu)

  • 每个z编码了10ms的信息;context network输入多个z,感知野210ms;
  • 训练一个wav2vec large模型,context network的感知野更大,810ms;
  • 对样本在feature and temporal维度进行归一化,归一化的机制非常重要(对于输入的缩放和偏移是不变的),因而可以在更大的数据集良好泛化。

在这里插入图片描述
在这里插入图片描述

  • z i + k z_{i+k} zi+k是此后k step的特征,负例是从随机分布中采样的干扰(如果从其他序列或者其他说话人采负样,结果会变差)
  • 将得到的 c i c_i ci代替原有的mel fbank输入识别网络。

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

  • 2020 NIPS
  • Facebook AI
  • 参考讲解结合代码

abstract

  • 无标签数据通过自监督学习预训练ASR模型,然后少量数据finetune,可以超越当前最好的半监督模型。
  • LM的训练方法+对比学习:wav2vec 2.0 masks the speech input in the latent space and solves a contrastive task defined over a quantization of the latent representations which are jointly learned.
  • 量化编码

introduction

  • 在对比任务中,通过gumbel softmax学习discrete speech units,代表隐层特征,相比于非量化的特征更有效。
  • 预训练之后,使用标签数据+CTC Loss进行finetune,应用于下游的ASR任务。
  • 之前使用数据量化的方法一般分为两个阶段:数据量化,然后使用slf-attn建模语义信息。本文使用一种end2end的方式,实验证明达到更好的效果。而且在10min数据finetune,WER 4.8/8.2 ON clean/other test set of LibriSpeech

method

MODEL arch

在这里插入图片描述

  • Feature encoder:多层CNN,对waveform降采样,得到z;
  • Contextualized representations with Transformers:输入z,建模语义信息,输出c;
  • Quantization module:对z进行量化编码,使用Gumbel softmax优化码本训练;G个码本,每个码本有V条(多个码本分的更细,减少量化误差?)

损失函数

  • 损失函数分为两部分,对比损失+diversity loss
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

-   对比损失:	$z_t$mask掉,预测的$c_t$和量化的结果$q_t$计算距离;负样本$q^~}$来自干扰器(同一句话中其他masked step的正态采样)
![在这里插入图片描述](https://img-blog.csdnimg.cn/845b93ddf03449fa9f9e1d5034c1000e.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/44129e6f888049fcacb0372008ef5423.png)


- Diversity Loss:训练码本量化过程。损失函数$L_d$,最大化概率分布

finetune

  • pre-train完成以后,最后加一层linear projection,将 C C C进行分类,使用CTC Loss约束。参考了SpecAugment的实现,并在训练过程中添加time-step和channel的mask,显著延迟过拟合并提升准确率。

expriment

  • 训练数据:Librispeech 960h [24] or the Libri-Light 60k hours

HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Unit

  • 2021 TASLP期刊

  • facebook

  • Wei-Ning Hsu

  • code and example

  • hubert知乎

abstract

  • 自监督学习训练ASR,可以达到wav2vec 2.0类似甚至更好的效果。
  • 自监督学习的缺点在于没有标签,有点也是。因为标签表明文本内容,说话人等,都是相对单一的,会限制模型的表征学习,而自监督学习不受其影响,因此可以获得更好的泛化特性。

intro

  • 自监督的语音表示学习有三个难点:(1)语音中存在多个unit;(2)训练的时候和NLP不同,没有离散的单词或字符输入;(3)每个unit都有不同的长度,且没有相应的标注。本文提出hidden-unit Bert,HuBert,通过聚类的方式提供标签。

method

在这里插入图片描述

  • X= CNN Encoder(wav),降维
  • Z=Transformer(X),时序建模,输入的X有一定比例的mask
  • Z和聚类结果求loss

聚类

  • 聚类整合的方式:单个Kmeans聚类,会因为初始值或者k值的选择结果差别很大,为了避免这个问题,设置多个kmeans聚类。而且多个kmeans聚类可以学习到不同粒度的表征。也可以通过product quantization进行量化,多个不同的码本。
  • 训练过程中定义聚类:对learn latent representation离散化,然后在训练过程中更新聚类结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商品期货跨期套利实战笔记

合约对:IC2301&IC2302 价差计算 前-后(6082-6079.8) 做多价差开仓(预期价差变大) 买2301(前) 卖2302(后) 做空价差开仓(预期价差变小)&…

【Java|golang】1813. 句子相似性 III

一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,“Hello World” ,“HELLO” ,“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1…

react hooks组件间的传值方式(使用ts),子孙传值给祖先组件

父子组件传值参考:react hooks组件传值父传子很简单,只要父组件传参,子组件写好interface childProps和props去接收即可子传父稍复杂父组件写一个回调函数:changeTaskState{(id: any) > { changeTaskStateByID(id) }}当然这个 …

图自监督表征

1、综述 数据挖掘领域大师俞士纶团队新作:最新图自监督学习综述图自监督学习综述:Graph Self-Supervised Learning A Survey图自监督学习(Graph Self-supervised Learning)最新综述Github代码汇总图自监督学习在腾讯Angel Graph中…

基础数学(二)两数之和 三数之和

目录 两数之和_牛客题霸_牛客网 三数之和_牛客题霸_牛客网 两数之和_牛客题霸_牛客网 给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。 (注:返回的数组下标从…

从0到1完成一个Node后端(express)项目(四、路由、模块化、中间件、跨域)

往期 从0到1完成一个Node后端(express)项目(一、初始化项目、安装nodemon) 从0到1完成一个Node后端(express)项目(二、下载数据库、navicat、express连接数据库) 从0到1完成一个Nod…

分页查询数据重复的问题 (分页时数据库插入数据导致)

参考:https://blog.csdn.net/desongzhang/article/details/124941189参考之后 自己遇到的坑解决办法一、问题描述分页时,同时在数据库中添加数据,导致第n页和第n1页有部分数据重复(重复条数和查询分页时的添加的数据量有关)二、解决办法分页的…

商业智能 BI 跟业务系统的思维差异,跨越和提升

各行业都已开始进入数据时代,但很多企业还是分不清商业智能 BI 跟一般的业务信息化系统定位、用户、思维层面上的差异。 在企业的 IT 信息化规划中,基础的业务系统建设一定是走在前面的,有了这些系统基础,才会有数据的积累&#…

SH-PEG-Silane巯基-聚乙二醇-硅烷试剂简介Silane-PEG-SH

SH-PEG-Silane巯基-聚乙二醇-硅烷 外观:固体或液体,取决于分子量大小。 PEG可选分子量: 1000,2000,3400,5000,10000 溶剂: 溶于DMSO,DMF,DCM,溶于水。 纯度:>95% 保存:-20℃&#xff0c…

目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头

转载:https://mp.weixin.qq.com/s/5SjQvRqRct6ClpE2eEcdkw设计高效、高质量的表达性网络架构一直是深度学习领域最重要的研究课题。当今的大多数网络设计策略都集中于如何集成从不同层提取的特征,以及如何设计计算单元来有效地提取这些特征,从…

Ubuntu22.04 设置静态IP

1.查看网卡名称及IP ip addr 网卡名称:ens33 IP:192.168.44.130 2.修改配置文件 在 /etc/netplan/ 目录下找到配置文件 *.yaml ,修改为 network:version: 2#renderer: NetworkManagerethernets:ens33:addresses: [192.168.44.130/24]dhcp4: nooptio…

Chrome扩展程序(插件),用你开发的脚本在浏览器上随心所欲

Chrome扩展程序(插件),用你开发的脚本在浏览器上随心所欲Chrome插件的文件结构Hello_World编写利用JavaScript实现Hello Everything灵活运用浏览器的存储storageoptions_Page基本用法电脑发通知 - Notifications的应用普通界面右键菜单 - con…

Android 9.0系统源码_SystemUI(八)PhoneWindow更新状态栏和导航栏背景颜色的流程解析

前言 状态栏与导航栏属于SystemUi的管理范畴,虽然界面的UI会受到SystemUi的影响,但是,APP并没有直接绘制SystemUI的权限与必要。APP端之所以能够更改状态栏的颜色、导航栏的颜色,其实还是操作自己的View更改UI。可以这么理解&…

【Linux】探索缓冲区的概念 | Git 三板斧 | 实现简易进度条

爆笑教程,只送有缘人 👉 《看表情包学Linux》 💭 写在前面:本章我们先对缓冲区的概念进行一个详细的探究,之后会带着大家一步步去编写一个简陋的 "进度条" 小程序,过程还是挺有意思的&#xff0c…

EMQX 在 Kubernetes 中如何进行优雅升级

背景 为了降低 EMQX 在 Kubernetes 上的部署、运维成本,我们将一些日常运维能力进行总结、抽象并整合到代码中,以 EMQX Kubernetes Operator 的方式帮助用户实现 EMQX 的自动化部署和运维。 此前,EMQX Kubernetes Operator v1beta1、v1beta…

React--》如何在React中创建TypeScript项目并使用?

目录 React中创建TS项目 TS目录结构 React函数组件类型 React类组件类型 如果你已经掌握了TS中基础类型、高级类型的使用,还想在前端项目中更深一层的使用TS,还需要掌握React、Vue、Angular等框架和框架提供的API,懂得如何在框架中使用TS…

【ROS】—— 机器人导航(仿真)—导航实现(十八)[重要][重要][重要]

文章目录前言准备条件1. 导航实现01_SLAM建图1.1 gmapping简介1.2 gmapping节点说明1.3 gmapping使用1.3.1 编写gmapping节点相关launch文件1.3.2 执行2. 导航实现02_地图服务2.1 map_server简介2.2 map_server使用之地图保存节点(map_saver)2.2.1 map_saver节点说明2.2.2 地图…

你是真的“C”——函数递归详解汉诺塔+青蛙跳台阶

函数递归详解汉诺塔青蛙跳台阶问题😎前言🙌函数递归之汉诺塔详解分析🙌汉诺塔问题的简介😊汉诺塔的移动图解😊汉诺塔具体的移动过程展示😊汉诺塔的难处所在:😊函数递归之青蛙跳台阶详…

从头安装gdal库(Linux环境下的Python版)

目录前言GDAL安装SWIG安装proj 安装sqlite安装pkg-config 安装其他报错No package libtiff-4 foundPackage liblzma, required by libtiff-4, not foundPackage libjpeg, required by libtiff-4, not foundPackage zlib, required by libtiff-4, not foundchecking for curl-co…

Windows下IIS部署网站流程

IIS Internet information service 是一个web服务器 1. IIS用于windows系统 2.apache用于Linux系统,JAVA的web服务器 3.Nginx用于Linux,负责负载均衡,反向代理 安装完IIS之后,去更改DNS的指向。 DNS指向:IP 和 域名 的…