HiFi-GAN——基于 GAN 的声码器,能在单 GPU 上生成 22 KHz 音频

拟议的 HiFiGAN 可从中间表征生成原始波形

源码地址:https://github.com/NVIDIA/DeepLearningExamples
论文地址:https://arxiv.org/pdf/2010.05646.pdf

研究要点包括

  • **挑战:**基于 GAN 的语音波形生成方法在质量上不及自回归模型和基于流量的模型。
  • **解决方法:**提出 HiFi-GAN,以实现高效、高质量的语音合成。
  • **要点:**现在,单个 V100 GPU 就能生成 22.05 kHz 的高质量音频。

这意味着高质量的原始语音现在可以通过一种名为 "mel-spectrogram "的语音中间表示有效生成。

神经声码器和语音合成领域的背景

近年来,随着深度学习技术的发展,语音合成技术突飞猛进。

大多数神经语音合成模型采用两阶段管道

  1. 预测中间表征,如文本中的熔谱图。
  2. 从中间表征合成原始波形。

本文的重点是模型设计的第二阶段,即**“从熔体频谱图中高效生成高质量语音波形”**。

顺便提一下,这种第二阶段模型通常被称为 “神经译码器”,是许多研究的主题。

以前的工作问题
波网利用卷积神经网络实现高质量语音合成。
基于流量的模型,如 Parallel WaveNet 和 WaveGlow。并行计算实现更高速度
MelGAN 与 GAN结构紧凑,合成速度快。

顺便提一下,语音合成领域的一个共同问题是,由于语音是由不同周期的正弦信号组成的,因此必须对语音的周期模式进行建模

拟议方法:HiFi-GAN 概述

本研究中的 HiFiGAN 是一种基于 GAN 的生成模型,它可以

来源:https://pytorch.org/hub/nvidia_deeplearningexamples_hifigan/

具体来说,它由一个发生器和两个判别器组成:多周期判别器(MPD)和多尺度判别器(MSD)。

发电机

HiFi-GAN 生成器由一个全卷积神经网络组成。

将mel 频谱图作为输入,通过转置卷积重复进行升采样,并进行扩展,直到输出序列的长度与原始语音波形的时间分辨率相匹配。

每个转置卷积后还会有一个多感受场融合(MRF)模块。

多感知场融合(MRF)

MRF 模块旨在并行捕捉不同长度的模式。具体来说,MRF 模块返回多个残差块的输出总和。

每个残差块都有不同的内核大小和扩张率,以形成各种感受野模式。

鉴别器

HiFi-GAN 使用以下两个标识符。

  • 多周期判别器(MPD)
  • 多尺度判别器 (MSD)

MPD 由多个子识别器组成,每个子识别器只接收来自输入语音的等间距采样信号。这使得每个子识别器都能关注输入语音中的不同周期模式,从而捕捉语音中固有的各种周期结构。

MSD 还能通过连续评估不同尺度的输入语音,捕捉连续模式和长期依赖关系。具体地说,它由三个子鉴别器组成,有三种输入语音类型:原始语音、1/2 降低采样率的语音和 1/4降低采样率的语音。

因此,通过结合 MPD 和 MSD,HiFi-GAN 被认为能够从生成语音的详细周期特征和全局连续特征等多个角度进行评估

损失函数

HiFi-GAN 研究使用了四种损失函数

  • GAN 损失(对抗损失)
  • 梅尔谱仪损失
  • 特征匹配损失
  • 最终损失函数(最终损失)

GAN 损失(对抗损失)

在GAN Loss(对抗损失)中,MPD 和 MSD 被视为一个判别器,并使用 LSGAN 目标函数。鉴别器学会将真实语音分类为 1,将生成语音分类为 0,而生成器学会欺骗鉴别器。

梅尔谱仪损失

梅尔谱图损失(Mel-Spectrogram Loss)在GAN 损失的基础上引入了梅尔谱图损失,以提高生成器的训练效率和生成语音的质量。

具体来说,它的定义是发生器合成的波形与真实波形的熔谱图之间的 L1 距离。

这种损耗使发生器能够合成与输入条件相对应的自然波形,并从对抗学习的早期阶段开始稳定学习。

特征匹配损失

指真实样本和生成样本中鉴别器特征的相似度。

具体来说,提取判别器的中间特征,并计算每个特征空间中真实样本和条件生成样本之间的 L1 距离。

最终损失函数

最终的 HiFi-GAN 损失函数。

在这里,发生器的损失函数表示为上述三个损失函数的加权和。

效果

实验细节

