部署机器学习保障语音安全

我们的使命是让十亿人充满乐观与文明,这要求我们帮助人们真正感受到彼此的联结。对于3D沉浸式世界而言,正如现实世界一样,在建立持久友谊与联系方面,没有什么比人声更真实、更有力量了。但如何在保障社区安全与文明的同时,提升Roblox上语音通信的沉浸感与丰富度呢?
在本篇博客中,我们将分享如何打造“实时安全”系统——这是一个端到端的机器学习(ML)模型,每天处理数百万分钟的语音活动,其检测语音通信中政策违规行为的准确度甚至超过人工审核。该系统的输出结果会被输入到另一个模型中,由其决定相应的处理措施。 处罚模型会向违反政策的用户发送通知,初期为警告,若行为持续则采取更严厉的措施。
这一端到端的“实时安全”系统曾是一个大胆的目标,因为我们是业内首批为用户提供多语言、近乎实时语音安全功能的公司之一。语音分类既取决于音频风格(包括音量和语调),也取决于内容(包括所说的词语)。 我们很高兴分享该系统的开发历程:从几乎没有任何自动化基础(实际上是零标注数据且无模型)起步,在实时语音安全领域实现了从零到六十的飞跃。
最后,我们很高兴分享我们的首个开源模型,这也是我们的语音安全模型之一。通过开源该模型并开放其商业使用,我们希望为政策违规检测提供行业基准,从而加速语音安全领域新型机器学习模型的开发。该开源模型是我们的首个版本,此后我们已对其进行了重大改进,目前正在进行测试。
克服数据匮乏的挑战
与许多公司一样,我们开展机器学习工作的起点是评估现有数据的质量,以此用于模型的训练和评估。 理想的数据集应包含语音片段及其高质量的安全性标注。然而,在项目初期,我们几乎没有大规模的人工标注真实世界数据。若要采用监督学习方法训练高质量的语音安全检测模型,我们需要为每种支持的语言准备数千小时的标注音频数据,这不仅需要数年时间收集,而且在资源和时间上都极其耗费。
与其依赖数千小时的人工标注数据,我们开发了多种更高效的方法:
- 利用机器标注数据进行训练。我们没有执着于追求完美的纯人工标注训练数据,而是选择通过机器标注语音片段来获取海量训练数据。利用大量弱监督的机器标注数据,生成的训练模型能够对标签中的某些噪声保持鲁棒性。 该方法成功的关键在于:我们拥有优秀的开源语音转文本库,以及多年利用机器学习检测用户文本通信中社区准则违规行为的经验。这种机器标注方法使我们仅需数周而非数年,便完成了模型所需海量训练数据的标注工作。
- 用于评估的人工标注数据。尽管高质量但仍不完美的机器标注数据足以训练出高性能模型,但我们并不信任机器标注结果来对最终模型进行验证。因此,接下来的问题是:我们该从何处获取足够的人工标注数据用于评估。 幸运的是,虽然无法及时收集到足够的人工标注训练数据,但我们可以利用内部审核员来收集足够的数据用于模型评估——这些审核员原本就在对Roblox用户提交的滥用报告进行分类,并据此手动采取相应措施。 这让我们得以兼得两全其美:既拥有质量上乘且数量充足的机器标注训练数据,足以训练出高性能模型;又拥有虽然体量较小但绰绰有余的人工标注评估数据,足以让我们确信模型确实有效。
我们面临的另一个数据稀缺领域是政策违规类别中发生率极低的类别,例如涉及毒品、酒精或自残的内容。为解决这一问题,我们将几个低发生率类别合并为“其他”类别。因此,我们最终的模型能够识别粗口、欺凌、歧视、约会以及“其他”这几类内容。 为了深入理解这些“其他”类别,从而更好地保护我们的社区并确保Roblox上安全文明的交流,我们将持续监控这些类别以收集更多示例。随着时间推移,当“其他”类别中的子类别积累到足够数量时,这些子类别也将成为独立的命名类别。
训练数据机器标注管道
我们设计了一套全自动机器标注管道,用于从语音聊天序列中提取高质量标签。该管道包含三个阶段:
- 音频分段。流程的第一阶段是将音频分割为多个片段(即较短的音频段),具体在检测到句子间的静默期时进行分割。这有助于我们更高效地识别并标注违反政策的内容。
- 音频转录。管道的第二阶段使用自动语音识别(ASR)模型,将这些音频片段转录为文本。我们采用公开的开源ASR模型。
- 文本分类。管道的最后阶段使用我们自研的文本过滤器对转录文本进行分类。该过滤器旨在检测并屏蔽基于文本的通信中的不当内容。 我们对该过滤器进行了适配,使其能够处理转录后的音频数据,从而能够为音频片段标注违规类别和关键词。该文本过滤器是一个基于人工标注的违规文本数据训练而成的集成模型,由扩展版DistilBERT模型和正则表达式规则组成。

