语音合成 GAN Vocoders 总览

Loss 函数简称与全称的对应关系

Short NameFull Name
advadversial loss
FMFeature Matching
MSDMulti-Scale Discriminator
mr-STFTMulti-resolution STFT loss
fmr-STFTfull band Multi-resolution STFT loss
smr-STFTsub band Multi-resolution STFT loss
MelMel-Spectrogram Loss
MPDMulti-Period Discriminator
FB-RAWsFilter Bank Random Window Discriminators

csmsc 数据集上 GAN Vocoder 整体对比如下,

测试机器:1 x Tesla V100-32G 40 core Intel® Xeon® Gold 6148 CPU @ 2.40GHz

测试环境:Python 3.7.0, paddlepaddle 2.2.0

ModelDateInputGenerator
Loss
Discriminator
Loss
Need
Finetune
Training
Steps
Finetune
Steps
Batch
Size
ips
(gen only)
(gen + dis)
Static Model
Size (gen)
RTF
(GPU)
Mel GAN9 Dec 2019meladv
FM
MSD——————————————
Parallel Wave GAN6 Feb 2020mel
noise
adv
mr-STFT
advNo40W——818
10
5.1MB0.01786
HiFi GAN23 Oct 2020meladv
FM
Mel
MSD
MPD
Yes250Wno need16——
31
50MB0.00825
Multi-Band Mel GAN17 Nov 2020meladv
fmr-STFT
smr-STFT
MSDYes100W100W
(not good enough,
need to adjust parameters)
64305
148
8.2MB0.00457
Style Mel GAN12 Feb 2021mel
noise
adv
mr-STFT
FB-RAWsNo150W——3258
24
——0.01343

网络结构

Mel GAN


Mel GAN 网络结构图

Parallel Wave GAN


Parallel Wave GAN 网络结构图

HiFi GAN


HiFi GAN 生成器网络结构图



HiFi GAN 判别器网络结构图

Multi-Band Mel GAN


Multi-Band Mel GAN 网络结构图

Style Mel GAN


Style Mel GAN TADE 网络结构图



Style Mel GAN 生成器网络结构图



Style Mel GAN 判别器网络结构图

需要注意的点

输入

  1. 一般情况下,若训练时输入中没有 noise,容易过拟合,需要 finetune
    • 参考 espent issue
  2. 若输入中有 noise, 在预测时需要自己在 inference 代码中生成 noise, 而不能作为参数输入给 inference, 否则动转静可能走不通
    • 参考 pwgan 动转静修复 pr

生成器

  1. hop_sizen_shift 的含义一样
  2. upsample_scales 的乘积一定等于 hop_size
  3. 采样点 = hop_size * 帧数
  4. librosa 帧数 = 采样点 // hop_size + 1, 具体要不要 +1 看不同的库,看 center 这个参数
  5. Mel GANMulti-Band Mel GAN 生成器的代码是一样的,只是参数不一样,通道数不一样
  6. Parallel Wave GAN 的生成器是 WaveNet like
    • 用非因果卷积替换了因果卷积
    • 输入是满足高斯分布的随机噪声
    • 训练和预测时都是非自回归的
  7. Style MelGAN 的 noise 的上采样需要额外注意,输入的长度是固定的
    • batch_max_steps(24000) == prod(noise_upsample_scales)(80) * prod(upsample_scales)(300, n_shift)

判别器

  1. HiFi GAN 判别器的能力很强

速度

  1. 为什么 Multi-Band Mel GAN 的预测会更快?因为上采样的倍数变为了原来的 1/4

FFT 在语音合成声码器上的应用

语音合成是一种将任意文本转换成语音的技术,目前在深度学习领域,语音合成主要分为 3 个模块:

  • 文本前端
  • 声学模型
  • 声码器

其中,文本前端模块将输入文本转换为音素序列或语言学特征;声学模型将音素序列或语言学特征转换为声学特征,在语音合成领域,常用的声学特征是 mel 频谱;声码器将声学特征转换为语音波形。

声码器的输入是频域特征 mel 频谱图,输出是对应的语音波形。

STFT 全称 Short-Time Fourier Transform,短时傅里叶变换,它是用滑动帧 FFT 生成频率与时间的 2D 矩阵,通常被称为频谱图(Spectrogram), 而人耳对于频率的敏感程度是非线性的,可以通过 mel 三角滤波器对频谱图处理,生成 mel 频谱图。

