在过去的一段时间里,Azure 神经网络文本转语音服务(Neural TTS)已经在声音质量方面取得了快速发展,实现了在句子级别媲美真人的水平(查看详情[1])。但是在实际应用中,语音合成除了单句合成,也经常应用于生成长文本的段落音频,比如朗读网页的长篇幅内容、制作有声书或者视频配音等。

来源丨Microsoft 认知服务

通常,TTS 语音合成是基于单个句子生成长段落音频的。也就是在每个句子合成后,将它们拼接成段落。基于句子级别的语音合成只考虑单个句子的信息,而不考虑该句子之前或之后的内容,即使在长格式上下文中也是如此。无论上下文如何变化,用这种方法生成当前句子的音频听起来都是一样的。众所周知,有声读物或发声朗读的网页内容等场景通常由许多带有上下文的段落组成。听众通常会期望在不同的上下文里合成的语音能够在音高、节奏和语调上有动态的变化,从而让句子间的起承转合更连贯。如果在建模的时候不考虑上下文信息,句子级别的合成语音可能会相对更单调,表现力也不够,以至于降低听众的沉浸感。

在本博客中,我们介绍了一项新的技术创新,该创新引入上下文信息来模拟段落或长篇内容朗读的 TTS 语音。这项新技术使用段落 MOS(平均意见得分)作为指标,显著提高了 AI 语音在合成长音频时的连贯性和表现力。借助这项新技术,我们推出了新声音 Roger 和 Steffan 的公共预览版。Roger 和 Steffan 是美式英语的长文本声音模型,它们可以自动识别上下文,帮助客户生成更具表现力和自然感的长格式语音内容。

Roger 和 Steffan:新的上下文语音模型

在语音合成的过程中,Roger 和 Steffan 能够理解段落内容并且考虑上下文信息。因此,它们可以根据上下文调整音高、节奏和语调等,并在朗读段落时根据需要插入自然停顿。

下面的样例展示了 Roger 和 Steffan 是如何富有表现力地朗读段落的,同时我们提供了几个使用单句模型合成的声音样例作为对比,你可以比较这些样例在句子内部和交叉句子中的停顿、语调、节奏等方面的差异。

脚本1:

A druid was a man of mystery and power, respected by all save the most arrogant churchmen and lords. "Why have we been brought here, druid? " Farrel asked. "No doubt we will learn that in time," Valin said. "But I sense our circle is not yet complete. Look, another joins us." With his short wooden wand he gestured down the hill, to where a maiden was stepping among the fallen stones. She wore a gown of white linen, loose and frayed.

脚本1-句子模型 (Guy)  音频
脚本1-上下文模型 (Roger)音频


脚本2:

He then gazed at every soldier on that trench giving each of them a nod. "Do and die boys, do and die!" The twenty-eight repeated the chant as the sound of the ghastly GEOMs began to resound. "Do and Die!" their voices drowning the GEOM swarm, taunting the monsters to finish them off.

脚本2-句子模型 (Tony)  音频
脚本2-上下文模型 (Steffan)音频

可以看出,通过整合上下文信息,长文本模型生成的语音在当前句内和句子间的连接处听起来更具表现力和连贯性,而对于有着丰富变化和高表现力的内容,从上下文模型合成的语音会更稳定和自然。


背后的技术

在本节中,我们将介绍长文本语音模型背后的技术,并分享我们如何将上下文信息集成到神经网络语音合成建模之中,包括如何构建基于文本的上下文编码器来用于段落级的音频生成,以及相关的测试方法及结果。

神经网络 TTS 建模引入上下文信息

考虑到不同的上下文,相同的句子在长文本中生成的语音韵律可能会有所不同。从这一概念出发,我们使用基于文本的上下文编码器从段落文本中提取出上下文信息,并将此信息引入到当前句音素建模当中,以缓解传统 TTS 中的一对多问题。要对篇章级上下文进行建模,需要篇章级数据,例如段落文本和语音数据。如图 1 所示,我们将当前句音素嵌入和基于文本的上下文信息整合在一起,随后通过相同的句子级建模过程来预测频谱,从而生成音频数据。


图 1.上下文语音模型的整体体系结构

基于文本的上下文编码器
如图 2 所示,我们使用两个分支分别提取音素级别和序列级别的语义语法信息。给定段落文本,使用字级别统计信息提取器来计算涵盖字、句子和段落之间相关性的语法信息。对于以预定义上下文范围为中心的每个句子,我们使用预训练模型来提取当前句子的 token-level 语义嵌入特征以及上下文 token-level 的嵌入特征。对于音素级信息提取分支,当前句 token-level 的嵌入特征和统计特征会首先上采样到音素级,然后通过音素级上下文编码器对音素级上下文嵌入进行编码。

