国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

戚墅堰常州做網(wǎng)站seo頁面優(yōu)化公司

戚墅堰常州做網(wǎng)站,seo頁面優(yōu)化公司,網(wǎng)站的主要功能模塊,濟(jì)南建站公司網(wǎng)站說明:該系列文章從本人知乎賬號遷入,主要原因是知乎圖片附件過于模糊。 知乎專欄地址: 語音生成專欄 系列文章地址: 【GPT-SOVITS-01】源碼梳理 【GPT-SOVITS-02】GPT模塊解析 【GPT-SOVITS-03】SOVITS 模塊-生成模型解析 【G…

說明:該系列文章從本人知乎賬號遷入,主要原因是知乎圖片附件過于模糊。

知乎專欄地址:
語音生成專欄

系列文章地址:
【GPT-SOVITS-01】源碼梳理
【GPT-SOVITS-02】GPT模塊解析
【GPT-SOVITS-03】SOVITS 模塊-生成模型解析
【GPT-SOVITS-04】SOVITS 模塊-鑒別模型解析
【GPT-SOVITS-05】SOVITS 模塊-殘差量化解析
【GPT-SOVITS-06】特征工程-HuBert原理

1.SOVITS 鑒別器

1.1、概述

GPT-SOVITS 在鑒別器這塊在SOVITS原始版本上做了簡化,先回顧下SOVITS的鑒別器。主要包含三類:
在這里插入圖片描述
各個鑒別器的輸出都包括兩類,即各層中間輸出和最終結(jié)果輸出,分別用來計(jì)算特征損失和生成損失。如下:
在這里插入圖片描述

1.2、MRD舉例

在這里插入圖片描述

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.nn.utils import weight_norm, spectral_normclass DiscriminatorR(torch.nn.Module):def __init__(self, hp, resolution):super(DiscriminatorR, self).__init__()self.resolution = resolutionself.LRELU_SLOPE = hp.mpd.lReLU_slopenorm_f = weight_norm if hp.mrd.use_spectral_norm == False else spectral_normself.convs = nn.ModuleList([norm_f(nn.Conv2d(1, 32, (3, 9), padding=(1, 4))),norm_f(nn.Conv2d(32, 32, (3, 9), stride=(1, 2), padding=(1, 4))),norm_f(nn.Conv2d(32, 32, (3, 9), stride=(1, 2), padding=(1, 4))),norm_f(nn.Conv2d(32, 32, (3, 9), stride=(1, 2), padding=(1, 4))),norm_f(nn.Conv2d(32, 32, (3, 3), padding=(1, 1))),])self.conv_post = norm_f(nn.Conv2d(32, 1, (3, 3), padding=(1, 1)))def forward(self, x):fmap = []# 獲取頻譜,這里是做了窗口傅里葉變換# 傅里葉變換時(shí),頻譜數(shù)量、窗口的移動、窗口大小由參數(shù) resolution 決定x = self.spectrogram(x)x = x.unsqueeze(1)for l in self.convs:# 與其他鑒別器一樣經(jīng)過conv-1d 和 leak-relue 形成中間層特征x = l(x)x = F.leaky_relu(x, self.LRELU_SLOPE)# 中間層特征被保存在 fmap 中fmap.append(x)x = self.conv_post(x)fmap.append(x)x = torch.flatten(x, 1, -1)# 返回各層的中間層特征 fmap  和 最終輸出 xreturn fmap, xdef spectrogram(self, x):n_fft, hop_length, win_length = self.resolutionx = F.pad(x, (int((n_fft - hop_length) / 2), int((n_fft - hop_length) / 2)), mode='reflect')x = x.squeeze(1)x = torch.stft(x, n_fft=n_fft, hop_length=hop_length, win_length=win_length, center=False, return_complex=False) #[B, F, TT, 2]mag = torch.norm(x, p=2, dim =-1) #[B, F, TT]return magclass MultiResolutionDiscriminator(torch.nn.Module):def __init__(self, hp):super(MultiResolutionDiscriminator, self).__init__()self.resolutions = eval(hp.mrd.resolutions)self.discriminators = nn.ModuleList([DiscriminatorR(hp, resolution) for resolution in self.resolutions])def forward(self, x):ret = list()# 這里做了一個不同尺度的 DiscriminatorR"""在 base.yml 中 mrd 的參數(shù)如下,有四個不同的尺度:mrd:resolutions: "[(1024, 120, 600), (2048, 240, 1200), (4096, 480, 2400), (512, 50, 240)]" # (filter_length, hop_length, win_length)use_spectral_norm: FalselReLU_slope: 0.2"""for disc in self.discriminators:ret.append(disc(x))return ret  # [(feat, score), (feat, score), (feat, score)]

2.GPT-SOVITS 鑒別器

2.1、主要更改

GPT-SOVITS 鑒別器結(jié)構(gòu)與 SOVITS基本類似,只是去除了多分辨率鑒別器,其余基本一樣,包括多周期鑒別器的尺度也是 2, 3, 5, 7, 11。其返回結(jié)果也包含最終【生成鑒別結(jié)果】和各層輸出【特征鑒別結(jié)果】兩類。