生成 mel 频谱图的计算离不开 fft 系列的算子,若模型的输入是 mel 频谱图,可以使用 librosa 等科学计算库进行计算再输入模型。然而,现有的大多数基于 GAN 的声码器模型,在计算 loss 时需要将生成器合成的音频及原始音频转换到频率域再做计算,这时需要用到短时傅里叶变换算子 stft,且由于 stft 算子出现在了模型图中,其需要参与到模型的前向和反向计算过程中,此时,则需要深度学习框架提供 stft 算子。

最新的 PaddleSpeech 语音合成模块的声码器,用到了 paddle 2.2.0 提供的 fft 系列算子 paddle.signal.stft

PaddleSpeech 模型库目前已经实现的基于 GAN 的声码器包括 Parallel WaveGANMulti Band MelGANHiFiGANStyle MelGAN,这些模型的 loss 中都包含基于 stft 算子的 loss,其中主要包含 Multi-resolution STFT lossMel-Spectrogram Loss

Multi-resolution STFT loss 公式如下所示:

Mel-Spectrogram Loss 公式如下所示:

其中 Φ 表示将音频转换为对应 mel 频谱的函数。

如上述公式所示,现在主流的基于 GAN 的声码器的 loss 设计需要用到 stft,在 Paddle 中尚未实现 fft 系列算子时,PaddleSpeech 模型库使用基于 Conv1D 算子的函数来模拟 stft 算子,然而经过计算,该模拟函数前向结果正确,反向梯度计算结果不正确,这导致了模型收敛效果不佳,听感略差于竞品。

Paddle 主框架中加入 fft 系列算子后,我们将语音合成声码器 loss 模块中的基于 Conv1Dstft 均替换为 paddle.signal.stft,在模型收敛效果和合成音频听感上,paddle.signal.stft 的效果明显优于基于 Conv1Dstft 实现。

Parallel WaveGAN 模型为例,我们复现了基于 Pytorch 和基于 PaddleParallel WaveGAN,并保持模型结构完全一致,在相同的实验环境下,基于 Paddle 的模型收敛速度比基于 Pytorch 的模型快 10.4%, 而基于 Conv1Dstft 实现的 Paddle 模型的收敛速度和收敛效果和收敛速度差于基于 Pytorch 的模型,更明显差于基于 Paddle 的模型,所以可以认为 paddle.signal.stft 算子大幅度提升了 Parallel WaveGAN 模型的效果。

image
P.S. 欢迎关注我们的 github repo PaddleSpeech, 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。

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

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

相关文章

Photon01_Photon Voice 实现远程语音聊天功能

不废话,直接上步骤! 第一步: 给预制体Player添加三个组件,参数设置如图所示: 第二步: 创建空物体Voice,给空物体添加两个组件,参数设置如图所示: 第三步: …

Android开发基于科大讯飞实现语音识别

简介 通过使用科大讯飞的API开发Android APP实现语音识别 下载相应SDK 访问https://www.xfyun.cn/?jumplogin进行注册,然后创建一个应用并进行相应SDK下载 添加相应的包 打开刚刚下载的SDK,找到libs,将两个jar包复制到Android工程里 …

手语翻译系统系列之使用旭日X3派实时识别播报手语

一、准备工作 硬件部分:旭日X3派,USB免驱摄像头,电源适配器,烧录Ubuntu系统的SD卡,USB扬声器,显示屏(或者VNC/SSH远程连接) 软件部分:Thonny IDE集成开发环境 首先&…

android 打字 语音,手机聊天神器不用手写打字 说话秒变文字 允许一点家乡口音 老年人爸妈必备语音输入法...

时代在进步,如今智能手机已风靡街头巷尾。不过老年人对于新生事物的接受能力较差,手机上网沟通交流成为他们“可望而不可及”的奢望,以往老年人对手机的使用仅局限于按键通话这么简单,是不太会用微信、QQ等沟通方式打字聊天的&…

AI读心术

近期,德克萨斯大学奥斯汀分校的神经科学家们展开了一场「AI」实验,利用人工智能聊天机器人ChatGPT,将大脑活动转化为文字信息。 参与实验的志愿者,在进行长达20小时的「训练」后,成功被「AI」识别出正在进行的活动。按…

chatgpt赋能python:Python反转句子——让你的程序搞定转化难题

Python反转句子——让你的程序搞定转化难题 Python作为一门优秀的编程语言,拥有强大的数据处理能力,常被用于数据清洗、数据分析、统计计算等领域。本文将介绍Python反转句子的实现方法,并讨论其在实际应用中的运用场景。 什么是Python反转…

chatgpt赋能python:Python提取名词:利用NLP技术进行文本分析的高效方法

