乐趣区

关于音频:Any-to-Any-实时变声的实现与落地丨RTC-Dev-Meetup

前言

「语音解决」是实时互动畛域中十分重要的一个场景,在「RTC Dev Meetup 丨语音解决在实时互动畛域的技术实际和利用」流动中,来自声网、微软和数美的技术专家,围绕该话题进行了相干分享。

本文基于声网音频体验算法专家冯建元在流动中分享内容整顿。关注公众号「声网开发者」,回复关键词「DM0428」即可下载流动相干 PPT 材料。

01 基于传统音效的实时变声算法的窘境

1、变声扭转的是什么

■图 1

要通过发音来辨认一个人,有很多维度须要思考。

首先,每个人的发音腔体各有不同,口腔的张合以及喉部的声带触动,都可能有个体声学方面的区别,这导致因为每个人的发音有不同的音色,在此基础上使用语言进行表白,就可能产生不同的韵律;其次,每个人所处的房间不同,也可能会伴有不同的混响,对辨认造成影响;此外,有时通过变声唱歌,可能还须要乐器配合以及一些乐理常识。

而且,咱们在感知声音的时候,也会受心理影响,同一个声音,有的人可能会感觉有磁性,但有些人可能会感觉比拟毛糙。心理感知依据个人经历的不同,也会有些区别。

2、人为什么会有不同的音色

那么在实时场景下,如何实时变动声音呢?当韵律较长时,尽管咱们无奈扭转遣词造句,但能够扭转发音腔体的音色,因为它对实时性的要求比拟高。

举例来说,比方“明天是几号”这样一句话,能够把这些字拆成一些音素,比方“今”能够拆成“J”和“in”这两个音素,它是一个清音,能够由声带触动发出声音,此时每个人的音色区别比拟大;而“是”是一个浊音,通过唇齿的气流模式实现,对于这个字来说,每个人的音色区别比拟小。这是为什么呢?

■图 2

实质上来说,声带的触动频率决定了发音的音调高下。不同的人通过不同的声带触动频率发同样一个音,其音色在清音上会有很大的不同。比方下面的例子,“明天几号”这几个字,不同的人发音可能会有比拟大的区别,而“是”这个字可能区别就比拟小。

传统的变身算法也是从这个角度来思考,不同的人有不同的基频,依据声带振动频率不同,能够调整基频的散布。不同的基频会有不同的谐波,谐波就是基频的倍数。这样就能够通过变调形式来扭转声音。

■图 3

在发不同的音时,嘴巴的开合水平决定了发音腔体的共振状况,开合水平的不同会导致不同频响的加强或减弱,如果和口腔的共振频率达到同一频率,频段就会被加强,不同则会被减弱。这就是共振峰的原理。从清音的角度来说,声带触动产生基频,基频会有相应的谐波,谐波在不同频率的散布由腔体的开合来决定。这样,扭转基频和频响的散布就能够对音色有所调整。

3、基于传统音效的变声

传统算法其实就是通过不同的效果器对不同的发音维度进行调整,图 4 所示为传统算法罕用的效果器,比方变调,当初变调的算法大部分都是通过 pitch shifting 把基频和谐波向上或者向下扩大。在这种状况下,shift 操作会同时扭转共振峰,使声音都依据频谱的能量向上或者向下挪动,从而扭转人的基频发声。

女生的基频比拟高,而男生的基频比拟低,通过这个办法就能够使两者的基频方向统一。然而男女发音时的口腔开合也会随字的变动而变动,仅仅扭转基频不能做到完满的声音转变。比方电影《神偷奶爸》,其中的小黄人说的是西班牙语,因为基频进步它变成了小孩子的声音,然而这并不天然,还须要均衡器进行调节。

后面的例子在变调的时候只扭转了基频,其实共振峰和频响能够通过均衡器或者共振峰滤波器来进行调整,这些也是调整音色的要害模块。另外,通过美声训练的人在唱歌或者谈话的时候,高频音较多,发音比拟丰满,从这个角度来说,能够通过激励器对其谐波进行加强。

