拥有AI「变声术」,秒杀了多年苦练的模仿艺能
「免费学习 60+ 节公开课:投票页面,点击讲师头像」
作者 | Daniel Chen,爱奇艺资深研发工程师
出品 | AI科技大本营(ID:rgznai100)
【导读】什么是Voice Conversion(VC)?它有什么用?
概括来讲, VC可以将一个人的声音转换为另一个音色,但表述的内容没有改变。脑补了一下,这个技术可以给用户带来非常多有乐趣的体验。近日,在爱奇艺《语音和语言技术在自然交互中的实践》沙龙上,爱奇艺资深研发工程师 Daniel Chen 就为我们分享了关于 Voice Conversion 技术,以及 VC 在变声方面的探索与实践。
以下内容根据演讲实录整理:
Daniel Chen :今天主要的讲解分为三个部分,第一个部分介绍 VC 的基础,包括VC可以做什么及典型的应用场景;第二部分为大家介绍 VC 的进展,主要从平行语料和非平行语料这两个方面来叙述;第三部分是介绍爱奇艺后续在 VC 探索领域的方向。
VC 的目标是转化语音中的非语言信息,与此同时保留语音中的语言信息的技术。此处首先明确语言信息的概念,语言信息就是大家说话里面所包括的文本内容,非语言信息是除文本内容之外的信息,例如说话人的音色,说话的方式,说话的节奏等。这一技术主要是为了实现以下两个目标:首先把输入音频的音色变成指定目标人的音色,然后将说话方式改变成指定目标人的说法方式。
这一技术主要有以下应用场景,第一个是在医学上的应用,主要用来帮助丧失发言器官的人,这是因为医学界会进行舌头或是喉管等器官的切除手术,手术后病人说话的声音就不是很清晰,手术造成病人的发言器官不完善,发音不标准,所以需要设备为病人做声音的转换,让病人发音更清楚。第二个情况是希望通过应用这项技术给用户更多的娱乐可能,比如用户用更加搞笑的声音来拍小视频,这些声音我们可以利用某些特色的声音来做,从而让用户自己的视频更有趣,吸引大家的关注。
介绍VC的进展以VC主要的三种应用方式进行说明,而这三种方式都通过模型来实现。一种是one to one,也就是将一个人的音色转成另外一种方式,这是模型的限制所造成的。第二种是many to one,将很多人的声音转成特定人的声音。最后一种是many to many,任何人的声音都可以转成某一个指定人的声音,这一方式对模型上没有任何限制。
从VC的发展历史情况来说,研究方向最开始是从平行语料开展的。平行语料指语音内容里说的是相同的内容,比如A和B录的语音里面都有“我是中国人”这句话,非平行语料则是指语料A说的内容和B说的内容没有关系。从历史上来看,平行语料研究的时间比较早,其相对而言携带的信息更多,比较简单,但是平行语料有一个很大的问题——在实际应用中,我们不可能要求用户说这么多相同的内容,这不太现实,所以这方面的应用都需要做非平行语料。另外,还有一种分类是按照VC是否需要声码器来区分的。
平行语料最开始最简单的方法是按帧来转换,其原理是将原语音和目标语音通过某个函数直接转换。下面介绍一下其训练过程:在VC里面平行语料有一个问题,当A和B说了相同的一句话,但时长不一致时,我们在做转换的时候需要做一个对齐,所以我们首先要做特征提取,我们将得到的原语音的特征和目标语音的特征进行时间上的对齐,时间对齐比较经典的算法是DTW算法,将原语音中的某一帧和目标的帧对上了之后,再通过后面的算法得到一个模型。这一算法比较老,它采用按帧转换的方式。
后来,大家开始考虑序列转换,序列转换运用了帧与帧之间的关系。例如图中y1这一帧并不仅仅是和我的X1相关系,它同时和X2、X3、X4有一定关系。从原理上来说,训练特征会考虑其一阶、二阶特征,识别领域也用到这一思想,从而自然而言的把按帧转换变成按序列转换。具体到方法,其中最出名的就是最大释然度参数生成算法,其中用到X和Y两个参数,X指原始的参数,Y是目标参数,△yt是动态特征,其可能代表一阶、二阶特征,通过将静态特征和动态特征结合就可以把我们的预测出来的yt的特征做的更好。
最后介绍平行语料在神经网络方向的应用,基于神经网络上已有的attention机制,我们就可以通过神经网络来解决语料时间上长度不一致,对齐困难的问题,而不再需要借助DTW算法。如图所示,其同时借助了平行语料的文本特征,先输入一个梅尔特征和一个Bottleneck Features,其通过一个Encoder后,再通过音素的判别器来判断这一帧是什么音素,将他和目标特征用attention机制对齐,从而预测这一帧和输入帧的关系,这样可以保证对齐关系的准确性,最后转换之后的语音质量也非常高,优于DTW算法所达成的效果。
接下来介绍非平行语料,非平行语料比较经典的算法是PPG,其含义是音素的后验概率图。这是有关PPG的文章上的一个截图,下方内容指时间信息,即在这一秒钟说的内容,旁边是识别后的音素,颜色的深浅代表大致概率的高低。
PPG的大致训练流程如下:第一阶段相当于训练一个ASR,这是与说话人无关的一个ASR。得到这个ASR模型后,第二个阶段开始训练转换网络,这个转换网络比较简单,它用了一个比较深度的LSTM,输入ASR识别出来的PPG,目标就是梅尔参数。在PPG中,先把我们这个模型转化成对应的梅尔参数,梅尔参数再交由声码器去进行合成,比如原始文章中所用的STRAIGHT声码器。
从网络角度来看,这个网络通过ASR并在请求PPG的时候,把原说话人相关的信息去除了,再通过转换网络把目标说话人的信息加进来,我们可以认为这是一个类似TTS的方法。
这其实跟VAE有天然关系,在输入语音时,我们通过网络把它压缩成一个隐变量,在较优情况下我们的隐变量只包含说话内容,再把说话内容还原回语音,这时我们只需要加入特定人的说话信息,比如声纹,我们就可以还原出跟目标人是非常类似的目标语音,在这一过程中也没有损失说话方式以及韵律等信息。
以下呈现一个比较典型的VAE的系统,首先把原语音特征经过编码器变成隐变量,再加入说话人的特征,送入Decoder就还原成我们的语音。一般而言,VAE方法只需要关注重建的Loss即可,这一系统除此之外还把重建之后的语音又做了一个循环,送到VAE系统中再转换回去,这样就保证了Encoder部分转换出来的内容丢失的比较少。
第三个介绍的方法是Blow。这是今年的一篇新文章,其的网络特点是通过以下方式体现的,如果输入的X和隐变量Z可以经过一系列的可逆变换相互转换的话,如果在这些可逆变换中间加入了一些说话人的信息,那么就有可能达到VC的效果。如图所示在正向过程中, Y是说话人,flow流是前面提到的F1、F2、FK等变换,如果在F1、F2、FK可逆时,我们能够把输入语音通过一系列的正向流变成隐变量Z,那我们求到Z之后把它逆向传播回来,同时把Y换成目标人的说话信息,那么还原回来的X1'已经变成了目标说话人的语音,这是normalizing flow在VC中的一个应用例子。
在这个领域中, GAN可以用于平行语料和非平行语料的VC。有两篇比较知名的文章运用了用GAN来做VC,一个是CycleGAN,另一个是StarGAN。StarGAN在CycleGAN之后发表并引入了更多的条件,可以做多到多的变换。下面简单介绍一下CycleGAN的结构, GAN包含一个生成器、分类器,CycleGAN把真实的数据X通过一个生成器换成了Y,这是它的第一次的生成过程。另外,在整个机制中还需要再完成一次——将即生成的Y送入另外一个生成网络后,再还原回X,保证即生成的Y是能够还原X的,保证第一个生成器转换之后还包含的足够信息能够还原回X,从而起到环,即Cycle的作用,所以他叫CycleGAN,图中的(DX、DY)是分类器。
最后,为大家介绍未来爱奇艺在这一技术领域的探索。我们计划用非平行语料来尝试,从而尽可能降低对VC使用者的限制。但在做VC的时候,要尽可能保留原语音中丰富的韵律信息,这时我们发现正常说话时的转换效果还可以,但当我们在做清唱或者朗诵时效果就不理想,唱歌所转换出来的可能是正常说话,唱歌的方式并没有保留。
除此之外,我们要剔除各类噪声的干扰,我们尝试做了些数据增强的方法,旨在降低噪声干扰。
从功能上来说,VC跟TTS是存在区别的,一个是语音转语音,一个是文本转语音。目前,TTS也在探索更富表现力的合成方法,部分方法也使用参考音频作为输入,在一点上来看,VC和TTS又有着一些共同之处。
(*本文为AI科技大本营投稿文章,转载请微信联系1092722531)
◆
精彩推荐
◆
点击阅读原文,或扫描文首贴片二维码
所有CSDN 用户都可参与投票和抽奖活动
加入福利群,每周还有精选学习资料、技术图书等福利发送
推荐阅读
2019,不可错过的NLP“高光时刻”
4万程序员学了10万次的课程,今天,曝光背后的讲师!
机器学习模型五花八门不知道怎么选?这份指南告诉你
300多局点,数据接入量超过2TB/S,华为用AI优化数据中台 | BDTC 2019
“一百万行Python代码对任何人都足够了”
达摩院 2020 预测:感知智能的“天花板”和认知智能的“野望”
详解CPU几个重点基础知识
在以太坊上开发 Dapp 的瓶颈和门槛有哪些? | 博文精选
你点的每个“在看”,我都认真当成了AI
相关文章:
服务器架设笔记——编译Apache及其插件
之前一直从事Windows上的客户端软件开发,经常会处理和服务器交互相关的业务。由于希望成为一个全栈式的工程师,我对Linux上服务器相关的开发也越来越感兴趣。趁着年底自由的时间比较多,我可以对这块做些技术研究。虽然这些知识很基础也很老&a…

