Wav2Vec HuBert 自监督语音识别模型

news/2024/11/19 22:33:04/

文章目录

  • 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=encodernetwork(X)z = encoder network (X)z=encodernetwork(X)
c=contextnetwork(zi,...,zi−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维度进行归一化,归一化的机制非常重要(对于输入的缩放和偏移是不变的),因而可以在更大的数据集良好泛化。

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

  • zi+kz_{i+k}zi+k是此后k step的特征,负例是从随机分布中采样的干扰(如果从其他序列或者其他说话人采负样,结果会变差)
  • 将得到的cic_ici代替原有的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,将CCC进行分类,使用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.ppmy.cn/news/12589.html

相关文章

第三章 熟悉的气息

Died有些奇怪,这个游戏好像有哪里不对劲,对,比她输入的代码要多了很多。她的游戏……只是很简单的啊。 Died的虚拟世界里…… 一个人,看不清面容,笑着:“Died的数据传回来了吗?” Died准备休息一…

孤儿进程和僵尸进程

文章目录孤儿进程僵尸进程孤儿进程 定义 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程(Orphan Process)每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置…

修改jupyter notebook默认路径

修改jupyter notebook默认路径jupyter notebook默认打开C:\Users\你的用户名,用户名是你的电脑用户名,upload文件又会在C盘生成一堆文件,很乱,用notebook打开文件还要跳转到目录,很麻烦,那有没有办法呢&…

RESTful的风格提倡 URL 地址使用统一的风格设计

RESTful概念实现REST:Representational State Transfer,表现层资源状态转移。资源:资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。资源的表述资源的表…

使用Python创建websocket服务端并给出不同客户端的请求

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 使用Python创建websocket服务端,并给出不同客户端的请求 一、 WebSocket是啥 WebSocket 和HTTP一样,也是一种通…

GPIO 八种工作模式及其硬件框图

参考资料: STM32F1xx 官方资料:《STM32中文参考手册V10》- 第 8 章通用和复用功能 IO(GPIO 和 AFIO) GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32 的八种 …

JavaScript 浏览器的重排和重绘

文章目录JavaScript 浏览器的重排和重绘概述浏览器解析过程重排重绘优化将多次改变样式的属性操作合并为一次需要多次重排的元素设置为绝对定位减少DOM操作复杂元素处理先设置display为none处理完后再显示缓存频繁操作的属性减少使用table布局使用事件委托绑定事件处理程序利用…

目标检测:特征金字塔网络(Feature Pyramid Network)

目标检测:特征金字塔网络(Feature Pyramid Network)概述核心思想概述 由于在目标检测任务中,对与大目标的检测,需要feature map每个点的感受野大一点(高层语义特征),对于小目标&…