■图 4

传统算法大部分都是通过效果器的串联链路,从不同的维度对声音进行扭转。罕用的效果器软件包含 MorphVOX PRO 或者 voicemod,它们有不同的效果器,通过调整参数就能够产生不同的人物特色。抉择音效其实就是不同效果器的叠加,每个人谈话的声音最初变声进去也都是不一样的,因为根底地位就不一样,所以很难把所有人的声音都变成一样的,然而能够做方向性的调整。

我应用 MorphVOX 软件进行了男变女或者女变男的跨性别变动,在男声变女声的时候,应用默认的选项进行调整就有变成了小黄人的感觉。如果使女声变成男声,发现声音听下来有点憨,像鼻音比拟重的状况。呈现这种状况是因为女声变成男声的时候须要降调,使整个频谱往下进行压缩,这样很多高频信息就失落了。

可见,传统的效果器都有各自的缺点,导致变动不那么精确。要想得到比拟好听的声音,传统的链路形式都须要手动扭转参数,无奈做到精准的音色变换,而如果仅应用预设值进行调整,音色变换的成果并不现实。另外,每个人的声音想变成另外一个指定的人是一件很难的事件,可能只有业余的调音师能力做到。

02 ASR+TTS=VC?基于 AI 的实时变声可能性摸索

1、ASR

传统变声有很多局限性,那么基于 AI 的形式是否改善实时的变声成果呢?咱们晓得,ASR 技术能够实现语音转文字的性能,其实在进行变声的时候,也须要对语义信息进行保留,只进行整体的调整可能呈现漏字或者表白意义存在谬误的状况。

如图 5 所示,当初有很多的辨认框架,比方 hybrid(框架)的 Kaldi 等,这种框架会通过声学模型、发音词典以及语言模型等对声音转换进行综合的断定,要同时满足发音正确和语言正当两个条件。

■图 5

从这个角度来说,它是一个解释性比拟强的链路,同时也便于搭建,因为有很多现成的发音词典、语言模型能够应用。它也存在肯定的毛病,就是解码过程比较复杂,这种框架蕴含多个模型,如果其中一个呈现问题,那么在辨认的时候就会呈现偏差。

针对这一问题呈现了很多端到端语音辨认框架,比方 Espnet,其准确率从通用模型的角度来说,在数据短缺的状况下,能做到比 hybrid 更好的辨认成果。而且其训练流程也比较简单,不像 hybrid 框架,须要训练声学模型、语言模型,而后进行解码。这种框架只须要语音和文本数据配对,而后间接进行端到端训练就能够了。然而它的毛病也很显著,因为要进行端到端的训练,所以其要求更高,须要更大的训练集以及更精确的标注。另外,不同的场景可能须要定制,所要求的数据更多,如果是端到端的模型,则可能没有较好的语料进行训练。

目前从变声的角度来说,其实不肯定要辨认文本,只有精确辨认音素即可,这是与 ASR 模型的区别。

2、TTS

ASR 能够辨认发音,那么同样一个音,由不同的人收回,就须要用到 TTS。对于这一点,也有很多现成的框架能够应用,过程无非是把 ASR 提取到的文本进行归一化解决,而后进行频谱预测,再通过声码器生成声音,如图 6 所示。谷歌的 Tacontron、微软的 Fastspeech 都对这一性能进行了实际,可能以较低的提早合成语音。对于图 6 的链路来说,Fastspeech 也能够间接跳过声码器局部间接生成语音,也就是说,间接从文本到语音就能够做到这一部分的 end to end 的生成。这样,联合 ASR 加 TTS 的模式,就能够实现变声。

■图 6

TTS 中的声码器技术其实曾经比拟成熟,它所做的工作其实就是,从一个压缩的频谱信息预测语音,图 7 展现了不同声码器的 mushra scores,它能够了解为发音转化的天然度,作为转换是否天然的评判。