需要特别指出的是,该管道仅用于为我们的最终生产模型生成训练数据。不过,您可能会疑惑:既然这里已有管道能生成我们所需的标签,为何还要训练模型?答案在于效率——我们需要在更短的时间内实现极高的准确度。 在 Roblox 这种规模下,调用 ASR 来转录所有语音通信将极其缓慢且资源消耗巨大。然而,基于这些数据训练出的紧凑型机器学习模型——该模型专门设计用于在不进行完整转录的情况下检测语音通信中的政策违规行为——不仅准确度相当,而且速度显著更快,并且能够适应 Roblox 的规模。
扩展机器标注管道
在大多数大型 AI 项目中,获取高质量训练数据的机制本身就是一套生产级机器学习系统,需要从零开始构建。 针对本项目,我们需要将机器标注管道开发为一个具备 24/7 不间断运行能力、并能扩展至数千个并发 CPU 或等效数量 GPU 的顶级生产系统。我们构建了一个拥有数千个 CPU 核心的训练数据集群,该集群能自动并行处理传入的音频流以生成机器标签。该系统必须无故障运行以实现最大吞吐量,任何错误或停机都可能导致训练数据生成工作延误数天甚至数周。
下文概述了支撑该架构的高层设计,正是这一架构使我们能够在短短数周内完成数万小时音频的机器标注。关键经验在于:在处理流程的关键节点部署队列机制,通过在多台机器上横向扩展工作线程,有效消除了瓶颈。这些工作线程负责执行前文所述的音频分块、音频转录及文本分类等步骤。

机器学习架构
我们进行模型筛选的核心要求是低延迟,即模型推理需达到近乎实时的速度,这促使我们选择了能够直接处理原始音频并返回评分结果的架构。我们采用基于Transformer的架构,该架构在序列摘要生成方面表现优异,并在自然语言处理(NLP)和音频建模领域取得了显著成功。 我们的挑战在于找到一个平衡点,既要兼顾复杂度又要满足低延迟推理——即处理多种语言及口音、具备抗背景噪声能力并保证音频质量,同时满足产品延迟限制。
模型选择
一个迫在眉睫的设计问题是确定训练 Transformer 模型所需的上下文窗口大小。我们分析了数天语音聊天数据中语音片段长度的直方图,最终确定 15 秒的窗口能在延迟与分类所需的充分上下文之间取得最佳平衡。 我们使用“无违规”作为类别,用于检测是否存在政策违规。鉴于单个音频片段可能包含多种类型的违规,该任务本质上属于多标签分类,而非传统的多类分类问题。我们针对此任务对整个网络(包括头部层)进行了微调,并采用二元交叉熵(BCE)损失函数。