图 2.基于文本的上下文编码器

对于序列级信息提取分支,上下文 token-level 嵌入特征先通过序列级上下文编码器进行池化并编码为上下文表征,从而该表征不仅包含当前句信息,还包含历史和未来信息。然后这两级上下文特征组合为最终的上下文信息。
质量优势
我们设计了 10 分制的段落级 MOS 测试用来评估所提出的上下文模型的语音质量。段落级 MOS 与传统的句子级 MOS 的区别主要表现在两个方面:1)被评估的音频数据是段落,而不是单个句子;2)要求测试人员不仅关注单个句子的语音质量,还要关注整个段落的效果,比如段内句子的连贯性。
在设计的段落级 MOS 测试中,我们为每个 TTS 系统(句子级模型和上下文模型)准备了 30 个段落样例,其中测试文本来自 10 段不同类型的小说文本(段落中包含旁白和对话),并提供了 7 段人声录音作为对照。20 位母语人士对给定的音频进行测听,并根据整体印象(整体印象的定义见下表)以及一些特定的指标,包括自然度、愉悦度、语音停顿、重音、语调、情感、风格匹配度以及语音收听费力程度等,给出 10 分制的分数。


段落 MOS 的指标定义

总体印象

考虑到句内和句子间的连接,您对阅读内容的总体印象如何?考虑声音是否清晰、自然、富有表现力、易于理解和令人愉悦。


段落 MOS 结果表明,上下文模型将段落 MOS 与真人录音的差距从-0.2(句子级模型)显著减小到 -0.06(上下文模型),段落MOS差距减少约 70%,在段落层面与真人水平非常接近。

以下是来自上下文模型 Roger 的合成语音和真人录音的样例对比,供您参考。


脚本

It was two stories high; showed no windows, nothing but a door on the lower story, and a blind forehead of a discolored wall, on the upper; the bore in every feature, the marks of prolonged and sordid negligence. The door, which was equipped with neither bell nor knocker, was blistered and distained. Tramps slouched in the recess and struck matches on the panels; children kept shop upon the steps; the schoolboy had tried his knife on the moldings; and for close on a generation no one had appeared to drive away these random visitors or to repair their ravages. Mr. Enfield and the lawyer were on the other side of the by-street; but when they came abreast at the entry, the former lifted up his cane and pointed. " Did you ever remark that door? " He asked; and when his companion had replied in the affirmative, " It is connected in my mind, " added he, " with a very odd story. " " Indeed? " Said Mr. Utterson, with a slight change of voice, " and what was that? "
上下文模型 (Roger) 音频
真人录音 音频


如何使用

支持上下文的美式英语新声音 Roger 和 Steffan 已经发布到 Azure 神经网络语音合成服务平台。用户可以从语音库[2]找到语音示例和示例代码。非开发人员也可以使用我们的有声内容生成工具[3]直接创建音频内容,而无需编写任何代码。建议在使用 Roger 或者 Steffan 生成音频内容时,提供长格式上下文(例如段落文本,而不是单个句子)作为文本输入。


更多信息

神经网络文本转语音(Neural TTS) 是 Azure 认知服务的一项强大的语音合成功能,它赋能用户将文本转换为逼真的语音,支持各种场景,包括语音助手、内容朗读、辅助功能等。Azure Neural TTS 已应用到许多微软官方旗舰产品中,例如Edge Read Aloud[4],Word Read Aloud[5],Outlook Read Aloud[6]等,也被包括AT&T,Duolingo[7],Progressive等在内的众多客户所青睐。到目前为止,Azure TTS 支持超过 140 种语言和方言,用户可以从400 多个音色[8]中选择适合自己试用场景的声音开箱即用,也可以通过我们的神经网络声音定制服务[9]来创建个性化的品牌声音。


[1]:https://www.microsoft.com/research/blog/azure-ai-milestone-new-neural-text-to-speech-models-more-closely-mirror-natural-speech/

[2]:https://speech.microsoft.com/portal/voicegallery

[3]:https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-audio-content-creation

[4]:https://www.youtube.com/watch?v=a9FN11y9qEQ

[5]:https://insider.office.com/blog/new-natural-sounding-voices-come-to-read-aloud

[6]:https://techcommunity.microsoft.com/t5/outlook-blog/play-my-emails-in-outlook-and-get-time-back-in-your-day/ba-p/930243

[7]:https://www.youtube.com/watch?v=m-3-D7S0piw

[8]:https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?tabs=speechtotext#text-to-speech

[9]:https://speech.microsoft.com/customvoice