数据收集 - 脚本生成
目录

数据收集 - 脚本生成#
在本节中,我们将介绍如何为配音演员创建录音脚本。脚本必须包含所有音素且覆盖率良好,必须与领域相关,并且应具有必要的视觉提示,以使配音演员获得所需的节奏。
识别数据源:#
配音演员将朗读的内容需要与合成语音的用例保持一致。如果语音用于提问,请在脚本中加入问题。如果语音将用于表达情感,则在脚本中加入情感。
另一种选择是使用大型语言模型 (LLM)(如 Megatron、BERT 或 GPT-3)合成生成要朗读的文本。由于数据来自 LLM,因此与其他数据集相比,它需要更多手动规范化。
数据源必须包含足够的句子以满足训练要求。句子数量的最佳实践是 2 万个句子 = 60 小时的录音室时间 = 20 小时的可用音频。目前,这 20 小时的音频足以从头开始在 NVIDIA NeMo 中训练语音。
为了增加可用音频时间,请消除外语或难以发音的单词,并确保正确的标点符号、正确的拼写和一致的规范化。
使配音演员的过程更轻松。配音演员的过程越顺利,获得的可用高质量音频就越多。
音素覆盖率和分布#
每种语言都由构成口语“构建块”的声音组成。这些声音称为音素。例如,英语中有 44 个音素。
获得脚本后。它应符合以下要求
音素覆盖率:为了训练 TTS 模型,请确保脚本涵盖英语的所有 44 个音素。如果脚本未涵盖所有音素,则 TTS 模型将无法学习所有音素,并可能错误地发音某些音素。
音素分布:脚本不仅需要涵盖音素,还需要具有与基线相比正确的音素分布。
像哈佛句子这样的数据集具有完整的音素覆盖率和与美式英语匹配的音素分布,并且可以作为良好的参考点。脚本必须对频繁出现的音素具有良好的覆盖率(许多样本) - 音素的样本越少意味着模型不太可能很好地生成该音素。
计算并绘制 TTS 数据集中音素分布的教程展示了如何分析音素覆盖率和音素分布。
技术要求#
长度:脚本的每一行应让配音演员朗读 10 秒到 20 秒。大多数人的语速为每分钟 100 到 130 个单词,因此作为粗略的启发法,这大约是 16 到 26 个单词(对于英语,其他语言会有所不同)。
音素分布:音素是单词的构建块。英语中有 44 个音素,它们在英语口语中以不同的频率出现。《哈佛句子》是一个参考分布。最好对您的文本行进行音素比较,以了解它们与《哈佛句子》的比较情况。
规范化:规范化是将数字、缩写、日期时间、单位等转换为其口语形式的过程。需要进行规范化以减少脚本中字符之间的歧义,最终减少模型输入数据中的歧义。对于英语,NeMo 中有一个规范化脚本,但它不会捕获所有内容,并且需要手动审查。
语法:作为问题的每一行文本都应以问号结尾。这是为了模型可以学习作为问题的句子的发音(它们通常在结尾处音调升高)。其他标点符号,如句点、感叹号、逗号和引号也很重要。
手动规范化的启发法#
搜索每个数字 0、1、2、3、4、5、6、7、8、9。如果存在规范化错误,它们将出现。将它们手动规范化为书面形式 - 例如,如果您看到“1950s”,则将它们规范化为“nineteen fifties”。
体育比分通常需要大量手动规范化。所需的规范化可能因运动而异,有些运动有像网球中的“deuce”这样的专门术语。例如,数据集中有很多体育比分,您需要知道它们是什么运动才能对比分进行正确的规范化,将其转换为口语形式。
搜索短语“dot”。这在规范化错误中经常出现。根据需要进行更正。有时,像“5.00a.m.”这样的时间标记会被规范化为“five dot a dot m”。这不是时间的正确发音方式,需要修复,例如修复为“five a m”。
搜索短语“comma”。这可以通过(不正确的)程序化规范化引入,类似于“dot”。
搜索货币符号,如“$”。如果发生规范化错误,则符号可能未被规范化为美元、美分、英镑等。
搜索度数符号“°”。这通常在规范化中未被捕获,必须手动规范化。
搜索字符“/”(斜杠)。它通常未被正确规范化,您希望像“bar/lounge”这样的词语发音为“bar lounge”,因此请删除斜杠。
将专有名词大写,例如 New York City 而不是 new york city,或 Paris 而不是 paris,这会使配音演员更容易阅读脚本。
确保问题以问号结尾。对此的一个好的启发法是搜索句子的开头,然后搜索疑问词 - 例如 how、what、when、where、do you 等。
搜索日历月份 - January、February 等 - 并确保月份名称大写 - 这使配音演员更容易阅读文本。
搜索三个句点(省略号)…,因为这通常用于表示语音中的停顿。它的发音通常含糊不清。
首字母缩略词 - 首字母缩略词(如“GPU”)应向配音演员明确说明。例如,一个建议是将它们保留为大写并在它们之间插入空格:“GPU” -> “G P U”
有时,如果文本是从 Unicode 格式处理成脚本的,则需要搜索并更正 Unicode 转义序列。Unicode 转义序列将单个字符转换为 4 位十六进制代码点的格式,例如 \uXXXX。例如,“A”变为“\u0041”。搜索“\u”以确定您的文本行中是否有任何此类序列。
有时,如果文本是从 HTML 处理的,则 ISO 8859-1 字符将出现在文本中并且需要替换,例如 - 。您需要搜索“&#”才能找到它们。使用此表来确定用什么替换它们,或在您的 IDE 中使用插件。
对文本行运行拼写检查器。这通常会发现一些拼写错误。拼写错误会使配音演员更难阅读脚本。
结论#
完成上述所有步骤后,即可将脚本发送给配音演员进行录制。请记住,TTS 训练对数据敏感,数据中的任何差异都会导致最终模型质量下降。因此,务必在所有步骤中验证数据的完整性。