【GPT-SOVITS-06】特征工程-HuBert原理

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。

知乎专栏地址:
语音生成专栏

系列文章地址:
【GPT-SOVITS-01】源码梳理
【GPT-SOVITS-02】GPT模块解析
【GPT-SOVITS-03】SOVITS 模块-生成模型解析
【GPT-SOVITS-04】SOVITS 模块-鉴别模型解析
【GPT-SOVITS-05】SOVITS 模块-残差量化解析
【GPT-SOVITS-06】特征工程-HuBert原理

1.概述

HuBert 模型目的在于提取音频自编码特征,其核心架构如下:

说明:代码主要参考 HuggingFace 的transformers 开源库

在这里插入图片描述

  • 输入原始音频数据,通过类似Bert原理的编码器形成隐变量,即在进入多头注意力模块前增加了随机的掩码
  • 训练时,第一轮比对原始音频的 MFCC 特征做 kmean 编码,类似残差向量量化网络。针对隐变量与编码做交叉熵损失
  • 训练时,第二轮比对编码器生成的隐变量(第6/9层)做 kmean 编码,再针对隐变量与编码做交叉熵损失

与论文中的截图做一下对比:
在这里插入图片描述
在这里插入图片描述

2.核心源码解析

2.1、特征提取:HubertFeatureEncoder

在这里插入图片描述
默认为 7层一维卷积,每层卷积参数,主要是 kernel 和 stride 不同

2.2、核心编码器:HubertEncoder

在这里插入图片描述

  • 默认为 12层编码器模块
  • 在输出时,包含了最终层的输出,以及中间各层的输出

2.3、有监督微调:HubertForCTC

在这里插入图片描述

  • 论文中同样给出了基于CTC损失的微调
  • 在微调时,特征提取编码器参数固定

CTC 损失的价值,主要是用于输出和标签的不一致性。举例:
假设 hello 这个单词在10秒内完成,则按秒分帧,每一秒对应一个字母的概率。即可能是 hhhhellooo。损失计算的时候是要对比 hhhhellooo 和 hello 的差异。

3、调试代码参考

from transformers import HubertModel, HubertConfig
import torch
import librosa
import torch.nn as nndef _test_pred_vec():config = HubertConfig()model = HubertModel(config)device = "cuda" if torch.cuda.is_available() else "cpu"model.to(device)wav_in = "../data/test.wav"audio, sr  = librosa.load(wav_in, sr=16000)audio = torch.from_numpy(audio).to(device)x = audio[None, :]vec = model.forward(x)print(vec)def _test_ctc_loss():ctc_loss        = nn.CTCLoss()log_probs       = torch.randn(50, 16, 20).log_softmax(2).requires_grad_()targets         = torch.randint(1, 20, (16, 30), dtype=torch.long)input_lengths   = torch.full((16,), 50, dtype=torch.long)target_lengths  = torch.randint(10, 30, (16,), dtype=torch.long)loss            = ctc_loss(log_probs, targets, input_lengths, target_lengths)print(loss)if __name__ == '__main__':#_test_pred_vec()_test_ctc_loss()

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

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

相关文章

microk8s使用本地私服registry的镜像http协议

开发环境为了能部署服务到microk8s,我们开启了一个本地私库,地址为:http://localhost:5000,那么如何在microk8s中能拉取本地私库中的镜像呢? 直接部署的话,microk8s会用https协议去拉取镜像,所以必须要配置…

springboot/ssm电子印章管理系统Java印章审批信息管理系统web

springboot/ssm电子印章管理系统Java印章审批信息管理系统web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:…

Unity游戏项目接广告

Unity游戏项目中接入GoogleAdMob 先看效果图 接入测试横幅广告,代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; using System;public class GoogleAdMobManager : MonoBehavi…

面试算法-38-最小覆盖子串

题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果…

Godot 学习笔记(1):环境配置

文章目录 前言Godot 环境配置相关链接最简单的按钮项目Sence打包最简单的按钮事件 总结 前言 我从小就有个梦想,我想做游戏。虽然我大学的时候选择了计算机,工作也是计算机,但是我一直没有时间去学游戏引擎。原因有二:第一&#…

问题解决:关于tomcat无法连接问题的解决

安装tomcat并配置环境变量 下载tomcat并安装 首先去tomcat官方网站,下载tomcat 进入tomcat官方网站之后,查看jdk应该对应的tomcat版本,点击图示的按钮 点击完毕之后,可以看到下述的页面 图中的表格可以看到对应的jdk版本与tomcat的版本之…

docker基础用法-2