Silverlight 2中多语言支持实现(上)
引言 最近项目要在Silverlight 2应用程序中实现本地化,原以为这个过程非常简单,却没想到实现的时候一波三折,好在结果还算不错。需求是这样的,用户第一次访问的时候,默认为英文,当用户选择一种显示语言后&a…

解析大型.NET ERP系统 多国语言实现
实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字。.NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 分别做三个语言的资源文件,比如…

服务器架设笔记——Apache模块开发基础知识
通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API。虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统。(转载请指明出于breaksoftware的csd…
解密Elasticsearch技术,腾讯开源的万亿级分布式搜索分析引擎
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | johngqjiang,腾讯 TEG 云架构平台部研发工程师来源 | 腾讯技术工程(ID:Tencent_TEG)【导读】Elasticsearch(ES)作为开源首选…

Centos5上firefox的升级
Centos5上firefox的升级默认Centos5上firefox的版本是1.5当我们使用yum update firefox提示到的版本还是1.5 可是我们在使用1.5版本的firefox可能会有一些问题,比如打不开QQ空间接下来我们就将系统的firefox从rpm包的1.5版本升级到tar包的3.0首先删除1.5版本的fire…

cheat engine lua
function CEButton1Click(sender) local x getProperty(CETrainer.CEEdit1,"Text")--这句很重要,获取文本框的值 --writeInteger(0x42c0c0,readInteger(0x42c0c0)x)--设置0X42C0C0地址的值 setProperty(CETrainer.CEEdit2,"Text","0001000")--设…

服务器架设笔记——使用Apache插件解析简单请求
一般来说,对于一个请求,服务器都会对其进行解析,以确定请求的合法性以及行进的路径。于是本节将讲解如何获取请求的数据。(转载请指明出于breaksoftware的csdn博客) 我们使用《服务器架设笔记——编译Apache及其插件》…
如何用Python快速抓取Google搜索?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | linksc译者 | 弯月,编辑 | 郭芮来源 | CSDN(ID:CSDNnews)自从2011年 Google Web Search API 被弃用以来,我一直在寻找其他的方法来抓取G…

利用歌词插件 让WMP活起来
如果利用起这个歌词插件的话 是不是可以减少下载那么多播放器和每次更新的烦恼呢?因为WMP是系统自带的.可以下载的插件名称:Wa3 Music Engine 或者乐辞的歌词秀插件转载于:https://blog.51cto.com/david25/84211

Linux性能研究(总)
http://www.vpsee.com/2009/11/linux-system-performance-monitoring-introduction/ http://www.jb51.net/LINUXjishu/34607.html 公司有个测试服务器,上面跑了几个应用和一个DB。 DB被这个几个应用使用。 最近老是被挂掉。 CPU 使用率100%。 搞到最后大家都不能用。…
万字干货:如何从零开始构建企业级推荐系统?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者丨gongyouliu编辑丨zandy来源 | 大数据与人工智能(ID: ai-big-data)最近几个月有很多人咨询作者怎么从零开始搭建工业级推荐系统,有做音视频的、有做新闻资讯的、有…

Mocha BSM基础架构管理——灵活的网络拓扑展现
业务需求与挑战企业的网络拓扑结构与设备时常变化,人工往往难以维护网络拓扑。尤其对于上千台设备的大型网络来说情况更为复杂。当用户网络设备大量增加后,网络结构异常复杂,用户的网络拓扑很难在一个屏幕上展现或者很难找到要查阅的网络拓扑…
服务器架设笔记——打通MySQL和Apache
在《服务器架设笔记——使用Apache插件解析简单请求》一文中,我们已经可以获取请求内容。这只是万里长征的第一步。因为一般来说,客户端向服务器发起请求,服务器会有着复杂的业务处理逻辑。举个例子,大部分客户端软件都有日志模块…
【Maven】maven的安装配置和ecplise结合
2. Maven的安装和配置 2.1. 安装 进入Maven官网的下载页面:http://maven.apache.org/download.cgi,如下图所示: 选择当前最新版本:“apache-maven-3.0.4-bin.zip”,下载到本地,解压缩到本地磁盘D:下。 2…
2020年趋势一览:AutoML、联邦学习、云寡头时代的终结
作者 | Roberto Sannazzaro,Ben Longstaff译者 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】在 2020 年来临之际,新年前夕往往是人们回顾过去一年并展望来年的好时机。本文将深入探讨了关于 AI 的技术和非技术方面的趋势&am…
使用C++实现一套简单的状态机模型——实例
一般来说,“状态机”是一种表达状态转换变换逻辑的方法。曾经有人和我讨论过为什么不直接用ifelse,而要使用“状态机”去实现一些逻辑,认为使用“状态机”是一种炫技的表现。然而对于大型复杂逻辑的变化和跳转,使用ifelse将带来代…

net通过oledb 和ibm自带连接方式,连接db2数据库出错
第一种通过ibm方式连接 DataSet ds new DataSet(); OleDbConnection cn new OleDbConnection( "ProviderIBMDA400.1;Data Source192.168.21.10;User IDb4dd;" "Passwordb4dd;Default CollectionQIBMPP"); …

SAP QM 'QM System' 有什么控制作用?
SAP QM ‘QM System’ 有什么控制作用? QM system可以控制如下二点: 1>如果我方与Vendor的质量标准匹配,且相互认证,那么我方收货后不用检验,系统不产生检验批;如果我方与vendor的质量标准匹配&#x…

使用C++实现一套简单的状态机模型——原理解析
在上一文中,我们介绍了该状态机模型的使用方法。通过例子,我们发现可以使用该模型快速构建满足基本业务需求的状态机。本文我们将解析该模型的基础代码,以便大家可以根据自己状态机特点进行修改。(转载请指明出于breaksoftware的c…
干货:NIST评测(SRE19)获胜团队声纹识别技术分析 | CSDN博文精选
作者 | xjdier来源 | CSDN博文精选(*点击阅读原文,查看作者更多精彩文章)近日,NIST说话人识别技术评测 (Speaker Recognition Evaluation,SRE)正式公布榜单,芯片初创公司清微智能和清华大学等机构组成的联队…

网络系统传输负载测试
网络系统传输负载测试 随着企业各种信息系统相继投入使用,生产、管理信息逐步增加,企业网络规模迅速扩大,信息城域网承受着空前的压力,网络带宽严重不足,网络系统传输丢包、设备死机情况频频发生。我们需要对网络状况做…

android圆形旋转菜单,而对于移动转换功能支持
LZ该公司最近接手一个项目,需要写一个圆形旋转菜单,和菜单之间的移动换位支持,我本来以为这样的demo如若互联网是非常。想想你妈妈也帮不了我,空旋转,但它不能改变位置,所以LZ我们只能靠自己摸索。 最后LZ参…
微信9年:张小龙指明方向,微信AI全面开放NLP能力
作者 | 夕颜责编 | 王金许出品 | AI科技大本营(ID:rgznai100)一年一度的微信公开课 Pro 在广州保利世贸博览馆如期举行。一大早,同在博览馆举办的广州年货促展会参会者,夹杂着参加腾讯公开课的与会者,让这里变得人流攒…
实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现
在《使用WinHttp接口实现HTTP协议Get、Post和文件上传功能》一文中,我已经比较详细地讲解了如何使用WinHttp接口实现各种协议。在最近的代码梳理中,我觉得Post和文件上传模块可以得到简化,于是几乎重写了这两个功能的代码。因为Get、Post和文…

第一篇文章,做个纪念
第一篇文章,做个纪念,这个blog好吗?拭目以待!转载于:https://blog.51cto.com/197536/88241

Maven工程引入jar包(转)
Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add External Jars—>选中已事先下好的Jar包导入即可。 法二.通过pom.xml文件的Dependencies标…

实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现
之前我们已经详细介绍了WinHttp接口如何实现Http的相关功能。本文我将主要讲解如何使用libcurl库去实现相关功能。(转载请指明出于breaksoftware的csdn博客) libcurl在http://curl.haxx.se/libcurl/有详细的介绍,有兴趣的朋友可以去读下。本文…
32岁程序员,补偿N+2:“谢谢裁我,让我翻倍!” 网友:榜样!
2019年的冬天,“冷”的有些频繁。12月19日,《马蜂窝被曝裁员40% UGC模式变现难?》爆火,据悉马蜂窝将裁员40%,交易中心成了“重灾区”,赔偿N2,留下的除搜索推荐、内容中心等核心部门外࿰…

山有木兮木有枝,心悦君兮君不知
《越人歌》今夕何夕兮,搴舟中流。 今日何日兮,得与王子同舟 蒙羞被好兮,不訾诟耻 心几烦而不绝兮,得知王子 山有木兮木有枝,心悦君兮君不知。本是《夜宴》中的,"山有木兮木有枝,心悦君兮君…