咱们能够看到,像 wnet 或者 wRNN 这种基于主点生成的声码器,在语音合成上曾经获得了比拟好的成果,可能和真人的声音从天然度上来说没有太大的区别。另外,Hifi-GAN 或者 Mel-GAN 在实时性比拟好的状况下,也可能达到相似 WaveRNN 的成果。声码器技术倒退到当初,曾经达到了较好的语音生成成果,成为变声效果器的前提。

■图 7

3、VC

通过 ASR+TTS 的串联形式实现声音转换的根本步骤如图 8 所示,Speaker A 说一段话,而后通过 ASR 提取跟谈话人无关的文字或音素信息,再利用 TTS 技术转换成 Speaker B 的音色进行还原,以实现变声。

■图 8

对于这条链路,如果声音只能由一个人变成另外一个人,就是 One-to-one 的模式。而 ASR 其实跟谈话人是无关的,如果是这样的状况,就能够做到 Any-to-one。也就是说,ASR 模型无论 Speaker 是谁,都能辨认出精确的文字,使所有人都变成 Speaker B。而变声的终极目标是变成 Any-to-any 的模式,就是说一个模型能够把任何人的声音变成任意一种声音,进行变声能力的扩大。

咱们晓得,很多端到端的模型,像 CycleGAN、StarGAN 或者 VAEGAN 等,能够实现在无限汇合中进行声音变换,使训练集中的人可能在 group 中相互转换,但这也是其设计的局限性所在,如果可能切换 TTS 的音色,就可能解决声音的可定制性,使其变成任何一个人的声音。可见,ASR + TTS 等于 VC 的实践实际上是能够实现的。

如果想变成 Any-to-any 的模式,须要一个快捷的形式,不能每增加一个人,就对整个模型从新进行训练。这就须要借鉴可迁徙学习的思维。图 9 展现的是基于迁徙学习的语音生成形式。

■图 9

迁徙学习的思维就是,通过 speaker encoder 模块对指标音色进行 embedding 操作,以提取音色的特色,而后把特色放到语音生成模块 synthesizer 中,这样就能够进行不同音色的语音生成。这其实是谷歌之前的发现,他们将 speaker encoder 模块退出 TTS 中,就能够实现不同的音色变动,当增加新的 ID,也就是说话人时,只须要辨认谈话人的一段一分钟或几十秒的语料,就能够提取 speaker 的特色,生成相应的音色。这种思维其实就是迁徙学习的办法。

当初有很多不同的 speaker encoding 办法,比方 I-vector、X-vector、谷歌的 GE2E(generalized end to end)这种次要偏差 loss 设计的模型,以及中文(比拟好)的 Deep Speaker、韩文(比拟好)的 RawNet 等。因而,咱们就能够把它拆开来,除了 ASR 和 TTS,再退出这个 speaker encoder 模块来进行调整,实现目标谈话人的音色,做到 Any-to-any 了。

03 实时变声零碎的算法实现

1、实时变声零碎的算法框架

接下来看一看实时变声零碎是怎么实现的,如图 10 所示,将指标谈话人的小段语料退出声纹识别(speaker encoding 局部),获取声纹特色,同时通过语音辨认模块提取音素特色。而后在频谱转换模块,进行频谱特色的生成,再通过声码器失去语音。

■图 10

其实整个过程存在 offline 和 online 的区别,声纹识别模块能够通过 offline training 实现。这里的次要难点在于:

①实时变声要思考算力以及实时性。就算力而言,语音辨认、频谱转换和声码器,即便采纳目前业内最快的算法,其算力也都在 GFLOPS 量级,如果是在手机上部署,很可能无奈去实现,然而在服务器上能够实现。

