点击上方蓝字
关注我们
(本文阅读时间:12分钟)
自定义神经语音 (自定义神经语音,CNV) 是基于Azure认知服务的语音功能,可用于创建高度逼真的类人语音和实现文本输入至语音的转换。借助该功能,我们可实现个性化客户体验或通过自定义角色提升品牌形象,并同时以多种语言实现本地化与可及性。这些还仅仅是开始,作为一项令人惊异的技术成就,其将来的应用前景不可限量。
本文旨在记录微软技术客户团队完成某个概念验证 (PoC)项目的一些经验。该项目的目标是CNV,客户是一家大型媒体内容提供商。具体内容上,本文不会从技术上深入探讨自定义神经语音模型及其在功能上的独特性与无限潜能,而是分享从业者角度创建神经声音并成功完成概念验证的过程。
另一个背景是,文中提到的客户非常希望获得适应各种用例且高度逼真的类人语音。其中一个具体的用途是在各种活动期间模仿人声发布赞助公告。通常情况下,需要招募配音员在活动之前录好宣传语。为此需要起草具体的脚本,招募配音员需前往专业工作室进行录制,最后才能按计划在活动上播放。就实操而言,这样一个过程可能需要花费数周的时间!然而,如能用人声创造合成声音,相关制作周期可大幅缩短,周转也会加快很多,这一点让客户非常感兴趣。PoC的结果非常明确,神经语音可以成为降本提效的有效举措,并且它也有助于维持品牌的认知度。
认识自定义神经语音(专业版)
以下是一些使用步骤和要点:
▍了解专业语音的审批流程和Responsible AI的要求
▍定义角色、选择脚本和安排时间
一开始我曾非常厌烦“角色定义”,但后来我才意识到,这个步骤能为语音培训打下非常重要的基础。角色可以被看作一种主观描述,以及任意两种语音之间的相对分类。在后期,角色会成为分析与评估语音的重要依据。不同于阅读脚本与录制声音,在实际对话中,即使是“通用对话语音”也可能存在很难明确或充分认识的微妙差异。
脚本
Microsoft以多种语言提供一系列基础性的通用、聊天和客户服务脚本。然而,如希望获得适用于特定场景的特定角色,最好能有针对性地设计相应的脚本,这样能提供更好的训练数据,实现符合特定结果且更真实的模型。请注意,虽然产品文档就训练脚本数量提供了指南(至少 +300 到 +2k),您录制的内容量还是要略高于预期的最大值,因为在上传时系统可能会过滤掉质量较差的输入(导致总数减少)。
时间安排
▍克服困难维持角色的一致性
这一点有时很难把握,但正因为如此我对配音员的工作有了全新的认知!在进行最早的20-30%录音时,维持角色特性并不困难,但继续坚持下去会越来越难。因为人会出现“录音疲劳”并希望赶快结束,这时说话就总会不那么自然,导致声音效果偏离角色设定。这一点很重要,因为录音质量会影响训练质量。输入低于标准的话,最终得到的模型也不会好。除非您有意追求某种角色的声音,否则在最终评估可能会忽略角色一致性。如果只是想录自己的声音,您可以不在意这一点,但要意识到最终结果会受影响。由于这些原因,配音员才会在工作室中,在老师和其他人支持下,花费大量时间进行练习,以此来确保更高质量的录音输入。
▍利用脚本和辅助功能自动处理准备任务
就模型的加载、训练和部署而言,产品团队创建的自定义神经语音平台能够提供非常出色的低代码体验,但在实际加载和训练数据之前我们仍有许多准备工作需要完成。这些任务根据具体情况会有些差异。根据我的经验,在没有配备专业工具套件的专业工作室的情况下,编写几个Python 脚本会非常有益于推动工作流程。这些脚本可用于重命名文件、将MP4转换为 WAV、压缩文件以及自动将音频文件与正确的脚本配对。点击此处可访问存储库并查看其中的一些脚本示例。
▍基于后期处理 Studio录音室的反馈来改进训练样本
▍默认语句和部署
▍如前所述,要确保客户了解与专业配音员合作的审核流程
如前所述,这个关键步骤的作用是让客户能了解和遵行Responsible AI准则。另外,就专业配音员而言,同样重要的是让客户了解配音人才相关披露的重要性,包括促成用例实现的经验与方法。
▍强烈建议使用专业配音员
配音员们都经过专门的培训,可以基于特定角色和用例实现特定的声音表现(包括发音和语调)。他们可能为了更好地表现剧本和角色而一次进行数小时的录制。对于CNV 而言,这样的表现是角色特定训练的关键。在向客户介绍时,让项目团队成员之一直接进行录音演示会更方便快捷。尽管我们最终聘请了专业的配音员,但事后我们还是发现了前述方法的优势。大多数人没有接受过专业培训,一旦感到疲劳就会想要尽快结束工作,并由此导致录音质量的持续下降。这种情况可能会导致训练样本的质量下降,最终获得的声音听起来可能不像预期的那样自然。因为相对于不停重复的脚本阅读,正常对话时人的精力会更充沛,也不会有太多停顿和重音等。专业的配音员会认识到这一点,并会更加专注地处理每个剧本。此外,随着越来越多的配音员选择远程工作,在家中建立专业的演播室,出现了一个意想不到的好处就是现在我们可以拆分录制过程,无需再连续录制很长时间。
在最初的录音环节,我们的产品团队安排了专业的音响工程师为配音员提供反馈和指导。传统的录音工作也存在类似的反馈机制,即由多个听众/导师向配音员提供实时的反馈。这样达到反馈有助于配音员更好地把握角色特点、脚本流程和一些操作要点,使其能够更快地进入状态。另外,我们还坚持要求配音员记录每个脚本或每条话语的独立音频样本。根据产品文档,这里的一个话语段应大致等同于一个句子。这个要求很重要,原因是录音在完成时通常会被合并入单个的音频文件,但在CNV模型训练阶段又需要将其分开。
▍尽可能针对用例进行训练
尽管深度学习在持续快速发展,专门针对预期用例在指导下进行训练仍然有其优势。尽管可用于多种用例的语音在通用性上有一定优势,但要想提高CNV 模型的质量,我们就需要更好的训练数据,而非“任何听起来不错的声音”。客户往往会记录第一次训练过程的时间和费用,并在权衡后想要更通用的模型。但是,为获得最佳的结果,在保持输入多样性的同时,我们应尽可能提升训练的针对性,这样才能体现语音在自然环境中的使用特征。在本文所述实例中,我们已经确认了角色定义,只是特定陈述的要求不是非常严格,因此我们选择将客户脚本与 Microsoft 存储库中提供的通用和聊天记录相结合。值得注意的是,产品团队正在积极开发的一项功能是允许CNV 模型在无需任何额外训练数据的情况下实现多种话语风格和表达不同的情绪。在某种程度上,这个功能可增强语音结果的多样性和实用性,因为无需专门针对对应情绪或风格再进行训练。
▍建模加载前的数据准备要点
完成高质量录音(参考下方的上传数据分析图)后,下一步就是确保录音与配对的正确匹配和适当标准化。该步骤的几个要点包括:
所示实例可以选择16位和 24 位录制数据。我们选择了后者,因为对CNV来说,这个位数越高越好(因此不推荐使用16KHz)。
由于无法按照原始脚本顺序处理,并且音频文件的标记不同,我们通过Speech Service的批量转录服务处理了音频文件。超过750 条录音在 10 分钟内被处理完毕,且输出的文本形式有多种。其中,最接近指导标准的是词汇格式,包括数字、特殊字符等都得到了清晰的展现。有关批量转录触发代码的更多详情请参见此处。
数据清理
这个过程一定程度上可通过脚本自动执行,但很多标准化作业仍然需要人工干预,包括将“BTW”改为“by the way”,将“ABC”等首字母缩略词改为“A B C”,数字大写(“1”改为“one”),特殊字符(“%”改为“percent”)等。就标准化而言,选择词汇转录会有一定优势。
▍借助跨语言模型推动面向新市场的个性化定制
关于合成语音,有一点自相矛盾的是,它的创建涉及到严谨的深度学习技术,但判断它的好坏却还是要依赖人的主观感受。不论如何,最终的目标始终是让客户确信创建的语音适用于预期目的。以下是有助于指导评估过程的几个要素:
在客户场景下,我们使用650多个涉及各种语句结构的独立录音样本完成了训练。最终得到的语音质量不错,尽管因角色设定(贴近播音员的语言风格)的原因,长句的发音听起来还是有一些不自然。按照产品文档的说明,在专业录音环境下的专业语音训练最多可用到2,000 个不同的样本。在达到特定上限之前,更多的数据总是有助于改善语音的质量。
创建合成声音的一个关键就是特异性。在很多情况下,客户可能只想体验一下技术和/或需要更通用的语音来适应更广泛的使用场景。在后一种情况下,预设的Azure语音更加适用,因为这些语音没有特定的角色设定,只需听起来自然即可。然而,如能根据预期用例训练更多的语音,获得更好结果的可能性就越高。反过来说,在针对特定目的或用例进行训练后,所获语音的通用性也是很难评估的。
如前所述,反馈、指导和录音一致性都非常重要。因此,把录制过程分为多天完成并尽量早地获得反馈有助于降低录音工作的疲劳感和提升输入的质量。相对应的是,每个团队总需要在录音棚中花费大量时间才能获得听起来“恰到好处”的脚本。我们一定要重视这些过程,但获得一次成功的经验将有助于减少过程中的冗余步骤。
语音的评估要考虑其使用环境,包括其中是否有大量噪音或其他乐声,又或因一些干扰一定要特别提醒才能让普通人有可能分辨“合成的”语音。后一点有可能是确定人声“真实性”的一个关键。鉴于PoC的局限性,我们没有机会在真实环境中进行测试,在评估时需要考虑到这一点。
| 第一轮 | 第二轮 | |
| 参与者 1 | 准确 = 100% | 准确 = 50% |
| 像人声,但实际是合成声 = 0% | 像人声,但实际是合成声 = 10% | |
| 像合成声,但实际是人声 = 0% | 像合成声,但实际是人声 = 40% | |
| 参与者 2 | 准确 = 60% | 准确 = 60% |
| 像人声,但实际是合成声 = 40% | 像人声,但实际是合成声 = 0% | |
| 像合成声,但实际是人声 = 0% | 像合成声,但实际是人声 = 40% | |
| 参与者 3 | 准确 = 70% | 准确 = 80% |
| 像人声,但实际是合成声 = 30% | 像人声,但实际是合成声 = 10% | |
| 像合成声,但实际是人声 = 0% | 像合成声,但实际是人声 = 10% |
*未经授权请勿私自转载此文章及图片。
谢谢你读完了本文!欢迎在评论区留言分享你的想法,并且转发到朋友圈。
长按识别二维码
关注微软开发者MSDN