从创建神经声音到成功完成PoC

自定义神经语音 (自定义神经语音,CNV) 是基于Azure认知服务的语音功能,可用于创建高度逼真的类人语音和实现文本输入至语音的转换。借助该功能,我们可实现个性化客户体验或通过自定义角色提升品牌形象,并同时以多种语言实现本地化与可及性。这些还仅仅是开始,作为一项令人惊异的技术成就,其将来的应用前景不可限量。

本文旨在记录微软技术客户团队完成某个概念验证 (PoC)项目的一些经验。该项目的目标是CNV,客户是一家大型媒体内容提供商。具体内容上,本文不会从技术上深入探讨自定义神经语音模型及其在功能上的独特性与无限潜能,而是分享从业者角度创建神经声音并成功完成概念验证的过程。

另一个背景是,文中提到的客户非常希望获得适应各种用例且高度逼真的类人语音。其中一个具体的用途是在各种活动期间模仿人声发布赞助公告。通常情况下,需要招募配音员在活动之前录好宣传语。为此需要起草具体的脚本,招募配音员需前往专业工作室进行录制,最后才能按计划在活动上播放。就实操而言,这样一个过程可能需要花费数周的时间!然而,如能用人声创造合成声音,相关制作周期可大幅缩短,周转也会加快很多,这一点让客户非常感兴趣。PoC的结果非常明确,神经语音可以成为降本提效的有效举措,并且它也有助于维持品牌的认知度。

认识自定义神经语音(专业版)

CNV 提供的自定义神经语音精简版功能可以让任何人用20-50个训练样本快速完成功能测试,所需时间不超过20分钟!该功能非常优异,可以让用户把握流程和相关需求的细节差异。然而,客户总会希望更充分地利用CNV,并因此你会想要创建和部署自己的专业语音。为何会如此?简而言之,精简版与专业版的语音质量有显着的差异,因为专业版的语音需要更长的训练时间(20分钟vs.近一天)和训练样本量。更重要的是,从学习的角度来看,能创建自己的专业语音会很有成就感,有助于建立对相关技术的信心。对于专业版用户来说,接下来要做的应该就是部署,其中又可以用到更多的工具和定制选项。 
以下是一些使用步骤和要点:

▍了解专业语音的审批流程和Responsible AI的要求

第一个关键步骤就是填写表格,从而确保您的预期用例能得到核准。就概念验证而言,这一步似乎有点多余,但这里的关键在于要认识到所涉及功能的巨大潜能。想象一下,如能通过概念验证过程创建一个知名人物的神经声音,别有用心的人就可能利用它做出虚假或误导性声明。想到这些,大家也许能理解,为何一定要明确定义用例,并且Microsoft和客户双方都一定要确保相关流程是合理且公开的。使用CNV的人一定要有责任心,您也一定要从自己做起,充分思考和明确自己的使用目的。此外,认知服务的有限访问功能也非常重要。