文章目录 什么是dockerOCI&OCFOCIOCF docker架构docker镜像与镜像仓库docker对象安装及使用dockerdocker安装docker加速docker常用操作docker event state防火墙状态及规则 什么是docker docker中的容器: lxc --> libcontainer --> runC docker最开始是…

Qt for Mac阻止MacOS系统休眠

Qt开发的应用程序如果电脑休眠了会影响软件的使用,因此在软件的使用过程中需要防止电脑休眠,在Win上有专门的API进行处理,在Mac上也必需使用Mac平台自身的API,本篇介绍在Mac平台下使用Qt阻止Mac系统休眠。 要调用Mac系统的API&am…

关机恶搞小程序的开发程序

关机恶搞小程序的开发程序 目录 关机恶搞小程序的开发程序 一、引言 二、开发思路 三、代码实现 1. 界面设计 2. 关机动画 3. 关机逻辑 4. 恢复功能 5. 异常处理 四、相关术语解释 一、引言 关机恶搞小程序是一种基于C#语言开发的应用程序,旨在通过一些有…

病毒物种注释:多方案

Blastn比对IMG/VR 下载IMG/VR数据库(见下面的教程) Linux 下载 JGI 的 IMG_VR-CSDN博客 安装Blast(这个太简单了) gunzip IMGVR_all_nucleotides-high_confidence.fna.gz makeblastdb -in img_vr.fasta -dbtype nucl -out img…

如何用Selenium通过Xpath,精准定位到“多个相同属性值以及多个相同元素”中的目标属性值

前言 本文是该专栏的第21篇,后面会持续分享python爬虫干货知识,记得关注。 相信很多同学,都有使用selenium来写爬虫项目或者自动化页面操作项目。同样,也相信很多同学在使用selenium来定位目标元素的时候,或多或少遇见到这样的情况,就是用Xpath定位目标元素的时候,页面…

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…

新!PCA+DBO+K-means聚类,蜣螂优化算法DBO优化K-means,适合学习,也适合发paper。

PCADBOK-means聚类&#xff0c;蜣螂优化算法DBO优化K-means&#xff0c;适合学习&#xff0c;也适合发paper。 一、 蜣螂优化算法 摘要&#xff1a;受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发&#xff0c;提出了一种新的基于种群的优化算法(Dung Beetle Optimizer, DBO…

【5G NR 协议解读】3GPP TS 38.212 (R18) 复用和信道编码(一)

前言 本文基于3GPP TS 38.212 (R18) 复用和信道编码协议。 本文档规定了5G NR的编码、多路复用和物理信道映射。 4 映射到物理信道 4.1 上行链路 表4.1-1规定了上行传输信道到其对应物理信道的映射。表4.1-2规定了上行控制信道信息到其对应物理信道的映射。 Table 4.1-1 T…

微服务的无状态、版本控制向后兼容、流量整型

如何理解微服务的无状态化&#xff1a; 单机Session 如果代码逻辑依赖SessIon中的某个kv 就是有状态的 如果将Session中的kv放在 redis 就成了无状态服务 应用无状态 在线服务扩容或者迁移时 业务不受影响 配置管理有状态&#xff0c; 不同配置文件参数值不同 如何通过接口版…

【开源】SpringBoot框架开发就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

数学建模博弈理论与实践国防科大版

目录 4.博弈模型 4.1.Nash平衡点和帕雷托最优 4.2.囚徒困境 4.3.智猪博弈 4.4.脏脸之谜 5.军事问题数学建模 5.1.兰彻斯特作战模型 5.1.1.一般战斗模型 5.1.2游击战模型 5.1.3.混合战模型 5.2.硫磺岛战役 4.博弈模型 本讲介绍博弈模型&#xff0c;包括博弈论&#x…

关系表示学习与图神经网络

一、关系表示学习与GNN 在社交网络、生物学网络和知识图谱等领域,图结构数据成为了重要的信息表示形式。图结构数据中的节点表示实体,而边表示实体之间的关系。针对这种图结构数据,关系表示学习和图神经网络成为了研究的热点。它们的结合可以用来学习节点和边的表示,并在各…

u盘文件损坏怎么恢复数据?分享三个数据恢复方法

随着科技的飞速发展&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而&#xff0c;由于各种原因&#xff0c;如不当操作、病毒感染或硬件故障等&#xff0c;U盘中的文件可能会受到损坏。那么&#xff0c;当U盘文件损坏时&#xff0c;我们该如何恢复数据呢…

elasticsearch(RestHighLevelClient API操作)(黑马)

操作全是换汤不换药&#xff0c;创建一个request&#xff0c;然后使用client发送就可以了 一、增加索引库数据 Testvoid testAddDocument() throws IOException {//从数据库查出数据Writer writer writerService.getById(199);//将查出来的数据处理成json字符串String json …