②就实时性而言,在实时的沟通过程中,如果变声破费了很长的提早,则可能会导致沟通时须要很长的工夫进行反馈,在 RTC 环境下这种状况呈现的频率较多。这就要求端到端的提早尽可能小,一般来说不能超过 1 秒,如果超过 1 秒,会感觉到变声有显著的提早效应。当然,端到端的提早还包含编解码、采集播放等链路上的提早,最终,整个算法的提早就不能高于 400 毫秒。

③要做到 Any-to-any 的变声,则变声成果是否稳固、错字率是否足够低也是很有挑战的方向。语音辨认的错字率在 5% 左右就曾经是比拟好的成果了,如果心愿错字率更低,则可能须要更大的模型或者更有针对性的场景。另外,音色的类似度取决于声纹识别模块是否能精确地提取音色,这也是一个微小的挑战。

2、实时变声零碎

其实不同的语音辨认框架、声纹识别框架以及声码器框架能够自在地进行组合,造成一套残缺的变声零碎。然而为了将算法提早降到 400 毫秒,可能思考更多的是声纹零碎的部署。如图 11 所示的例子,在部署实时变声零碎的时候,咱们会思考到底是在云端进行变声,还是在端侧实现,这两套链路其实是有各自的优缺点。首先看在云端上进行变声的优缺点。

■图 11

如果在云端做变声,则须要在本地进行 speaker 的音频采集,而后通过 APM 声音解决模块去除降噪、回声等。接下来进行语音的编解码,语音通过编码之后会传输到服务器进行变声。这部分因为受到网络的影响,可能须要引入 NetEQ 模块进行抗弱网,进行解码后再变声。变声之后的音频还须要进行编码再传到 listener 端,listener 也会引入 NetEQ 模块进行抗弱网,而后解码和播放。

这种模式比端侧实现变声减少了 NetEQ 和服务器上编解码的过程,如果是在没有弱网的状况下,它管制的提早可能减少 30~40 毫秒。然而如果是在有弱网的状况下,为了抗丢包,提早可能就会达到 100 毫秒或者 200 毫秒,甚至更高。

云端变声的长处非常明显,就是在服务器上变声的算力要求比拟低,在部署的时候,能够用更好的声码器、ASR 或者频谱转换通过算力来晋升音质。如果是从端侧来思考,则能够把变声放到发送端,因为接收端可能不止一个,只有在发送端做一次变声就能够,这样就省掉了 NetEQ 和 Codec 在服务器上进行的转换,其余链路上的提早跟云端部署是一样的。如果从这个角度来思考,端到端的形式即便没有变声,它在个别状况下能够做到 400 毫秒左右的提早,加上算法 400 毫秒的提早,端侧变声的提早将小于 800 毫秒,可能在很大水平上升高实时传输过程中的提早耗费,使沟通更加顺畅。

端侧变声还受到算力的影响。后面提到,端侧的效率在 GFLOPS 量级,比方 iPhone X 或者是更新的版本中有 GPU 解决芯片,这种状况在端上也是能够实现实时计算的,然而模型算力还是不能太大。

04 Demo 展现与利用场景

■图 12

接下来介绍通过后面提到的链路进行变声的 Demo 的成果,以及它的利用场景。Demo 是一段男女的对话。在虚构社交中,其实收回的声音与人物自身不肯定是合乎的,比方女生想用男生的形象表白,如果声音没有扭转,则可能跟男生的形象不符,产生性别的错位。通过 Demo 变声前后的比照能够发现,为了解决这个问题,能够采纳变声成果实现人物和发音的对应。另外,方才的对话也没有因为变声而受到打断。

1、实时变声的利用场景

那么变声会在什么样的场景下应用呢?其实变声无论是在元语聊这种 MetaChat 场景,还是传统的直播语聊中,都有用武之地。比方在聊天的时候,可能须要对虚构形象进行定制,包含更换形象或声音等,以晋升沉迷感。如果你是萌妹的形象,然而应用浑厚的声音,可能很快就会被人辨认进去。又比方在游戏中,如果你能用指标人物的声音,则会有更多的代入感。

