在美国主要城市,市民每天24小时接入数千个公共急救无线电波,这些信息用于提供实时安全警报向超过500万用户提供火灾、抢劫和失踪等紧急情况。人们每天收听的音频超过1000小时,对需要开发新城市的企业提出了挑战。因此,我们构建了一个机器学习模型,可以从音频中捕获有关重大安全事件的信息。定制的软件适配无线电(SDR)捕获范围广泛的无线电频率(RF),将优化的音频剪辑发送到ML模型以进行标记。标记的剪辑被发送给运营分析师,他们在应用程序中记录事件并最终通知事故现场附近的用户。SecurityAlertWorkflow(图来自作者)TuningaCommonSpeech-to-TextEnginetotheProblemDomainUsingtheClipClassifieroftheCommonSpeech-to-TextEngine(图来自作者)在单词错误率(WER)方面,我们将从一个好的语音到文本引擎开始。许多警察使用的特殊代码不是白话,例如,NYPD官员会发送“Signal13”请求后备。我们使用语音上下文来自定义词汇表。为了适应领域,我们还扩展了一些词汇,例如“assault”并不流行,但在领域中很常见,模型应该检测“assault”而不是“asalt”。调整参数后,我们能够在一些城市获得相对准确的转录。接下来,我们将使用音频剪辑的转录数据来查找哪些与市民相关。基于转录本和音频特征的二元分类器我们对一个二元分类问题进行了建模,其中转录本作为输入,置信度作为输出,XGBoost算法为数据集提供了最佳性能。我们从一位前执法人员那里了解到,一些城市有一种特殊的警笛声,以在重大事件广播前引起当地警方的注意。这种“额外”功能使我们的模型更加可靠,尤其是在转录错误的情况下。其他一些有用的功能是警察频道和传输ID。我们在运行过程中测试了ML模型。运行几天后,我们注意到在事件中,那些只使用带有模型标志的片段的分析师并没有出错。我们在几个城市推出了这种模式。现在,一名分析师可以同时处理来自多个城市的音频,这在以前是不可能的。随着更多的闲置产能开始运作,我们能够开发新的城市。该模型的推出显着降低了分析师的音频音量(图片来自作者)超越公共语音到文本引擎该模型不是解决所有问题的灵丹妙药,我们只能在少数音质好的城市使用它.公共语音到文本引擎是在音素模型上训练的,音素模型具有与广播不同的声学特征,因此,转录的质量有时不可靠。对于那些非常嘈杂的旧模拟系统,转录是完全无法使用的。我们尝试了来自多个来源的多个模型,但没有一个模型接受过与数据集相似的声学配置文件的训练,并且都无法处理嘈杂的音频。我们试图用从数据训练的语音到文本引擎替换原来的语音到文本引擎,同时保持管道的其余部分不变。然而,对于音频,我们需要数百小时的转录数据,而生成这些数据既费时又昂贵。我们还可以选择通过仅转录词汇表中定义为“重要”的词并为不相关的词添加空格来优化流程,但这仍然只是逐渐减少工作量。最后,我们决定为问题域构建自定义语音处理管道。用于关键字识别的卷积神经网络由于我们只关心关键字,我们不需要知道单词的正确顺序,从而将问题简化为关键字识别。这要简单得多,我们决定使用在数据集上训练的卷积神经网络(CNN)。在递归神经网络(RNN)或长短期记忆(LSTM)模型之上使用卷积神经网络(CNN)意味着我们可以更快地训练和重复。我们评估了Transformer模型,它大致相同但需要大量硬件才能运行。由于我们只寻找音频片段之间的短期依赖关系来检测单词,因此计算简单的CNN似乎优于Transformer模型,同时释放了可以通过超参数调整更加灵活的硬件空间。使用卷积神经网络进行关键词识别的剪辑标注模型(作者供图)。音频剪辑被分成固定持续时间的子片段。如果词汇表中的一个词出现,则该子片段被赋予一个正标签。然后,如果在段内找到任何这样的子段,则音频段被标记为有用的。在训练期间,我们尝试改变子片段的持续时间,看看它如何影响融合性能。长片段使模型更难确定片段的哪一部分有用,也使模型更难调试。短片段意味着某些单词出现在多个片段中,使模型更难识别它们。可以调整此超参数并找到合理的持续时间。对于每个子片段,我们将音频转换为Mel倒谱系数(MFCC)并添加一阶和二阶导数,以25毫秒的帧大小和10毫秒的步幅生成特征。然后通过Tensorflow后端输入到基于Keras序列模型的神经网络中。第一层是高斯噪声,这使得模型对不同无线信道之间的噪声差异具有鲁棒性。我们尝试了另一种方法,人为地将真实噪声叠加到剪辑上,但这大大减慢了训练速度,但没有显着提高性能。然后,我们添加三个后续层Conv1D、BatchNormalization和MaxPooling1D。批量归一化有助于模型收敛,最大池化有助于使模型对语音和信道噪声的细微变化具有鲁棒性。此外,我们尝试添加去角质层,但这些并没有有效地改进模型。最后,添加一个密集连接的神经网络层,将其注入到具有sigmoid激活的单个输出密集层中。生成标记数据的音频片段的标记过程(图来自作者)为了标记训练数据,我们为注释者提供了问题域的关键字列表,并要求他们标记开始和结束位置以及词标签。为了确保注释的可靠性,我们在注释器之间有10%的重叠,并计算了它们在重叠片段上的性能。一旦我们有大约50小时的标记数据,训练就会开始,并且我们会在重复训练时不断收集数据。由于词汇表中的某些词比其他词更常见,因此该模型对常见词表现良好,但对样本较少的词表现不佳。我们试图通过在其他片段中叠加单个单词的发音来人工生成示例。然而,性能提升与这些词的实际标记不相称。最终,该模型将对常用词等更加敏感。我们在未标记的音频片段上运行模型并剔除那些包含学习词的片段,这有助于减少未来标记的冗余词。模型发布经过多次数据收集和超参数调整的迭代,我们已经能够训练出一个具有高召回率和准确捕获词汇表中单词的模型。高召回率对于捕捉关键安全警报非常重要。在发送警报之前会收听标记的剪辑,因此误报不是一个大问题。我们在纽约市的一些行政区测试了这个模型,该模型能够将音频音量降低50-75%(取决于频道),这明显优于我们在公共语音到文本引擎上训练的模型,因为NewYorkwas模拟系统的音频非常嘈杂。令人惊讶的是,即使该模型是根据纽约市的数据进行训练的,它也可以很好地切换到芝加哥的音频。在收集了几个小时的芝加哥剪辑后,从纽约市模型中学到的东西被转移到芝加哥,效果也很好。图片来源:具有自定义深度神经网络的unsplash语音处理管道广泛应用于美国主要城市的警察音频。它通过音频检测重大安全事件,使全国公民能够快速向城市广播,履行其维护社区安全的使命。在RNN、LSTM或Transformer上选择计算简单的CNN架构,并简化标记过程,是重大突破,使我们能够在有限的时间和材料下超越公共语音到文本模型。