▍定义角色、选择脚本和安排时间

  • 角色
    一开始我曾非常厌烦“角色定义”,但后来我才意识到,这个步骤能为语音培训打下非常重要的基础。角色可以被看作一种主观描述,以及任意两种语音之间的相对分类。在后期,角色会成为分析与评估语音的重要依据。不同于阅读脚本与录制声音,在实际对话中,即使是“通用对话语音”也可能存在很难明确或充分认识的微妙差异。
  • 脚本
    Microsoft以多种语言提供一系列基础性的通用、聊天和客户服务脚本。然而,如希望获得适用于特定场景的特定角色,最好能有针对性地设计相应的脚本,这样能提供更好的训练数据,实现符合特定结果且更真实的模型。请注意,虽然产品文档就训练脚本数量提供了指南(至少 +300 到 +2k),您录制的内容量还是要略高于预期的最大值,因为在上传时系统可能会过滤掉质量较差的输入(导致总数减少)。
  • 时间安排
    根据我的经验,超过300个脚本的工作量至少要花费 2-3个小时。除录制(大多不超过10秒)以外,这些时间还要用于标记、文件移动和编写脚本等操作任务,以及在上传Speech Studio 之前自动执行一些格式转换任务。

    ▍克服困难维持角色的一致性

    这一点有时很难把握,但正因为如此我对配音员的工作有了全新的认知!在进行最早的20-30%录音时,维持角色特性并不困难,但继续坚持下去会越来越难。因为人会出现“录音疲劳”并希望赶快结束,这时说话就总会不那么自然,导致声音效果偏离角色设定。这一点很重要,因为录音质量会影响训练质量。输入低于标准的话,最终得到的模型也不会好。除非您有意追求某种角色的声音,否则在最终评估可能会忽略角色一致性。如果只是想录自己的声音,您可以不在意这一点,但要意识到最终结果会受影响。由于这些原因,配音员才会在工作室中,在老师和其他人支持下,花费大量时间进行练习,以此来确保更高质量的录音输入。

    ▍利用脚本和辅助功能自动处理准备任务

    就模型的加载、训练和部署而言,产品团队创建的自定义神经语音平台能够提供非常出色的低代码体验,但在实际加载和训练数据之前我们仍有许多准备工作需要完成。这些任务根据具体情况会有些差异。根据我的经验,在没有配备专业工具套件的专业工作室的情况下,编写几个Python 脚本会非常有益于推动工作流程。这些脚本可用于重命名文件、将MP4转换为 WAV、压缩文件以及自动将音频文件与正确的脚本配对。点击此处可访问存储库并查看其中的一些脚本示例。

    ▍基于后期处理 Studio录音室的反馈来改进训练样本

    在繁重的文件准备工作完成后,录音室接下来的使用步骤会非常简单直接。除明确的提示以外,录音室在使用上的另一个主要亮点是在成功上传处理数据后可提供分析综述(见下图)。除发音、信噪比 (SNR) 和脚本持续时间分析以外,该综述还提供了一些重要的警告和指导,可帮助大家提升脚本多样性并由此获得更好的模型。举例来说,我的脚本就经常出现“感叹词不足”的问题。虽然这些小问题不会影响流程的推进,解决它们有助于从细节上提升最终模型的质量。通过下图可知,导入的317条话语中只有 313 条符合条件,加载的语音长度为22 分钟左右。因此,根据具体录制软件和训练方法,大家可能需要录制超过目标数量的话语,请务必考虑到这一点。 

图片

▍默认语句和部署

默认语句和部署。模型处理完毕后,我们可以使用约100个默认语句来试听和评估准确度。系统预选的是一系列与训练样本不同的语句。在试听时,有些模型的表现可能会让大家惊叹,但更重要的是通过更多的直观感受来了解改进的方向。这一步完成后,大家就可以用CNV门户部署模型了,即打开一个REST端点并选择一个可访问它的编程语言。我们也可以使用音频内容创作自定义音频输出。作为低代码环境,该工具可用于输入文本、保存或导出输出内容以及调整语调和发音等。

帮助客户认识自定义神经语音

在了解了CNV 专业语音的工作流程(第一次总是最难的)后,大家会更有信心指导客户完成整个过程。根据客户的具体情况,可能需要考虑到其他变量,包括请配音员前往专业录音棚进行录音,明确所需技术支持与指导,以及根据双方数据准备情况确定支持的力度。在理想情况下,客户无需太多监督即可自行管理脚本生成、录制过程以及相关调度、格式化等其他任务。然而,鉴于所涉用例/流程相对较新颖,给予更多支持还是需要的。

相关更多经验总结如下:

▍如前所述,要确保客户了解与专业配音员合作的审核流程

如前所述,这个关键步骤的作用是让客户能了解和遵行Responsible AI准则。另外,就专业配音员而言,同样重要的是让客户了解配音人才相关披露的重要性,包括促成用例实现的经验与方法。

▍强烈建议使用专业配音员

