当前位置: 首页 > news >正文

学习笔记:基于GMM的语音转换

基于高斯混合模型的语音转换(Voice conversion based on Gassian mixture model)

任务:
把说话人A的声音转换成说话人B的声音,保持语义信息不变。
实验部分:男女声转换

概述

语音合成任务:

  • 语音转换(Voice Conversion, VC)
  • 文语转换(Text to Speech, TTS)
  • 语音生成(Voice Generation, VG)

今天主要学习语音转换VC任务。

语音转换

将语音经过预处理特征分析提取,然后特征配准,再训练一个转换模型,得到映射关系。
在这里插入图片描述

特征提取

红框部分,就是声码器的工作,分解信号,合成信号。
1.常用声码器:World,STRAIGHT, Griffin-Lim(具体原理搜我博客)
2. 如这次用到的STRAIGHT,将信号分解为三部分:
---- F0基频(浊音):反映声音语调,声音的整体调域。
---- 频谱(梅尔倒谱):主要特征,反映声音中的细节,大部分语义信息,说话人信息。
----非周期特征(清音):反映声音中非周期变化。

特征对齐

最常用的就是动态时间规则DWT算法(具体原理搜我博客)。

为了解决原语音与目标语音不等长问题,DWT算法根据相似性,建立了对应关系,形成源+目标特征对。

在这里插入图片描述

转换模型

基于GMM的特征映射
任务: 已知联合分布,求解条件分布。
原理: 假设原始语音x,目标语音y都是高斯的,所以联合起来也是高斯的。利用若干个高斯如m个,来拟合信号的分布。训练一个GMM模型,就能得到联合分布的均值,方差,就可以求条件分布。
在这里插入图片描述

具体来看y是如何求解的?
条件概率的求解
在这里插入图片描述
第一部分:已知输入信号x,该x属于每一个高斯成分m=1~M的概率。
在这里插入图片描述
第二部分:在这个第m个高斯下,已知x,能产生出y的概率。
在这里插入图片描述

其中,E和D都有闭式解:
在这里插入图片描述

这样,就能求解y:
在这里插入图片描述
可以看到,一个xt算一个yt,就是最小均方误差求解。这种转换算法效果差点,是因为没有考虑帧间信息。

转换模型改进

针对GMM转换存在问题,2007年Toda等人提出了改进方法。

在这里插入图片描述
主要改进了三部分:
1.引入动态成分
2.将最小均方误差估计,改为最大似然估计。评估一组数据,而不是单一一帧,充分考虑序列整体性。
3.引入全局方差(GV,Global Variance)。使最终转换结果与目标分布更加接近。

具体算法:
1.此时,x不再是一帧一帧,而是一组帧,T帧,y也是。
在这里插入图片描述
2.引入相邻帧之间的差值(动态成分):
在这里插入图片描述

Y和y之间关系为:Y=W*y
在这里插入图片描述

3.从而得到序列X和Y,还有联合特征的数据:
在这里插入图片描述

4.用最大似然估计求解:
在这里插入图片描述
要让上面式子值最大。
每部分含义和上面的类似。
第一部分:已知输入X的第t帧,该Xt属于每一个高斯成分m=1~M的概率。
在这里插入图片描述

第二部分:在这个第m个高斯下,已知X,能产生出Y的概率。
在这里插入图片描述

推导可得,当E和D等于如下值时,似然值最大:
在这里插入图片描述

为了计算简便,对似然函数进行了化简:
定了哪个m,只取概率最大的那个m。
在这里插入图片描述

最终解:
将Y=W*y代入,得:
在这里插入图片描述
这样就实现了序列级别的转换。

代码实现

用机器学习中常用的库函数sklearn。

import sklearn.mixture
from sklearn.mixture.gaussian.mixuture import _compute_precious_cholesky

在这里插入图片描述

E的具体函数如下:
在这里插入图片描述
D的函数,还有转换函数:
在这里插入图片描述

全局方差的实现:
对转换后的特征方差分布,进行调整,使其符合目标特征的方差分布。

在这里插入图片描述

算法实现

下面介绍具体的GMM语音转换。
1.数据准备:如男女声声音文件各70条。
2.特征提取:F0,mcep,AP, npow(反映每帧能量,为了去静音帧)
3. 统计信息:F0均值方差(单高斯转换),主要转mcep
4. 特征配对:DWT
5. 训GMM:训mcep特征对
6. 特征修正:计算训练数据转换后的特征的方差的均值

在这里插入图片描述

代码:GMM语音转换

相关文章:

  • Git基本应用<二>:Git的分支管理
  • 电商系统中的掉单问题
  • CONV1D卷积神经网络运算过程(举例:n行3列➡n行6列)
  • 数据结构c语言版第二版(严蔚敏)第一章练习
  • python练习Ⅱ--函数
  • 3D多模态成像市场现状及未来发展趋势分析
  • vscode 1.71变化与关注点(多配置预设/旧合并器回归等)
  • SQL面试题之区间合并问题
  • Linux用户和权限之一
  • 回溯法就是学不会2 —— 括号生成问题
  • ESP32 ESP-IDF TFT-LCD(ST7735 128x160) LVGL演示
  • 信息论学习笔记(二):离散无噪声系统
  • CentOS7启动SSH服务报错
  • 大咖说*计算讲谈社|商用车智能驾驶商业化实践
  • python笔记Ⅶ--函数返回值、作用域与命名空间、递归
  • #Java异常处理
  • Angular 响应式表单 基础例子
  • CAP 一致性协议及应用解析
  • Git初体验
  • Koa2 之文件上传下载
  • Leetcode 27 Remove Element
  • Spark RDD学习: aggregate函数
  • 二维平面内的碰撞检测【一】
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于webpack 的 vue 多页架构
  • 详解移动APP与web APP的区别
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • #HarmonyOS:基础语法
  • $$$$GB2312-80区位编码表$$$$
  • (007)XHTML文档之标题——h1~h6
  • (1)(1.13) SiK无线电高级配置(六)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (windows2012共享文件夹和防火墙设置
  • (阿里云万网)-域名注册购买实名流程
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (转)甲方乙方——赵民谈找工作
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (状压dp)uva 10817 Headmaster's Headache
  • .java 9 找不到符号_java找不到符号
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET delegate 委托 、 Event 事件
  • .NET Micro Framework初体验(二)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • [ 蓝桥杯Web真题 ]-布局切换
  • [Angularjs]ng-select和ng-options
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [IE编程] 如何编程清除IE缓存
  • [IE技巧] 如何让IE 启动的时候不加载任何插件
  • [ITIL学习笔记]之事件管理(2)
  • [java进阶]——方法引用改写Lambda表达式
  • [JDBC-1] JDBC Base Template