另外,当初还呈现了很多虚构数字人的场景,很多明星都会通过给本人定制虚构的形象进行直播,不须要本人进入直播间,其他人通过后盾的模仿就能够常态化的 24 小时的直播。语聊房场景的代表就是线上剧本杀,使用者在进行角色演绎的时候,会有不同的场景代入,也就须要不同的声线切换,通过变声就能够实现。

2、更好的实时变声成果

就目前的实时变身成果来说,还有很多的方向能够进行优化。这里举几个例子,大家能够探讨。首先,后面提到,为了保障实时性,只是通过扭转谈话人音色这一维度进行了调整,其实通过谈话人的抑扬顿挫或者发音情感的表白还能够晋升辨认的相似性。因而,在满足实时性要求的状况下,能够进行更多的摸索,将表白的特色更多地放到变声效果器中。

其次,就声码器来说,须要更小的算力以及更好的成果。其实当初的声码器,从天然度来说,曾经可能有比拟好的体现,然而对于逐点生成的声码器而言,在算力上仍有很大的挑战。因而算力和成果须要失去平衡,并在平衡的根底上取得更加适合的声码器。

另外,更为鲁棒的音素提取模块也是目前困扰 ASR 语音辨认的一大难题。在噪声或者简单场景下,除了人声之外还有别的声音,这会影响语音辨认的成果。对于这种状况,能够引入降噪模块提取人声,也能够通过研发对噪声更鲁棒的音素提取模块,使其在噪声中辨认出人声。咱们在沟通的时候,不论是 ASR 还是变声,还可能会遇到多语种的问题,比方中文两头夹带英文,甚至援用日文等,在这种状况下,就会存在多语种辨认的问题,也就是 code-switch,针对这一问题目前还没有完满的解决方案,是今后能够晋升的方向。

最初,硬件决定了可能部署的模型的下限可能简单到怎么的水平。如果在端上有更好的硬件进行部署,就能够在升高端到端提早的同时实现更好的变声成果。这也是将来须要关注的一个方向。

05 问答环节

1、对于实时变声有什么办法能够无效升高提早?

咱们在做实时变声,尤其是在还须要互动的时候,首先,最好是在云端上进行部署,这样能够升高在服务器进行传输和抗弱网的时候带来的提早。其次,在做算法的同时,比方进行实时的流式 ASR 会有 lookahead,就比如说咱们往后要多看几帧,才可能保障它的识别性准确性。对于这部分,无论是 ASR、TTS 还是频谱转换,都须要管制 lookahead 的 量,让它可能在保障实时性的同时,不至于对成果产生过大的影响。从实际上来说,可能把整体的算法提早管制到 400 毫秒以内,具体分到每个模块,预计在 100 毫秒左右。

2、Any-to-any 变声的性能在哪里能够体验?集体能够应用吗?

这部分还在打磨阶段,然而咱们曾经有 demo 能够体验了。最近几个月内会公布 demo 供大家体验。

3、小白如果想系统化学习音频,有比拟好的学习资源或者学习门路举荐吗?

我之前跟极客工夫单干了“搞定音频技术”的栏目。我发现说其实音频这个畛域可能的确有点小众,但它波及的畛域却又十分多。大家能够在网上找一些资源系统化地学习,除了音频自身,其实还包含音频的 3A 解决(音频链路解决)、声学和基于 AI 的技术。

能够先从这几个角度寻找相干的材料,相互交融学习,成果会比拟好。

拓展浏览:如何基于实时声纹变声实现对声音的“克隆”

流动预报

「RTC Dev Meetup – 杭州站」,咱们将聚焦大前端技术,邀请来自 声网、蚂蚁团体和海康威视 的技术专家,为咱们分享大前端时代在实时互动畛域的业务架构和跨端实际。

心动不如口头,赶快点击 此处 报名吧!

退出移动版