当前位置: 首页 > news >正文

【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()

相关文章:

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

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...

ros小问题之差速轮式机器人轮子不显示(rviz gazebo)

在rviz及gazebo练习差速轮式机器人时,很奇怪,只有个机器人的底板及底部的两个万向轮,如下图, 后来查看相关.xacro文件,里面是引用包含了轮子的xacro文件,只需传入不同的参数即可调用生成不同位置的轮子&…...

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多,就一个NAT。 之前记的NAT的内容:blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址,由运营商统一分配全球唯一的I…...

【Unity入门】详解Unity中的射线与射线检测

目录 前言一、射线的创建方法二、射线检测1、Raycast()Raycast()不使用射线RayRaycast()使用射线Ray 2、RaycastAll()使用射线RayRaycastAll() 不使用射线Ray 3、射线的碰撞信息 三、示例四、具体使用场景射线的调试方法1、Debug.DrawLine()2、Debug.DrawRay利用Gizmos 前言 碰…...

实验11-2-5 链表拼接(PTA)

题目: 本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下: struct ListNode {int data;struct ListNode *next; }; 函数接口定义: struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2); 其中lis…...

Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源

目录 一、背景 二、各个配置文件总览(文件位置因人而异) 2.1 DataSourceConfig 2.2 MybatisClickHouseConfig (ClickHouse 配置类) 2.3 MybatisMysqlConfig(Mysql 配置类) 2.4 application.propertie…...

27-3 文件上传漏洞 - 文件类型绕过(后端绕过)

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 导语 后端校验由开发决定是检测文件后缀,还是文件内容。 文件类型绕过(Content-Type) 1)MIME 类型 定义:MIME(Multipurpose Internet Mail Extensions)类型是一种标准,…...

widget一些控件的使用

QRadioButton使用 先使用ui界面拖拽创建radio button #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->male->setChecked(true);//选中按钮ui->o…...

Python基础(七)之数值类型集合

Python基础(七)之数值类型集合 1、简介 集合,英文set。 集合(set)是由一个或多个元素组成,是一个无序且不可重复的序列。 集合(set)只存储不可变的数据类型,如Number、…...

电脑充电器能充手机吗?如何给手机充电?

电脑充电器可以给手机充电吗? 电脑充电器可以给手机充电,但前提是电脑充电器的功率输出与手机的功率匹配且接口匹配。 假设电脑充电器的输出功率为5V/2A,手机也支持5V/2A的输入功率。 只要接口匹配,就可以使用电脑充电器给手机充…...

矩阵中移动的最大次数

文章目录 所属专栏:BFS算法 题目链接 思路如下: 1.首先我们需要从第一列开始遍历,寻找每一个都能够满足条件的位置,将它插入到数组里面 2.第一列遍历完了后我们先判断第一列的数是否都满足条件插入到数组里面,如果数组为空&#…...

Linux:系统初始化,内核优化,性能优化(3)

优化系统的文件句柄数(全局) 也就是系统的最大文件数量 查看最大数量 cat /proc/sys/fs/file-max 当我们的服务器有非常大的一个数据并发的时候十几二十万的文件需要去配置,可能这个是远远不够的,我们就要去修改 vim /etc/sy…...

使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发

在快节奏的移动应用程序开发世界中,速度、可靠性和效率是决定项目成功或失败的关键因素。持续集成和持续部署 (CI/CD) 实践已成为确保满足这些方面的强大工具。当与流行的跨平台框架 Flutter 和 GitHub Actions 的自动化功能相结合时,开发人员可以创建无…...

微软 CEO Satya Nadella 的访谈

Nicolai: 大家好。我刚经历了人生中最不可思议的事情,我有幸采访了微软的 CEO、Satya Nadella。微软现在是全球市值最高的公司。真是太棒了,请继续关注。 第一章 微软的发展与平台转变 Nicolai: Satya,你是全球市值最高公司的 CEO&#xff…...

万界星空科技商业开源MES,技术支持+项目合作

商业开源的一套超有价值的JAVA制造执行MES系统源码 亲测 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境:jdk11tomcatmysql8springbootmaven 可以免费使用,需要源码价格便宜,私信我获取。 一、系统概述: MES制造执…...

Docker Mysql无root账户创建最高权限用户

创建最高权限用户 进入 MySQL 容器的命令行界面。您可以使用以下命令&#xff1a; 修改配置文件my.cnf 无密码进入 [mysqld]下输入 skip-grant-tables重启mysql容器 进入容器内部 container_name 容器ID或name docker restart mysql docker exec -it <container_name>…...

常用芯片学习——DS3231M芯片

DS3231M RTC实时时钟 芯片介绍 DS3231M是一款低成本、极其精确的 I2C 实时时钟 &#xff08;RTC&#xff09;。该设备集成了电池输入&#xff0c;并在设备主电源中断时保持准确的计时。微型电子机械系统 &#xff08;MEMS&#xff09; 谐振器的集成提高了器件的长期精度&…...

蓝桥杯单片机快速开发笔记——矩阵键盘