class MultiPeriodDiscriminator(torch.nn.Module):def __init__(self, use_spectral_norm=False):super(MultiPeriodDiscriminator, self).__init__()periods = [2, 3, 5, 7, 11]discs = [DiscriminatorS(use_spectral_norm=use_spectral_norm)]discs = discs + [DiscriminatorP(i, use_spectral_norm=use_spectral_norm) for i in periods]self.discriminators = nn.ModuleList(discs)def forward(self, y, y_hat):y_d_rs = []y_d_gs = []fmap_rs = []fmap_gs = []for i, d in enumerate(self.discriminators):y_d_r, fmap_r = d(y)      # 原始音頻輸入,返回鑒別結(jié)果y_d_g, fmap_g = d(y_hat)  # 推測音頻輸入,返回鑒別結(jié)果y_d_rs.append(y_d_r)y_d_gs.append(y_d_g)fmap_rs.append(fmap_r)fmap_gs.append(fmap_g)return y_d_rs, y_d_gs, fmap_rs, fmap_gs

2.2、損失函數(shù)

y_d_hat_r, y_d_hat_g, fmap_r, fmap_g = net_d(y, y_hat)
with autocast(enabled=False):loss_mel = F.l1_loss(y_mel, y_hat_mel) * hps.train.c_melloss_kl = kl_loss(z_p, logs_q, m_p, logs_p, z_mask) * hps.train.c_klloss_fm = feature_loss(fmap_r, fmap_g)loss_gen, losses_gen = generator_loss(y_d_hat_g)

如前文所述,這里特征損失基于各層輸出,計(jì)算邏輯在 feature_loss

def feature_loss(fmap_r, fmap_g):loss = 0for dr, dg in zip(fmap_r, fmap_g):for rl, gl in zip(dr, dg):rl = rl.float().detach()gl = gl.float()loss += torch.mean(torch.abs(rl - gl))return loss * 2

最終生成損失判別基于最終結(jié)果,計(jì)算邏輯在 generator_loss

def generator_loss(disc_outputs):loss = 0gen_losses = []for dg in disc_outputs:dg = dg.float()l = torch.mean((1 - dg) ** 2)gen_losses.append(l)loss += lreturn loss, gen_losses
http://aloenet.com.cn/news/40094.html

相關(guān)文章:

  • 做刷贊網(wǎng)站能賺錢嗎sem競價(jià)推廣
  • 東莞營銷網(wǎng)站建設(shè)重慶seo建站
  • 網(wǎng)站上如何設(shè)置行間距西安官網(wǎng)seo技術(shù)
  • 涉縣企業(yè)做網(wǎng)站推廣西安關(guān)鍵字優(yōu)化哪家好
  • 做動態(tài)網(wǎng)站必學(xué)營銷型網(wǎng)站建設(shè)模板
  • 網(wǎng)站 錯誤代碼免費(fèi)隱私網(wǎng)站推廣
  • 怎么建立掙流量的網(wǎng)站百度平臺客服人工電話
  • 紹興專業(yè)做網(wǎng)站的公司搜索引擎營銷方法主要有三種
  • 量化交易網(wǎng)站開發(fā)網(wǎng)站改版公司哪家好
  • 北京市建設(shè)工程審核網(wǎng)站十大經(jīng)典事件營銷案例分析
  • 寶盈集團(tuán)直營網(wǎng)站怎么做seo推廣方案
  • 海寧公司做網(wǎng)站營銷策略國內(nèi)外文獻(xiàn)綜述
  • 怎么判斷網(wǎng)站是否被k百度登陸
  • 怎么用dw第一次做網(wǎng)站關(guān)鍵詞優(yōu)化步驟簡短
  • 網(wǎng)站設(shè)計(jì)中下拉列表怎么做如何刷關(guān)鍵詞指數(shù)
  • 自己怎么制作網(wǎng)站百度排行
  • 網(wǎng)站建設(shè)規(guī)劃設(shè)計(jì)書個人網(wǎng)站的制作模板
  • 重慶網(wǎng)站設(shè)計(jì)公司網(wǎng)站制作百度熱搜的含義
  • pta編程網(wǎng)站網(wǎng)絡(luò)服務(wù)商
  • 知果果網(wǎng)站誰做的網(wǎng)站建設(shè)費(fèi)用多少錢
  • 深圳營銷型網(wǎng)站建設(shè)電話網(wǎng)站快速排名上
  • 做動態(tài)網(wǎng)站的軟件怎么自己制作網(wǎng)頁
  • 公司網(wǎng)站建設(shè)工作方案口碑營銷的特點(diǎn)
  • 網(wǎng)站內(nèi)怎么做鏈接站長查詢站長工具
  • 長沙高端網(wǎng)站制作公司上海b2b網(wǎng)絡(luò)推廣外包
  • 網(wǎng)站制作公透明清晰北京seo關(guān)鍵詞優(yōu)化外包
  • 廣州域名企業(yè)網(wǎng)站建站哪家好百度收錄網(wǎng)站需要多久
  • 網(wǎng)站系統(tǒng)的運(yùn)營和維護(hù)互聯(lián)網(wǎng)廣告營銷是什么
  • 商城建設(shè)網(wǎng)站的原因網(wǎng)站優(yōu)化課程
  • 蘭州微網(wǎng)站重慶網(wǎng)站seo費(fèi)用