在本系列博客中,跟随 Seasalt.ai 创建全面现代会议体验的旅程,从最初的起步,到在不同硬件和模型上的优化,再到集成最先进的 NLP 系统,最终实现 SeaMeet 协作现代会议解决方案。
超越算法
Modern Meetings 是一个很棒的演示,但它始终停留在演示阶段。要让它真正投入生产还有很长的路要走。我们首先使用 Microsoft Azure 技术栈成功实现了演示版本。但在认识到软件的各种缺陷后,我们决定用自己的算法替换,并让整个体验更加流畅、轻量且灵活。 Modern Meetings 有四个主要组成部分:
- 麦克风阵列的信号处理,尤其是波束形成
- 说话人分离与识别
- 定制语音识别
- 更好的用户界面
接下来我们将详细介绍所有重要组件。

我们用自己的技术栈改造了 Modern Meetings 的四大组件:1. 麦克风阵列信号处理;2. 说话人分离与识别;3. 定制语音识别;4. 现代网页界面。
麦克风阵列的信号处理
与单一近讲麦克风相比,麦克风阵列可从 360 度范围内拾取声音,距离可达 5 米。因此,一个麦克风阵列能够在 10 米 x 10 米的中型会议室内收集语音。所有麦克风集中在一个设备上,大大减少了会议室的线缆杂乱,简化了安装和维护。 另一方面,使用麦克风阵列的下游目标是为我们的模型提供最佳质量的数据。因此,在自动语音识别之前,我们会先进行多种信号处理算法。预处理管道的核心是波束形成算法。由于我们使用的是圆形多麦克风阵列,可以利用声音到达各麦克风的微小时间差。波束形成的作用是确定信号的主要特征(最佳波束),增强这些频率,同时衰减不需要的声音。效果是降噪和去混响,使主要信号(语音)更响亮清晰。
许多波束形成算法的最佳性能需要知道声源(说话人)相对于麦克风的位置。但在实际应用中这几乎不可能,因此我们首先通过确定声源方向来计算远场权重。这个步骤称为声源定位,或更具体地说是到达方向(DOA)。我们遇到的主要问题是平滑性。算法能大致给出正确结果,但确定的声源会在真实方向两侧 30 度范围内不断波动,影响波束形成。我们的解决方案是只让声源定位算法使用编码人类语音主要频率的频段,并结合平滑技术,保留 DOA 结果的“历史”进行平均。更可靠的 DOA 结果让我们能计算远场权重并确定最佳波束。
在 Kinect DK 上执行的一系列算法:波束形成、降噪、去混响、声源定位,使我们能够实时生成清晰增强的人类语音,并大致定位说话人的方向。这将极大帮助下一步的说话人识别。
说话人分离与识别
会议转录系统的下一个关键组件是自动说话人识别。正如本系列上一部分所述,阅读没有说话人信息的杂乱对话文本令人沮丧,完全失去了系统的意义。这就是说话人识别的作用。
通过这一组件,我们可以自动将转录和音频与说话人姓名对齐。实现方法是使用分离技术,将音频片段聚类为与录音中说话人数相同的组。该方法利用语音活动检测(VAD)系统确定语音片段,从中提取短窗口的向量表示。每个窗口提取的向量称为话语级 xvector,平均后得到说话人级 xvector。然后将这些 xvector 进行聚类,每个聚类代表属于同一说话人的语音片段。值得一提的是,聚类算法的选择极大影响分离性能,我们通过使用阈值亲和矩阵并结合归一化最大特征间隙(NME)值自动调优的谱聚类算法,实现了最佳分离错误率(DER)。最后,需要确定每个聚类代表的说话人。会议前可通过 40 秒录音提取每位说话人的 xvector,与聚类结果比对以识别对应说话人。
这一流程的灵活性在于:许多会议场景下,提前获得每位说话人录音并不现实。比如有 VIP 客户的商务会议或有 50 位发言人的大型研讨会。在这种情况下,跳过注册步骤,我们的分离系统仍能将语音片段分组。只需人工从每个聚类抽取几秒音频即可确定说话人身份。配合专用现代用户界面,可提供同样功能但更灵活。
定制语音识别
在了解了微软会议转录器的强大后,我们准备让系统完全独立,超越已有的革命性产品。Modern Meetings 及任何转录产品的核心是自动语音识别(ASR)模型,因此我们投入了最多的关注。 Azure Cognitive Services 提供了多种语言和方言的模型可选,但不同方言间的性能难以区分。对于英语的不同方言,最主要的努力和数据可能都集中在美式英语模型上,然后再用带口音的数据微调出各种方言模型。我们希望确保如果提供独立模型,就要针对特定用例进行调优。这意味着要收集数千小时的本地化音频和转录,并投入数周训练和微调。但看到模型每个 epoch 都在进步并兑现承诺,令人非常满足。
有了坚实的基础模型后,下一步是扩展可用性和定制性。每个行业都有大量专有术语,使 ASR 模型难以区分生僻词和常见、发音相似的词。
我们的解决方案是 SeaVoice,它为用户提供了一个集中平台,方便针对特定需求微调模型。