GPT-SoVITS
文章目录
- model arch
- S1 Model
- S2 model
model arch

- S1 model: AR model–ssl tokens
- S2 model: VITS,ssl 已经是mel 长度线性相关,MRTE(ssl_codes_embs, text, global_mel_emb)模块,将文本加强相关,学到一个参考结果
S1 Model
class Text2SemanticDecoder()def forward_old(self, x, x_lens, y, y_lens, bert_feature):"""x: phoneme_idsy: semantic_idsbert_feature: 已经根据word2phn 扩展成和x等长train : y+EOS,已知长度;infer : AR 预测,预测EOS 终止;如果没有,到预设最大长度,终止;"""# phn torch.Size([20, 99]) bert_feature torch.Size([20, 1024, 99])x = self.ar_text_embedding(x)x = x + self.bert_proj(bert_feature.transpose(1, 2))x = self.ar_text_position(x)x_mask = make_pad_mask(x_lens)y_mask = make_pad_mask(y_lens)y_mask_int = y_mask.type(torch.int64)codes = y.type(torch.int64) * (1 - y_mask_int)# Training# AR Decoder: SinePositionalEmbeddingy, targets = self.pad_y_eos(codes, y_mask_int, eos_id=self.EOS)x_len = x_lens.max()y_len = y_lens.max()y_emb = self.ar_audio_embedding(y)y_pos = self.ar_audio_position(y_emb)xy_padding_mask = torch.concat([x_mask, y_mask], dim=1)ar_xy_padding_mask = xy_padding_maskx_attn_mask = F.pad(torch.zeros((x_len, x_len), dtype=torch.bool, device=x.device),(0, y_len),value=True,)y_attn_mask = F.pad(torch.triu(torch.ones(y_len, y_len, dtype=torch.bool, device=x.device),diagonal=1,),(x_len, 0),value=False,)xy_attn_mask = torch.concat([x_attn_mask, y_attn_mask], dim=0)bsz, src_len = x.shape[0], x_len + y_len_xy_padding_mask = (ar_xy_padding_mask.view(bsz, 1, 1, src_len).expand(-1, self.num_head, -1, -1).reshape(bsz * self.num_head, 1, src_len))xy_attn_mask = xy_attn_mask.logical_or(_xy_padding_mask)new_attn_mask = torch.zeros_like(xy_attn_mask, dtype=x.dtype)new_attn_mask.masked_fill_(xy_attn_mask, float("-inf"))xy_attn_mask = new_attn_mask# x 和完整的 y 一次性输入模型xy_pos = torch.concat([x, y_pos], dim=1)xy_dec, _ = self.h((xy_pos, None),mask=xy_attn_mask,)logits = self.ar_predict_layer(xy_dec[:, x_len:]).permute(0, 2, 1)# loss# from feiteng: 每次 duration 越多, 梯度更新也应该更多, 所以用 sumloss = F.cross_entropy(logits, targets, reduction="sum")acc = self.ar_accuracy_metric(logits.detach(), targets).item()return loss, acc
S2 model
class Encoder()def forward(self, ssl, y_lengths, text, text_lengths, speed=1,test=None):'''y_lengths: mel_lengthge : ref_encoder_outputs'''ge = self.ref_enc(y * y_mask, y_mask)ssl = self.ssl_proj(ssl)quantized, codes, commit_loss, quantized_list = self.quantizer(ssl, layers=[0])if self.semantic_frame_rate == "25hz":quantized = F.interpolate(quantized, size=int(quantized.shape[-1] * 2), mode="nearest")y = self.encoder_ssl(y * y_mask, y_mask)text_mask = torch.unsqueeze(commons.sequence_mask(text_lengths, text.size(1)), 1).to(y.dtype)if test == 1:text[:, :] = 0text = self.text_embedding(text).transpose(1, 2)text = self.encoder_text(text * text_mask, text_mask)y = self.mrte(y, y_mask, text, text_mask, ge)# self.encoder_ssl, self.encoder_text, self.encoder2 结构一样y = self.encoder2(y * y_mask, y_mask)if(speed!=1):y = F.interpolate(y, size=int(y.shape[-1] / speed)+1, mode="linear")y_mask = F.interpolate(y_mask, size=y.shape[-1], mode="nearest")stats = self.proj(y) * y_maskm, logs = torch.split(stats, self.out_channels, dim=1)return y, m, logs, y_mask
相关文章:
GPT-SoVITS
文章目录 model archS1 ModelS2 model model arch S1 model: AR model–ssl tokensS2 model: VITS,ssl 已经是mel 长度线性相关,MRTE(ssl_codes_embs, text, global_mel_emb)模块,将文本加强相关,学到一个参考结果 S1 Model cla…...
linux高级编程——文件IO(常用函数大全)
1.相关介绍及常用函数 Linux高级编程中的目录IO操作是文件系统编程的一个重要组成部分,主要涉及到目录的打开、读取、遍历和关闭等操作。以下是一些基本的目录IO操作和相关的系统调用函数 1.1 opendir函数 打开目录:使用opendir函数打开一个目录&#…...
matplotlib画图
Matplotlib 先写一个最简单的: import matplotlib.pyplot as plt plt.plot([1,4],[2,8]) #plot画折线图plt.show() 确定两个点画一条线 import matplotlib.pyplot as plt x[1,23,4,56,7,6] #x轴数据 y[22,44,56,67,43,2] #y轴数据 s[22,43,33,44,43,7] plt.p…...
Jetpack 各种框架简介
Jetpack是Google推出的一套为Android开发提供极大便利的组件、工具和指导集,旨在帮助开发者快速构建高质量的应用,并遵循最佳实践。 Jetpack不仅是一个提高开发效率的工具集,还是Android开发的未来方向。它通过整合各种组件和工具࿰…...
海康VisionMaster使用学习笔记5-开机自启动
开机自启动 在实际应用中,用户会希望机台上电开机后,软件能自启动避免现场人员误操作,减少机台重新上电时的操作步骤以提升效率。 设置 打开VM,点击设置,软件设置->开机自启动->勾选开机自启动->确定 默认运行界面 启动时以设定的…...
驾驭数据之序:SQL序列的奥秘与实现
标题:驾驭数据之序:SQL序列的奥秘与实现 摘要 在数据库管理中,保证数据的有序性和唯一性是至关重要的。SQL序列(Sequence)作为一种强大的数据库对象,为我们提供了一种在不同数据库系统中生成连续数字的手…...
【LeetCode】148. 排序链表
排序链表 题目描述: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:…...
阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)
第一步:在浏览器中,搜索阿里云 第二步:打开aly的主页 第三步:在最上方的导航栏中,找到云市场,注意不要点击,会自动有触发悬浮框出现,在悬浮框中找到 短信 第四步:点击 短…...
以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样
在不改变dijkstra算法本身的情况下,完全可以从数据源的角度出发,解决我们的一些简单需求: 比较初级且粗暴的玩法,可以是强行赋予一些link极端的路段长度。 对于我们坚决不希望车辆行驶的道路、禁行区、或是危险区,就…...
计算机操作员中级理论知识试题
计算机操作员中级理论知识试题 一、单项选择题 在ASCII编码中,无法显示或打印的字符是()。 A.字符$,%,# B.运算符号*,.,/ C.空格 D.ASCII编码值在0-30间的控制符号将十进制数31.625转换成十六进制数是() A.115.10 B.If.a C.37.5 D.If.10在计算机中,同统一指挥和控制计…...
Redis主从同步配置
1: 安装Redis 参考 linux ubuntu安装redis_ubuntu离线安装redis7.2.5-CSDN博客 2:创建目录 到达redis 根目录 cd /usr/redis/# 创建主从工作目录 mkdir -p replication/6379 # master 节点 mkdir -p replication/6378 # 从节点 mkdir -p replication/6377 # 从节点…...
输出重定向
输出重定向是指将程序的输出(标准输出、错误输出等)重定向到指定的位置,而不是默认的输出设备(通常是终端/控制台)。在 Unix/Linux 系统中,输出重定向通过使用符号 >、>>、2> 等来实现。 常见…...
ubuntu20.04挂载机械硬盘
环境说明 1.基于清华源地址下载的ubuntu20.04制作的系统盘,然后安装在PC上(固态硬盘) 2.机械硬盘无法看见 目的 挂载机械硬盘,开机就能自动启动/挂载 参考链接 https://blog.csdn.net/qq_35624642/article/details/137713143…...
Python轻量级 NoSQL 数据库之tinydb使用详解
概要 在现代应用开发中,使用数据库来存储和管理数据是非常常见的需求。对于简单的数据存储需求,关系型数据库可能显得过于复杂。TinyDB 是一个纯 Python 实现的轻量级 NoSQL 数据库,专为嵌入式场景设计,适用于小型项目、原型开发和教学等场景。本文将详细介绍 TinyDB 库,…...
【数据结构】二叉树(二)遍历
上篇已经了解对二叉树有了大概了解,本篇学习二叉树的前序、中序、后序及层序遍历的递归与非递归共7种遍历方法,快收藏吧~ 目录 1、前序遍历 递归方式: 迭代方式: 2、中序遍历 递归方式: 迭代方式: …...
NGINX 常用内置变量
目录 $remote_addr 变量 $args 变量 $is_args 变量 $document_root 变量 $document_uri 变量 $host 变量 $limit_rate 变量 $remote_port 变量 $remote_port --显示客户端端口 $request_method 变量 --返回请求方式 $request_filename 变量 --返回请求实际路径 $request_uri…...
Windows采用VS2019实现Open3D的C++应用
1、参考链接 https://blog.csdn.net/qq_31254435/article/details/137799739 但是,我的方法和上述链接不大一样,我是采用VS2019进行编译的,方便在Windows平台上验证各种算法。 2、创建一个VS2019的C Console工程 #include <iostream>…...
冒泡排序、选择排序、插入排序,三种简单排序算法的区别?
1、冒泡排序 冒泡排序是从下标 1 遍历到 n,每当遇到大于下一个的,就和上一个交换位置,这样最大的就移动到了 n 的位置,然后从头再从 1 遍历到 n-1,把第二大的移动到 n-1 的位置,依此类推,每次从…...
Docker 日志管理
一、ELK -Filebeat Elasticsearch 数据的存储和检索 常用端口: 9100:elasticsearch-head提供web访问 9200:elasticsearch与其他程序连接或发送消息 9300:elasticsearch集群状态 Logstash 有三个组件构成input,fi…...
JavaScript初级——基础知识
一、JS的HelloWord 1、JS的代码需要编写到script标签中 2、JS的执行是根据语句从上到下一次执行的。 二、JS的编写位置 1、可以将js代码编写到标签的onclick属性中,当我们点击按钮时,js代码才会执行。 2、可以将js代码写在超链接的href属性中࿰…...
无需Root!用KSWEB在旧安卓手机上搞个私人服务器:文件共享+内网穿透实战
无需Root!用KSWEB在旧安卓手机上搭建全能私人服务器 家里闲置的安卓手机别急着扔,只需安装一个KSWEB应用,就能变身为功能齐全的私人服务器。这个方案特别适合想低成本搭建家庭NAS、个人云存储或测试环境的极客用户。相比动辄上千元的专业NAS设…...
知识蒸馏(Knowledge Distillation, KD)详细介绍
知识蒸馏(Knowledge Distillation, KD)详细介绍 目录 概述基本概念知识蒸馏的核心思想蒸馏过程知识类型损失函数架构设计应用场景优化策略挑战与局限最新进展总结 概述 知识蒸馏(Knowledge Distillation, KD)是一种模型压缩和…...
CameraFileCopy:手机摄像头传输文件的终极解决方案,让数据传输不再受限!
CameraFileCopy:手机摄像头传输文件的终极解决方案,让数据传输不再受限! 【免费下载链接】cfc Demo/test android app for libcimbar. Copy files over the cell phone camera! 项目地址: https://gitcode.com/gh_mirrors/cfc/cfc 你是…...
如何快速上手艾尔登法环存档编辑器:新手完整指南
如何快速上手艾尔登法环存档编辑器:新手完整指南 【免费下载链接】ER-Save-Editor Elden Ring Save Editor. Compatible with PC and Playstation saves. 项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor ER-Save-Editor是一款专为《艾尔登…...
跨境电商注销店铺能规避美国TRO吗?
SellerAegis卖家守护视角下的“弃店思维”与真实法律后果解析在跨境电商卖家遭遇美国TRO(Temporary Restraining Order,临时限制令)后,最常见的一种想法就是:如果把店铺注销,是不是就可以规避风险ÿ…...
FFXIV插件框架Dalamud深度解析:架构设计与技术实现
FFXIV插件框架Dalamud深度解析:架构设计与技术实现 【免费下载链接】Dalamud FFXIV plugin framework and API 项目地址: https://gitcode.com/GitHub_Trending/da/Dalamud Dalamud作为《最终幻想XIV》的插件开发框架,为开发者提供了强大的游戏数…...
如何让珍贵的微信对话不再丢失:一个本地化数据管理方案
如何让珍贵的微信对话不再丢失:一个本地化数据管理方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…...
清华团队ISSCC新作解读:用eDRAM-LUT做存内计算,如何把存储单元变成加法器?
清华团队ISSCC新作:eDRAM-LUT如何重构存内计算芯片设计范式 当人工智能模型的参数量突破千亿级别时,传统计算架构的"存储墙"问题愈发凸显。数据在存储器和处理器之间的频繁搬运,消耗了系统60%以上的能耗——这恰恰是存内计算技术试…...
Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移
Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移 1. 模型概述与核心能力 Wan2.2-I2V-A14B是一款开源的文生视频大模型,专为高质量视频生成任务设计。该模型在保持开源特性的同时,通过LoRA微调技术实现了对私有领域视频风格的…...
如何快速掌握DLSS版本管理:专业用户的5个高效秘诀
如何快速掌握DLSS版本管理:专业用户的5个高效秘诀 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款能够让你轻松下载、管理和切换游戏DLSS、FSR和XeSS DLL文件的强大工具。通过这个开源项…...