配音员们都经过专门的培训,可以基于特定角色和用例实现特定的声音表现(包括发音和语调)。他们可能为了更好地表现剧本和角色而一次进行数小时的录制。对于CNV 而言,这样的表现是角色特定训练的关键。在向客户介绍时,让项目团队成员之一直接进行录音演示会更方便快捷。尽管我们最终聘请了专业的配音员,但事后我们还是发现了前述方法的优势。大多数人没有接受过专业培训,一旦感到疲劳就会想要尽快结束工作,并由此导致录音质量的持续下降。这种情况可能会导致训练样本的质量下降,最终获得的声音听起来可能不像预期的那样自然。因为相对于不停重复的脚本阅读,正常对话时人的精力会更充沛,也不会有太多停顿和重音等。专业的配音员会认识到这一点,并会更加专注地处理每个剧本。此外,随着越来越多的配音员选择远程工作,在家中建立专业的演播室,出现了一个意想不到的好处就是现在我们可以拆分录制过程,无需再连续录制很长时间。

▍在首批录音时一定要寻求指导和支持

在最初的录音环节,我们的产品团队安排了专业的音响工程师为配音员提供反馈和指导。传统的录音工作也存在类似的反馈机制,即由多个听众/导师向配音员提供实时的反馈。这样达到反馈有助于配音员更好地把握角色特点、脚本流程和一些操作要点,使其能够更快地进入状态。另外,我们还坚持要求配音员记录每个脚本或每条话语的独立音频样本。根据产品文档,这里的一个话语段应大致等同于一个句子。这个要求很重要,原因是录音在完成时通常会被合并入单个的音频文件,但在CNV模型训练阶段又需要将其分开。

▍尽可能针对用例进行训练

尽管深度学习在持续快速发展,专门针对预期用例在指导下进行训练仍然有其优势。尽管可用于多种用例的语音在通用性上有一定优势,但要想提高CNV 模型的质量,我们就需要更好的训练数据,而非“任何听起来不错的声音”。客户往往会记录第一次训练过程的时间和费用,并在权衡后想要更通用的模型。但是,为获得最佳的结果,在保持输入多样性的同时,我们应尽可能提升训练的针对性,这样才能体现语音在自然环境中的使用特征。在本文所述实例中,我们已经确认了角色定义,只是特定陈述的要求不是非常严格,因此我们选择将客户脚本与 Microsoft 存储库中提供的通用和聊天记录相结合。值得注意的是,产品团队正在积极开发的一项功能是允许CNV 模型在无需任何额外训练数据的情况下实现多种话语风格和表达不同的情绪。在某种程度上,这个功能可增强语音结果的多样性和实用性,因为无需专门针对对应情绪或风格再进行训练。

▍建模加载前的数据准备要点

完成高质量录音(参考下方的上传数据分析图)后,下一步就是确保录音与配对的正确匹配和适当标准化。该步骤的几个要点包括:

