[文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
[文献阅读]:An Emotion Speech Synthesis Method Based on VITS 在VITS基础上通过参考音频机制,获取情感信息,从而实现的情感TTS方式。
摘要
VITS是一种基于变分自编码器(VAE)和对抗神经网络(GAN)的高质量语音生成模型。但合成语音的控制特征(仅文字)单调;加上包括情感在内的特征表达不足,导致情感语音合成成为一项具有挑战性的任务。
本文提出了一种基于高表现力语音合成模块VITS的emo -VITS系统来实现文本到语音合成的情感控制。设计了情感网络,提取参考音频的全局和局部特征,然后通过基于注意机制的情感特征融合模块将全局和局部特征融合,从而实现更准确、更全面的情感语音合成。
实验结果表明,与无情感网络相比,emo -VITS系统的错误率略有上升,但不影响语义理解。但是,这个系统在自然度、音质、情感相似度等方面都优于其他网络。
VITS
VITS是一种高性能的语音合成模型,它结合了变分推理增强、归一化流和对抗训练过程。VITS采用变分自动编码器(Variational AutoEncoder, VAE),将归一化流应用于条件先验分布和波形域上的对抗式训练,以提高语音波形的质量。通过将TTS系统的两个模块与潜在变量连接起来,实现了完整的端到端学习,与目前的两阶段模型相比,可以产生更自然的声音音频。通过对隐变量进行随机建模,并使用随机时长预测器,提高了合成语音的多样性。同样的文本输入可以合成不同音调和韵律的语音。
先验编码器由两部分组成,文本编码器和归一化流fθ。文本编码器是一个Transformer编码器。归一化流可以提高先验分布的变化范围,从而提高最终的语音合成效果。
后验编码器使用了Glow-TTS中使用的非因果WaveNet残差块。解码器是一种改进的HIFI-GAN发生器,它由多个具有多接受场融合(MRF)的反置卷积组成。随机持续时间预测器根据条件输入估计音素持续时间的分布。鉴别器采用对抗性训练的方法,通过子鉴别器将一维序列重构为二维平面,并进行二维卷积运算来判断样本的真
实概率,从而实现了鉴别器的功能。
Emo-VITS
为了合成高自然度、兼顾不同信息粒度的情感语音,作者将情感网络引入到VITS中,提出了Emo-VITS系统。与其他声学模型相比,VITS具有非常高的合成自然度。Emo-VITS模型继承了VITS的高性能,并在此基础上进行了情感网络的设计,包括情感编码器网络和情感特征融合模块。情感网络的目标是从参考音频中提取不同感受野的情感特征,基于注意机制进行整合,并将其发送给VITS模块。
情感特征提取模块以Wav2Vec2.0为基础。使用Wav2Vec2.0进行特征提取,使用全局情感特征提取器和局部情感特征提取器进行不同粒度的特征提取,使用情感特征融合进行特征融合。
在训练阶段,使用作为原始音频的训练音频作为情感参考音频,提取全局和局部情感特征。将两个特征向量进行特征融合后,作为情感嵌入和文本嵌入加入到文本编码器中。
在推理阶段,根据给定的参考音频获得情感嵌入,并合成情感语音。
情感编码模块
全局情绪编码器网络通过一个具有ReLU激活的线性层处wav2vec 2.0的输出特征。然后,通过单层LSTM,进一步改进。最后,由MaskAvg模块经过一定步长后将特征序列聚合成均值向量表示,形成192维全局情感特征嵌入。
与全局情感编码器网络不同,局部情感编码器网络需要保留Wav2vec 2.0中特征提取的时间信息。具体来说,首先通过线性层改变wav2vec2.0的输出特征,然后使用平均池化对表示进行平滑处理。在扩展Kernel感知场的同时,有效地保留了局部显著特征。局部情感特征包含时间维度,因此最终提取的局部情感特征和全局情感特征将通过广播机制进行匹配和融合。
Wav2vec 2.0提取参考音频文件的情感特征向量,分别通过局部情感编码器和全局情感编码器生成相应的特征向量,然后进入下面的情感特征融合模块。
情感特征融合模块的目的是融合全局和局部情感特征,方便将情感特征引入到文本编码器中,特征融合的计算公式如下:
式中,X和Y分别为全局和局部情感特征向量。α为向量X和Y通过特征融合网络得到的新特征权重,其大小在0 ~ 1之间。它是X和Y的和,分别是全局关注模块和局部关注模块的输出和,然后用Sigmoid得到结果。
在训练过程中,将局部情感嵌入和全局情感嵌入相加,得到一个新的向量,然后分别进入局部注意力模块和全局注意力模块。局部注意模块首先经过卷积层,然后经过Batch Normolization层、Relu层,最后经过一个卷积层。全局注意模块比局部注意模块多了一个全局平均池化层,从而提取全局显著特征。两个模块得到的结果之和可以通过一个sigmoid激活函数得到,得到两部分特征重新分配的权重,然后进行特征重新加权求和。两部分网络将在训练中确定各自的网络权值。在预测过程中,可以选择单个参考音频的局部和全局情感特征。我们还使用不同的参考音频提供局部和全局情感特征,以获得更立体的效果。
结果
从表中可以看出,在声学模型VITS中加入情感网络后,WER增加,但增加幅度是可以接受的。
可以看出,在五种情绪的分类测试下,本文模型最终可以达到61%的情绪合成准确率。也就是说,在一半以上的音频被用作参考音频后,输出音频仍然保留了原有的情感特征,在情感分类中被归为同一类别。有趣的是,本文的模型对Angry和Happy的准确率很高,但对Sad合成的准确率却不高。我们认为这可能是因为Sad作为参考音频情绪时,其合成的音频因为声音起伏明显而被区分为Fear类,导致准确率下降。至于LSA-A模型,似乎Happy和surprise的合成效果都不太好。
总结
Emo-VITS是基于vits的情感语音合成模型,中充分利用了VITS结构。通过设计情感编码器网络,分别提取参考音频的全局情感特征嵌入和局部情感特征嵌入,利用情感编码器网络更好地表达参考音频中的情感因素。
。通过设计情感编码器网络,分别提取参考音频的全局情感特征嵌入和局部情感特征嵌入,利用情感编码器网络更好地表达参考音频中的情感因素。
在未来根据具体应用场景,可以继续改进情感特征提取和融合的方法。
相关文章:

[文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
[文献阅读]:An Emotion Speech Synthesis Method Based on VITS 在VITS基础上通过参考音频机制,获取情感信息,从而实现的情感TTS方式。 摘要 VITS是一种基于变分自编码器(VAE)和对抗神经网络(GAN…...
网络协议通俗易懂详解指南
目录 1. 什么是网络协议? 1.1 协议的本质 1.2 为什么需要协议? 1.3 协议分层的概念 2. TCP协议详解 - 可靠的信使 📦 2.1 TCP是什么? 2.2 TCP的核心特性 🔗 面向连接 🛡️ 可靠传输 📊 流量控制 2.3 TCP三次握手 - 建立连接 2.4 TCP四次挥手 - 断开连接…...

OpenCV-Python Tutorial : A Candy from Official Main Page(持续更新)
OpenCV-Python 是计算机视觉领域最流行的开源库之一,它结合了 OpenCV (Open Source Computer Vision Library) 的 C 高性能实现和 Python 的简洁易用特性,为开发者提供了强大的图像和视频处理能力。具有以下优势: 典型应用领域: …...

【Vue】指令补充+样式绑定+计算属性+侦听器
【指令补充】 【指令修饰符】 指令修饰符可以让指令的 功能更强大,书写更便捷 分类: 1.按键修饰符(侦测当前点击的是哪个按键) 2.事件修饰符(简化程序对于阻止冒泡, 一些标签的默认默认行为的操作&…...
.Net Framework 4/C# 泛型的使用、迭代器和分部类
一、泛型的使用 泛型是用于处理算法、数据结构的一种编程方法。泛型的目标是采用广泛适用和可交互性的形式来表示算法和数据结构,以便它们能够直接用于软件构造。 泛型简单理解就是,在声明时暂时不固定其类型,例如 int 类型、double 类型等,在调用泛型时,再将要用的类型补…...

LLM 笔记:Speculative Decoding 投机采样
1 基本介绍 投机采样(Speculative Sampling)是一种并行预测多个可能输出,然后快速验证并采纳正确部分的加速策略 在不牺牲输出质量的前提下,减少语言模型生成 token 所需的时间 传统的语言模型生成是 串行 的 必须生成一个&…...

当SAP系统内计划订单转换为生产订单时发生了什么?
【SAP系统研究】 #SAP #计划订单 #生产订单 #采购申请 一、关于计划订单的一点疑惑 曾经对SAP为什么会有计划订单,是感到很疑惑的。 这个界面简单,配置点也不多,能被随意“摆布”,一旦要变形就消失得无影无踪的计划订单,why? 但是,再次重新审视过之后,才发现它其实…...

PDF转PPT转换方法总结
你是否遇到过这些场景? 收到客户发来的产品手册PDF,明天就要用它做演示; 公司历史资料只有PDF版,领导突然要求更新为幻灯片。 这时PDF转PPT工具就成了救命稻草。接下来,介绍三种PDF转PPT工具。 1. iLoveOFD在线转换…...

3D Web轻量化引擎HOOPS Communicator的定制化能力全面解析
HOOPS Communicator 是Tech Soft 3D推出的高性能Web工程图形引擎。它通过功能丰富的JavaScript API,帮助开发团队在浏览器中快速添加2D/3D CAD模型的查看与交互功能。该引擎专为工程应用优化,支持大规模模型的流畅浏览、复杂装配的智能导航、流式加载和服…...

【力扣链表篇】19.删除链表的倒数第N个节点
题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]…...
.Net Framework 4/C# 集合和索引器
一、ArrayList 类(集合) ArrayList 类位于 System.Collections 命名空间下,它可以动态地添加和删除元素。 ArrayList 提供了3个构造器,通过这3个构造器可以有3种声明方式: 默认构造器,将会以默认ÿ…...

如何使用Jmeter进行压力测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…...

Grafana-ECharts应用讲解(玫瑰图示例)
工具: MySQL 数据库 MySQL Workbench 数据库管理工具(方便编辑数据) Grafana v11.5.2 Business Charts 6.6(原 Echarts插件) 安装 安装 MySQL社区版安装 MySQL Workbench安装 Grafana在 Grafana 插件中搜索 Business Charts 进行安装以上安装步骤网上教程很多,自行搜…...
洛谷P1591阶乘数码
P1591 阶乘数码 题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10),表示数据组数。接下来 t t t 行,每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式…...

前端vue3 上传/导入文件 调用接口
点击按钮导入: <el-uploadaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15":auto-upload"false":on-change"handleFileChange":show-file-list"false"><el-button type"warning"…...
概述侧边导航的作用与价值
侧边导航的作用与价值:介绍侧边导航的核心优势和用户体验提升点。设计原则:使用表格对比说明侧边导航的三大设计准则。基础实现方法:分步骤讲解静态侧边导航的实现技术。高级交互实现:提供滑动式侧边栏的完整交互解决方案。优化技…...

Python训练营-Day22-Titanic - Machine Learning from Disaster
Description linkkeyboard_arrow_up 👋🛳️ Ahoy, welcome to Kaggle! You’re in the right place. This is the legendary Titanic ML competition – the best, first challenge for you to dive into ML competitions and familiarize yourself w…...

FreeCAD:开源世界的三维建模利器
FreeCAD 开发模式 FreeCAD的开发采用多语言协作模式,其核心框架与高性能模块主要使用C构建,而用户界面与扩展功能则通过Python脚本实现灵活定制。具体来说: C核心层:作为基础架构,C负责实现与Open CASCADE Technology…...
指针的定义与使用
1.指针的定义和使用 int point1(){//定义指针int a 10;//指针定义语法: 数据类型 * 指针变量名int * p;cout << "sizeof (int(*)) --> " << sizeof(p) << endl;//让指针记录变量a的地址 & 取址符p &a ;cout << &qu…...

嵌入式里的时间魔法:RTC 与 BKP 深度拆解
文章目录 RTC实时时钟与BKPUnix时间戳UTC/GMT时间戳转换时间戳转换BKP简介BKP基本结构1. 电池供电模块(VBAT 输入)2. 侵入检测模块(TAMPER 输入)3. 时钟输出模块(RTC 输出)4. 内部寄存器组 RTC简介RTC时钟源…...
Java项目中常用的中间件及其高频问题避坑
Java项目中常用的中间件及其高频问题避坑如下: 一、常用中间件分类及作用 1. 消息队列中间件 作用:解耦系统、异步通信、削峰填谷。代表产品: Kafka:高吞吐量流处理,适合日志收集、实时分析。RocketMQ:金融级可靠性,支持事务消…...

图卷积网络:从理论到实践
图卷积网络(Graph Convolutional Networks, GCNs)彻底改变了基于图的机器学习领域,使得深度学习能够应用于非欧几里得结构,如社交网络、引文网络和分子结构。本文将解释GCN的直观理解、数学原理,并提供代码片段帮助您理…...

ES 学习总结一 基础内容
ElasticSearch学习 一、 初识ES1、 认识与安装2、 倒排索引2.1 正向索引2.2 倒排索引 3、 基本概念3.1 文档和字段3.2 索引和倒排 4 、 IK分词器 二、 操作1、 mapping 映射属性2、 索引库增删改查3、 文档的增删改查3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.5 批处…...

Maven 构建缓存与离线模式
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...

基于51单片机的光强控制LED灯亮灭
目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能: (1)按下按键K后光敏电阻进行光照检测,LCD1602显示光照强度值; (2)光照值小于15时,上面2个LE…...

【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
文章目录 Linux软件包管理器 - yumLinux下的三种安装方式什么是软件包认识Yum与RPMyum常用指令更新软件安装与卸载查找与搜索清理缓存与重建元数据 yum源更新1. 备份现有的 yum 源配置2. 下载新的 repo 文件3. 清理并重建缓存 Linux编辑器 - vim启动vimVim 的三种主要模式常用操…...
gopool 源码分析
gopool gopool是字节跳动开源节流的gopkg包中协程池的一个实现。 关键结构 协程池: type pool struct {// The name of the poolname string// capacity of the pool, the maximum number of goroutines that are actually working// 协程池的最大容量cap int32…...

【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
前言: SHAP(SHapley Additive explanations) 是一种基于博弈论的可解释工具。 现在很多高分的 论文里面都会带这种基于SHAP 分析的图,用于评估机器学习模型中特征对预测结果的贡献度. pip install -i https://pypi.tuna.tsinghua.edu.cn/sim…...

ModuleNotFoundError No module named ‘torch_geometric‘未找到
ModuleNotFoundError: No module named torch_geometric’未找到 试了很多方法,都没成功,安装torch对应版本的torch_geometric都不行, 后来发现是pip被设置了环境变量,所有pip文件都给安装在了一个文件夹了 排查建议 1. 检查 p…...
iOS 门店营收表格功能的实现
iOS 门店营收表格功能实现方案 核心功能需求 数据展示:表格形式展示门店/日期维度的营收数据排序功能:支持按营收金额、增长率等排序筛选功能:按日期范围/门店/区域筛选交互操作:点击查看详情、数据刷新数据可视化:关…...