图注:来自聊天数据的语音片段直方图,显示75%的语音片段时长不足15秒。
我们评估了音频研究界中几种流行的开源编码器模型,最终将选择范围缩小至 WavLM 和 Whisper。我们的首次实验是使用 2,300 小时的 Roblox 机器标注语音数据对预训练的 WavLM base+ 进行微调,并在两个真实世界的评估数据集上评估分类结果。 我们获得了非常令人鼓舞的分类结果(详见下文“模型评估”),但发现其延迟超出了生产部署的阈值。作为后续工作,我们实现了一个自定义版本的 WavLM 架构(减少了 Transformer 层数),并利用 7,000 小时的 Roblox 机器标注语音数据从头开始训练了一个端到端模型。 该模型在对话场景中能产生稳健的分类结果,且相比微调模型更为紧凑。我们的最终候选模型采用了师生蒸馏架构,以 Whisper 编码器作为教师网络,WavLM 端到端架构作为学生网络。 在4,000小时音频数据集上训练后,我们观察到其分类准确率与微调模型相当,但延迟显著降低且模型体积更小。下图总结了上述三项实验的模型参数。随着我们将模型扩展至多语言语音安全分类领域,我们将持续优化数据采样策略、评估策略及模型超参数。

数据集大小 | 模型规模 | 推理延迟/每秒输入 | 实时系数 | |
微调版 WavLM | 2300小时 | 9600万参数 | 102 毫秒 | 9.80 |
端到端训练 | 7071小时 | 5200万参数 | 83 毫秒 | 12.08 |
蒸馏模型 | 4080h | 4800万参数 | 50 毫秒 | 19.95 |
模型优化
我们采用了行业标准方法,包括对选定的Transformer层进行量化,在不牺牲质量的前提下实现了超过25%的加速。将特征提取阶段从仅使用卷积神经网络(CNN)改为结合中频频谱系数(MFCC)输入,同样使推理速度提高了40%以上。 此外,将语音活动检测(VAD)模型引入作为预处理步骤,显著提升了整体处理流程的鲁棒性,尤其对麦克风受噪声干扰的用户而言。VAD使我们能够过滤掉噪声,并仅在音频中检测到人类语音时才应用安全处理流程,这使整体推理量减少了约10%,并为系统提供了更高质量的输入。
模型评估
尽管我们在评估中使用了多种不同的数据集和指标,但我们可以分享我们的语音分类器在政策违规率较高的英语数据集(例如用户语音滥用报告中常见的情况)上的表现。该数据集由我们的审核员100%人工标注。 当我们将所有违规类型(辱骂、欺凌、约会等)合并为单一二元类别时,观察到PR-AUC(精确率-召回率曲线下面积)得分超过0.95,如下图所示。这意味着在该评估数据集上,分类器通常能够捕获绝大多数违规内容,同时不会错误地将太多非违规内容标记为违规。

然而,上述出色的评估结果并不一定能直接适用于所有使用场景。例如,在关于违反政策言论的通知场景中,分类器会评估所有 Roblox 语音聊天内容,此时违规行为的总体发生率较低,且出现误报的可能性更大。而在语音滥用举报场景中,分类器仅评估已被标记为潜在违规的语音内容,因此违规发生率更高。 尽管如此,上述结果仍足够令人鼓舞,促使我们在生产环境中(采用保守阈值)启动了分类器实验,以向用户发送其言论违反政策的通知。这些实验的结果远超我们的预期。
下一步计划?
通过利用我们自身的 CPU 基础设施并精心设计大规模处理管道,我们成功地在 Roblox 级别的规模上部署了该模型。在高峰时段,该模型每秒成功处理超过 2,000 次请求(其中绝大多数不包含违规内容)。 此外,由于该模型用于提醒用户其言语违反政策,我们观察到平台上的违规行为显著减少。具体而言,自初期上线以来,严重级别的语音辱骂举报减少了15.3%,每分钟语音中的违规次数下降了11.4%。
我们正通过多语言训练数据扩展模型,这使我们能够部署单一分类模型,在整个平台上处理多种语言以及混合语言场景。此外,我们还在探索新的多任务架构,旨在除分类目标外还能识别特定关键词,而无需依赖完整的语音识别(ASR)。在违规标签之外检测这些关键词,不仅能提升分类质量,还为我们在采取相应措施时向用户提供背景信息创造了条件。
本文所述的研究是Roblox多个团队通力合作的成果。这充分体现了我们“尊重社区”的核心价值观,也是跨学科协作的典范。