图片

  • 确保录音有最高采样率
    所示实例可以选择16位和 24 位录制数据。我们选择了后者,因为对CNV来说,这个位数越高越好(因此不推荐使用16KHz)。
  • 将录音与正确的脚本配对
    在正规录制场景中,配音员要专注于为脚本配音,而其他人负责管理实际录制和后台任务,确保脚本与音频是匹配的。在本文所述实例中,我们要求配音员在专业的家庭工作室中完成录制,所有后台任务则由我们负责。结果,我们最终获得的音频文件有不同的标记,很难将它们与原始脚本配对,并且无法保证原始信息得到了准确呈现。此外,这些文件中还包括重复和空白文件以及修改部分重读的重录文件。在准备600多条脚本的情况下,我们最终获得的录音超过了750条,为过滤掉无效的文件,我们需要注意以下几点:

    • 正确匹配音频文件与脚本

    由于无法按照原始脚本顺序处理,并且音频文件的标记不同,我们通过Speech Service的批量转录服务处理了音频文件。超过750 条录音在 10 分钟内被处理完毕,且输出的文本形式有多种。其中,最接近指导标准的是词汇格式,包括数字、特殊字符等都得到了清晰的展现。有关批量转录触发代码的更多详情请参见此处。

    • 使用脚本语言自动执行数据清理和格式化

    这两项操作需要一定程度的自动化:

  • 数据清理
    包括删除空音频文件(例如在上述批量转录后没有词汇或显示值的文件)、清除重复文件/脚本以及根据句点或问号计数识别多句脚本。有关更多详情请参考此处的代码。
  • 标准化
    这个过程一定程度上可通过脚本自动执行,但很多标准化作业仍然需要人工干预,包括将“BTW”改为“by the way”,将“ABC”等首字母缩略词改为“A B C”,数字大写(“1”改为“one”),特殊字符(“%”改为“percent”)等。就标准化而言,选择词汇转录会有一定优势。

    ▍借助跨语言模型推动面向新市场的个性化定制

    跨语言模型(仍处于预览阶段)支付基于主语言(在本例中为英语)触发其他语言的自定义神经模型。这个功能很受欢迎,因为通过它可以在保持角色定义的同时实现多语言声音。与主要的英语模型相比,其他语言模型的训练时间更短,方便客户将既有品牌扩展到非英语市场。跨语言模型的一大创新是支持同时输入英语和外语,并同时识别两种语言!而且,在使用英语时甚至可以带有外国口音!

    揭晓结果……合成语音的评估

    关于合成语音,有一点自相矛盾的是,它的创建涉及到严谨的深度学习技术,但判断它的好坏却还是要依赖人的主观感受。不论如何,最终的目标始终是让客户确信创建的语音适用于预期目的。以下是有助于指导评估过程的几个要素:  

    ▍训练样本数

    在客户场景下,我们使用650多个涉及各种语句结构的独立录音样本完成了训练。最终得到的语音质量不错,尽管因角色设定(贴近播音员的语言风格)的原因,长句的发音听起来还是有一些不自然。按照产品文档的说明,在专业录音环境下的专业语音训练最多可用到2,000 个不同的样本。在达到特定上限之前,更多的数据总是有助于改善语音的质量。

    ▍针对特定用例进行训练

    创建合成声音的一个关键就是特异性。在很多情况下,客户可能只想体验一下技术和/或需要更通用的语音来适应更广泛的使用场景。在后一种情况下,预设的Azure语音更加适用,因为这些语音没有特定的角色设定,只需听起来自然即可。然而,如能根据预期用例训练更多的语音,获得更好结果的可能性就越高。反过来说,在针对特定目的或用例进行训练后,所获语音的通用性也是很难评估的。

    ▍一定要在整个录音过程中维持角色一致性

    如前所述,反馈、指导和录音一致性都非常重要。因此,把录制过程分为多天完成并尽量早地获得反馈有助于降低录音工作的疲劳感和提升输入的质量。相对应的是,每个团队总需要在录音棚中花费大量时间才能获得听起来“恰到好处”的脚本。我们一定要重视这些过程,但获得一次成功的经验将有助于减少过程中的冗余步骤。

    ▍是否真实要基于环境判断

    语音的评估要考虑其使用环境,包括其中是否有大量噪音或其他乐声,又或因一些干扰一定要特别提醒才能让普通人有可能分辨“合成的”语音。后一点有可能是确定人声“真实性”的一个关键。鉴于PoC的局限性,我们没有机会在真实环境中进行测试,在评估时需要考虑到这一点。

    ▍通过模拟“图灵测试”定量指导评估过程

    作为内部练习过程之一,我们邀请三名参与者对10个录音样本进行连续两轮评级,并基于打分判断其是否是真的人声。我们把这个过程称为模拟“图灵测试”,其结果很有意思。如下表所示,区分人声和神经语音的标准并非始终不变。某些短语、某些单词发音方式、单词之间的停顿、背景噪音等因素的变化都可能导致评估标准发生变化。这里要注意的是,邀请多人参与评估有助于消除个人的偏见,让评估意见更具有普适性。下表结果的评估范围也包括Microsoft 客户团队创建的CNV 专业版语音(非客户的CNV 语音)。该语音的训练使用的是最低数量的独立输入(300个)、次优的录音环境(参见第一张图表所示SNR)和非专业的配音员。尽管有这么多不利条件,就下表结果而言,最终获得的神经声音还是有足够可信的变化程度。

图片

下列结果的有三类解释—即“准确”、“像人声,但实际是合成声”和“像合成声,但实际是人声”。每个参与者被要求判断每个录音样本是真人还是合成声音。每个正确的判断会被计入“准确”类,每个错误的判断会被计入后两类中的一类。每位参与者每一轮的总得分应等于100%。

image.png

你可能感兴趣的:(从创建神经声音到成功完成PoC)