为评估 HiFi-GAN 的语音合成质量和合成速度,我们进行了以下四项实验

  • 主观评估以及与其他先进模型(WaveNet、WaveGlow、MelGAN)的速度比较
  • 调查 HiFi-GAN 的每个组成部分(MPD、MRF、mel spectrogram loss)对质量的影响。
  • 研究语音合成中的泛化性能
  • 端到端语音合成实验

主观评价以及与其他现代模型的速度比较

我们从 LJSpeech 中随机抽取了 50 个语句来测量主观评价(平均意见分值,MOS)和合成速度。

结果表明,与 WaveNet、WaveGlow 和 MelGAN 等其他模型相比,HiFi-GAN 实现了更高的 MOS。至于 HiFiGAN 的 V3,其速度也比 CPU 上的实时合成快 13.44 倍。

-研究 HiFi-GAN 对单个组件质量的影响

为了研究每个分量(MPD、MRF、MelSpectrogram loss)对 HiFiGAN 中语音质量的影响,他们根据 V3 删除了每个分量,并比较了 MOS。他们还研究了在 MelGAN 中引入 MPD 的效果。

结果表明,MPD、MRF 和 mel spectrogram loss 都有助于提高性能。特别是当 MPD 被移除时,质量大大降低。

此外,当将 MPD 引入 MelGAN 模型时,也观察到了显著的改进。

研究语音合成中的泛化性能

数据集中剔除了九位发言者的语音数据,并通过对发言者的语音进行梅尔频谱图转换→使用 HiFiGAN 进行语音合成来测量 MOS。

结果表明,在所有三个变体中,HiFi-GAN 的性能均优于自回归模型和基于流量的模型。

结果表明,语音合成的泛化能力很强。

端到端语音合成实验

HiFi-GAN 与文本到谱模型 "Tacotron2 "相结合,用于评估端到端语音合成的性能。

具体来说,将 Tacotron2 生成的熔谱图输入 HiFi-GAN,并对 MOS 进行测量。此外,还验证了微调的效果。

结果表明,结合Tacotron2 和HiFi-GAN 的语音合成模型优于 WaveGlow。微调结果还显示,V1 的 MOS 达到了 4.18,几乎与人声质量相当。

总结

本文介绍了有关 HiFiGAN 的研究,这是一种用于高效、高质量语音合成的 GAN 模型。

本研究有三个局限性

  • 是否适用于更多的说话者和语言还不得而知。
  • 嗓音的情感和节奏表现力尚未得到充分测试。
  • 尚未对有限计算资源环境下的语音合成性能进行评估。

因此,在未来的研究中,他们计划开发一个 HiFi-GAN 的扩展模型来解决上述问题,并通过在小数据集上学习来缩小规模和提高效率。

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

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

相关文章

Linux网络——TcpServer

一、UDP 与 TCP 在现实生活中,Udp 类似于发传单,Tcp 类似于邮局的挂号信服务。 1.1 UDP(用户数据报协议) 无连接:发放传单时,你不需要提前和接受传单的人建立联系,直接把传单发出去。不可靠&…

Spring Boot1(概要 入门 Spring Boot 核心配置 YAML JSR303数据校验 )

