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

news2024/9/21 15:43:27

拟议的 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.coloradmin.cn/o/1934777.html

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

相关文章

Linux部署Prometheus+Grafana

【Linux】PrometheusGrafana 一、Prometheus(普罗米修斯)1、Prometheus简述2、Prometheus特点3、Prometheus生态组件4、Prometheus工作原理 二、部署Prometheus1、系统架构2、部署Prometheus3、修改配置文件4、配置系统启动文件 三、部署 Node Exporter …

Spring MVC-什么是Spring MVC?

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景,服务提供商选择及算法定制等,配合已有产品完成整体产品工工资基于从事医疗行业的考虑,我们走的应该是AI产品经理(软件型) AI产品经理(行业型) AI…

JavaEE:Lombok工具包的使用以及EditStarter插件的安装

Lombok是一个Java工具库&#xff0c;通过添加注解的方式&#xff0c;简化Java的开发。 目录 1、引入依赖 2、使用 3、原理解释 4、更多使用 5、更快捷的引入依赖 1、引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lomb…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

亚马逊自发货erp,虚拟自动化发货功能以及1688订单采购

亚马逊自发货erp自动化功能&#xff0c;自动同步订单&#xff0c;1688订单同步。 大家好&#xff0c;今天分享一个非常实用并且节省时间的功能&#xff1a;自动化发货以及1688同步订单。 首先来看下自动化发货功能怎么操作。 →要在商品信息里面添加商品信息&#xff0c;上传…

C#语法基础详解(万字总结)

文章目录 **参考书籍&#xff1a;C#7.0 核心技术指南**类型类字段解构器对象初始化器属性表达式属性(只读属性才可以)自动属性属性初始化器 索引器静态构造器nameof运算符 继承类型转换和引用转换as运算符is运算符is与模式变量 虚函数成员抽象类和抽象成员new和重写base关键字构…

JavaDS —— 二叉树

树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 树形结构中&#xff0c;子树之间不能有…

网易滑块逆向

版本 2.27.2 混淆难度挺大 没反混淆 直接硬着直接干 参数还是那些 滑块&#xff08;其他类型也一样&#xff09;成功率 100%

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效 上篇作业解题 在前一篇文章的最后,给各位看官留了一个作业,如上图所示。本篇文章,我们来公布一下它的源码。 主要实现的思路 四个渐变色的线段,沿着四个方向的依次运动,(运动在加载前执行)使用 …

物联网实训室的核心功能有哪些?

随着物联网技术的迅猛发展和广泛应用&#xff0c;唯众凭借其深厚的技术积累和丰富的行业经验&#xff0c;为职业院校提供了全面的物联网实训室解决方案。这些实训室不仅为学生提供了真实、实用、创新的实践环境&#xff0c;还促进了产学研用的深度融合&#xff0c;推动了物联网…

深度学习根据代码可视化模型结构图的方法

方法1. Netron Netron 是一个支持多种深度学习模型格式的可视化工具&#xff0c;可以将 PyTorch 模型转换为 ONNX 格式&#xff0c;然后使用 Netron 进行可视化。 安装 Netron&#xff1a; pip install netron使用示例&#xff1a; import torch.onnx# 定义模型 model EMA…

上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!

上海理工大学&#xff08;University of Shanghai for Science and Technology&#xff09;&#xff0c;位于上海市&#xff0c;是一所以工学为主&#xff0c;工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学&#xff1b;是上海市属重点建设大…

秒懂C++之类与对象(中)

目录 一.流插入&#xff0c;流提取运算符 二.const成员函数 三.取地址重载 四.构造函数&#xff08;列表初始化&#xff09; 小测试&#xff1a; 五.全部代码 前排提醒&#xff1a;本文所参考代码仍是取用上篇文章关于日期类相关功能的实现~末尾有全部代码~ 一.流插入&a…

使用Redis的SETNX命令实现分布式锁

什么是分布式锁 分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中&#xff0c;由于多个节点可能同时访问和修改同一个资源&#xff0c;因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作&#xff0c;以避免数据不一致或…

WPF/C#:实现导航功能

前言 在WPF中使用导航功能可以使用Frame控件&#xff0c;这是比较基础的一种方法。前几天分享了wpfui中NavigationView的基本用法&#xff0c;但是如果真正在项目中使用起来&#xff0c;基础的用法是无法满足的。今天通过wpfui中的mvvm例子来说明在wpfui中如何通过依赖注入与M…

STM32智能安防系统教程

目录 引言环境准备智能安防系统基础代码实现&#xff1a;实现智能安防系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;家庭与企业安防管理问题解决方案与优化收尾与总结 1. 引言 智能安防系统通过STM32…

解决npm install(‘proxy‘ config is set properly. See: ‘npm help config‘)失败问题

摘要 重装电脑系统后&#xff0c;使用npm install初始化项目依赖失败了&#xff0c;错误提示&#xff1a;‘proxy’ config is set properly…&#xff0c;具体的错误提示如下图所示&#xff1a; 解决方案 经过报错信息查询解决办法&#xff0c;最终找到了两个比较好的方案&a…