一、原理分析 二、思维导图 三、示例框架 定义了四个位控制变量&#xff0c;用于控制键盘扫描时的行列信号。 在Scan_Keys()函数中&#xff0c;首先设置行列信号&#xff0c;将其中一个行信号置为0&#xff0c;另一个行信号置为1&#xff0c;同时将列信号置为1&#xff0c;用于…...

每周一算法:双向深搜

题目描述 达达帮翰翰给女生送礼物&#xff0c;翰翰一共准备了 N N N 个礼物&#xff0c;其中第 i i i 个礼物的重量是 G [ i ] G[i] G[i]。 达达的力气很大&#xff0c;他一次可以搬动重量之和不超过 W W W的任意多个物品。 达达希望一次搬掉尽量重的一些物品&#xff0c;请…...

蓝桥杯刷题(十)

1.翻转 代码 输入数据&#xff0c;每组数据进行比较&#xff0c;j的范围掐头去尾&#xff0c;若a[j]b[j]&#xff0c;继续&#xff0c;若出现010,101子串则改成000,111&#xff0c;遍历完后比较a是否等于b&#xff0c;相同则输出次数&#xff0c;不同则输出-1。 for _ in ran…...

告别AssetBundle!用Unity Addressables实现资源热更,我踩过的坑都帮你填平了

从AssetBundle到Addressables&#xff1a;Unity资源热更的现代化迁移指南第一次接触Unity Addressables时&#xff0c;我正被AssetBundle的各种问题折磨得焦头烂额。那是一个周五的深夜&#xff0c;项目即将上线&#xff0c;却因为AssetBundle的依赖关系混乱导致热更新失败。在…...

手把手教你:把Ubuntu 20.04完整系统塞进U盘,打造随身便携开发环境

手把手打造Ubuntu 20.04便携开发环境&#xff1a;从镜像制作到硬件兼容全指南 在咖啡厅调试代码时发现环境配置丢失&#xff1f;出差临时借用同事电脑却无法运行你的开发工具&#xff1f;这些困扰程序员多年的痛点&#xff0c;其实只需要一个装满完整Ubuntu系统的U盘就能彻底解…...

戴森球计划FactoryBluePrints:从零到万亿级产能的工业化蓝图解决方案

戴森球计划FactoryBluePrints&#xff1a;从零到万亿级产能的工业化蓝图解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划社区规模最…...

ABAP 关键用户版本语句白名单全解析:从语法限制到实战案例

在很多 SAP S/4HANA Cloud 项目里,业务关键用户已经不再满足于只提需求、等 IT 做开发。通过 Custom Fields and Logic 这类 Fiori 应用,关键用户可以直接在浏览器里写 ABAP 代码,自助实现校验、默认值、计算逻辑等扩展。这背后真正跑的,就是一个专门为关键用户设计的受限语…...

Docbox实战案例分享:Mapbox、Mapillary等知名公司的使用经验

Docbox实战案例分享&#xff1a;Mapbox、Mapillary等知名公司的使用经验 【免费下载链接】docbox REST API documentation generator 项目地址: https://gitcode.com/gh_mirrors/do/docbox Docbox是一款开源的REST API文档生成系统&#xff0c;它能够将结构化的Markdown…...

告别瞎猜!用DBSCAN和K-means搞定毫米波雷达点云聚类,附完整Matlab代码与数据集

毫米波雷达点云聚类实战&#xff1a;DBSCAN与K-means算法深度对比与Matlab实现在自动驾驶和智能感知领域&#xff0c;毫米波雷达因其全天候工作能力和稳定的性能表现&#xff0c;成为环境感知系统中不可或缺的传感器。然而&#xff0c;原始雷达点云数据往往呈现出稀疏、噪声多且…...

安卓Qwen Chat 国际版 无限AI生图 图生视频

最新 2.0.0 国际版限制更少应用名称&#xff1a;Qwen Chat 应用版本&#xff1a;2.0.0 应用大小&#xff1a;25 MB 适用平台&#xff1a;Android 使用说明&#xff1a; 软件介绍 Qwen Chat是一款强大的多功能AI助手应用&#xff0c;旨在提高您的工作效率和学习体验。&am…...

交互式测试与条件有效性:动态数据决策的统计可靠性保障

1. 交互式测试与条件有效性&#xff1a;从理论到实践的深度拆解在数据驱动的决策场景里&#xff0c;比如在线A/B测试、自适应临床试验或者强化学习的策略评估&#xff0c;我们常常面临一个核心矛盾&#xff1a;我们既希望根据不断涌入的数据动态调整分析策略&#xff08;例如&a…...

OpenCL图像格式兼容性与性能优化指南

1. OpenCL图像格式兼容性解析在OpenCL编程中&#xff0c;图像处理是一个核心功能模块。图像格式的正确配置直接影响着内核程序的执行效率和结果的准确性。CL_UNSIGNED_INT8和CL_RGB作为OpenCL中常见的图像格式参数&#xff0c;它们的兼容性问题值得深入探讨。1.1 图像格式描述符…...

Atomic Layout高级技巧:使用Query函数实现自定义媒体查询

Atomic Layout高级技巧&#xff1a;使用Query函数实现自定义媒体查询 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout是一个基于React的声明…...