Python提取名词:利用NLP技术进行文本分析的高效方法 当我们需要对大量文本数据进行分析时,提取其中的名词信息是一个很有用的技巧。 Python提供了各种工具和库来进行NLP自然语言处理,帮助我们快速地实现文本分析。 本文将讨论如何使用Python…

生成式人工智能时代:研究机构与工业机构的角色之争

来源:Illustration by IconScout Store from IconScout 作者:刘鹏飞 微软创始人比尔盖茨说人生中让他印象深刻的两次技术革命演示,一次是现在操作系统的先驱“图形用户界面”,另一个就是以ChatGPT为代表的生成式人工智能技术。 一…

chatgpt赋能python:Python有什么好玩的项目

Python 有什么好玩的项目 Python 是一种多用途的编程语言,被广泛应用于网站开发、数据分析、机器学习以及科学计算等领域。但是除了这些实用的场景,Python 也有很多有趣的项目。在这篇文章中,我将介绍几个有趣的 Python 项目,带你…

用 AI 生成漂亮小姐姐(一)——Stable Diffusion 小白搭建教程

最近 AIGC、ChatGPT 等话题持续发酵,热门程度不亚于之前的 “元宇宙”。抖音、小红书到处都是机器对话、AI 绘图的视频。我看见别人生成的漂亮小姐姐图片眼馋得不行,终于按捺不住自己的好奇心,也尝试一下搭建。本文只是简单记录一下搭建过程。 △ 别人生成的漂亮小姐姐 我使…

如何用 GPT-4 帮你写游戏(以24点游戏举例)

目录 给我一个24点游戏 游戏规则 GPT给的代码 ​改进 再改进 最近呢掀起了一阵GPT-4的热潮,很多人都想用GPT-4,这里呢我就打一个广告(嘿嘿),如果不知道国内如何使用GPT的,可以看看这个博客:G…

发送Email、接收Email

邮件软件称为MUA:Mail User Agent,意思是给用户服务的邮件代理; 邮件服务器则称为MTA:Mail Transfer Agent,意思是邮件中转的代理; 最终到达的邮件服务器称为MDA:Mail Delivery Agent&#xff0…

Android studio通过lame生成把pcm转成MP3的so库以及音频的录制和播放附源码

1.先新建C项目 2. 在cpp目录下创建目录map3lame(名字随便起) ,接下来要用到 3.下载lame 地址lame 最新版本是3.100,解压完成后如下图 把libmp3lame目录中的所有.c和.h文件(注意其他类型的文件和目录不需要)都复制到项目中新建的map3lame目录中&#xff…

香港金曲奖分析(1983-2017 by SIRMAN)

以前的金曲奖就是华语音乐的代表,特别是80、90年代,谭张争霸,四大天王等,虽然近来影响力已不如之前,但让我们来看看1983-2017的获奖名单。数据来源于百度百科“十大劲歌金曲颁奖典礼”,由于名单较多&#x…

Android中Pcm文件转换为Mp3

刚完成了一个pcm转成mp3的小工作,记录下自己解决这个问题的过程,以便以后可以参考。pcm转换mp3首选的就是lame这个开源框架,下载地址lame,下载完成后需要ndk编译lame。安卓ndk环境配置可以百度。下面记录下ndk编译lame的过程 首先…

NCM转MP3神奇的网页

由于毕业演出需要,下了QQ音乐上的一首需要会员的歌,发现是NCM格式,没有办法打开,于是在网上找方法,然后就发现了这个好方便的网页,直接线上转格式!赶紧记下来,以备下次用&#xff01…

使用Lame库实现wav、pcm转mp3

文章目录 前言 一、Lame库是什么? 二、使用步骤 0.创建native项目 1.下载Lame库 2.pcm转MP3 3.wav转MP3 4、native方法如下 三、注意 总结 前言 因为使用android录音后生成的文件是wav或者pcm格式,项目要求最后的文件需要是mp3格式,于…

Android集成LAME库,实现pcm转mp3

一、交叉编译LAME库 LAME是一种非常优秀的MP3编码引擎,在业界,转码成MP3格式的音频文件时,最常用的编码器就是LAME库。 1. 下载LAME库源码 https://sourceforge.net/projects/lame/files/lame/ 进入LAME官网下载LAME源码,我选择…

[opcv图像处理] C/C|++将图片转换为马赛克效果

这个程序将图片转换为马赛克效果。 算法原理:求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果。 完整代码如下: / // 程序名称:将图片转换为马赛克效果…

从入门到入土:Python实现爬取网易云歌词|评论生成词云图

写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除) Python实现爬取网易云歌词|评论生成词云图 免责声明…