目录 一、Spring Boot概要 1. SpringBoot优点 2. SpringBoot缺点 二、Spring Boot入门开发 1. 第一个SpringBoot项目 项目创建方式一:使用 IDEA 直接创建项目 项目创建方式二:使用Spring Initializr 的 Web页面创建项目 (了解&#…

低代码中间件学习体验分享:业务系统的创新引擎

前言 星云低代码平台介绍 星云低代码中间件主要面向企业IT部门、软件实施部门的低代码开发平台,无需学习开发语言/技术框架,可视化开发PC网页/PC项目/小程序/安卓/IOS原生移动应用,低门槛,高效率。针对企业研发部门人员少&#…

Vue3 + uni-app 微信小程序:仿知乎日报详情页设计及实现

引言 在移动互联网时代,信息的获取变得越来越便捷,而知乎日报作为一款高质量内容聚合平台,深受广大用户喜爱。本文将详细介绍如何利用Vue 3框架结合微信小程序的特性,设计并实现一个功能完备、界面美观的知乎日报详情页。我们将从…

使用Python和Pandas进行数据分析:入门与实践

目录 引言 准备工作 安装Python与Pandas 导入Pandas库 Pandas基础 数据结构 创建Series和DataFrame 读取数据 数据探索 查看数据 数据清洗 数据可视化 实战案例:分析销售数据 引言 在当今数据驱动的时代,数据分析已成为各行各业不可或缺的…

数据结构(单链表算法题)

1.删除链表中等于给定值 val 的所有节点。 OJ链接 typedef struct ListNode ListNode;struct ListNode {int val;struct ListNode* next; };struct ListNode* removeElements(struct ListNode* head, int val) {//创建新链表ListNode* newhead, *newtail;newhead newtail N…

解决TypeError: __init__() takes 1 positional argument but 2 were given

问题描述: 如下图,在使用torch.nn.Sigmoid非线性激活时报错 源代码: class testrelu(nn.Module):def __init__(self):super().__init__()self.sigmoid Sigmoid()def forward(self, input):output self.sigmoid(input)return outputwriter…

源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)

我们今天的主角是Gateway网关,一听名字就知道它基本的任务就是去分发路由。根据不同的指定名称去请求各个服务,下面是Gateway官方的解释: Spring Cloud Gateway,其他的博主就不多说了,大家多去官网看看,只…

vue和微信小程序的区别、比较

找到一篇很好的关于vue和小程序之间的理解文章,在此分享一下: 前端 - vue和微信小程序的区别、比较 - 个人文章 - SegmentFault 思否https://segmentfault.com/a/1190000015684864

huawei USG6001v1学习---信息安全概念

目录 1.什么是分布式? 2.什么是云计算? 3.APT攻击 4.安全风险能见度不足 5.常见的一些攻击 6.交换机转发原理? 7.各层攻击类型 7.1链路层: 7.2网络层: 7.3传输层: 7.4应用层: 1.什么…

github上的工程如何下载子模块.gitmodules如何下载指定的模块download submodules开源项目子模块下载externals

github上的工程如何下载子模块.gitmodules如何下载指定的模块download submodules 说明(废话)解决方案无法执行下载子模块无法下载子项目 说明(废话) 今天在编译一个开源库时,该开源库依赖其他项目,并且项目还挺多的,所以有此解决方案 在编…

云微客如何实现低成本快速获客?AI矩阵来传播

目前市场环境较为严峻,超过上千万家实体商家都会遇到线下获客难、线上营销成本高的困境,因此商家急需新的获客方案。 云微客AI矩阵系统基于AIGC的企业短视频矩阵及内容生成、协作、管理平台,通过对多个短视频平台进行营销覆盖,深入…

新建一个git仓库并且把已有项目推送到git远程仓库

总贴 1. 创建一个空项目,不会看新建仓库 2. 克隆这个项目到某个文件夹去,比如我想克隆到我的E盘的code下面 3. 我的这个文件夹下面是有东西的,一点都不影响 . 4. 用命令行进入这个文件夹 命令行已经显示了已经在E盘下面code文件夹, 不会…

el-tree动态添加子节点的问题

如果我们需要动态往el-tree里面某一个节点添加子节点,追加或删除,我跟你讲,一定要显式地调用el-tree的方法,不然的话,后面调用setChecked这种方法看不到效果的。 比如el-tree绑定的data如下: [{id:"1…

Elasticsearch:如何选择向量数据库?

作者:来自 Elastic Elastic Platform Team 向量数据库领域是一个快速发展的领域,它正在改变我们管理和搜索数据的方式。与传统数据库不同,向量数据库以向量的形式存储和管理数据。这种独特的方法可以实现更精确、更相关的搜索,并允…

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤: 网址:aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话,密码有加密,直接搜索找到疑似加密位置打上断点。 再控制台打印,分析加密函数 有三个处理过程,b[g]得到的是用户名,b[f] 对…

React@16.x(62)Redux@4.x(11)- 中间件2 - redux-thunk

目录 1,介绍举例 2,原理和实现实现 3,注意点 1,介绍 一般情况下,action 是一个平面对象,并会通过纯函数来创建。 export const createAddUserAction (user) > ({type: ADD_USER,payload: user, });这…

如何在Mac下修改VSCode侧边栏字体大小

在日常使用VSCode(Visual Studio Code)进行开发时,我们有时需要对IDE(集成开发环境)的界面进行一些个性化的调整,以提升我们的开发体验。 比如,有些用户可能会觉得VSCode的侧边栏字体大小不符…

uni-app开发日志:unicloud使用时遇到的问题解决汇总(不断补充)

插件安装后提示与原数据库表冲突(2024.7.18) 安装uni-admin后再安装uni-cms,在uni-admin中添加好菜单,结果提示该错误 回到hbuilder中uniCloud/database中找到冲突的部分 比较一下,选中老的删除 opendb-news-articl…

PCB(印制电路板)制造涉及的常规设备

印制电路板(PCB)的制造涉及多种设备和工艺。从设计、制作原型到批量生产,每个阶段都需要不同的专业设备。以下是一些在PCB制造过程中常见的设备: 1. 计算机辅助设计(CAD)软件: - 用于设计PC…