大数据文摘出品
来源:VB
编译:白浩然、DD、Andy
上个月,Microsoft宣布,其与Slack,Facebook Workplace以及Google的Hangouts Chat的竞争对手Teams的每日活跃用户已超过4400万。这一里程碑却掩盖了其“稍后”发布的一些新功能。大部分功能都很简单明了:举手功能表明你有话要说;离线和低带宽支持,即使在网络连接不畅或没有网络情况下,也能阅读聊天消息并回复;以及将聊天弹出到一个单独窗口。其中还有一项实时噪声抑制功能吸引了大家眼球 - Microsoft演示AI如何在通话过程中减少让人分心的背景噪声。
我们都有过类似经历:视频时多少次让某人打开静音,或是找个安静的环境?实时噪声抑制功能将过滤掉会议中某人的键盘打字声,薯片袋的悉索声和正在用的吸尘器声。AI将实时消除背景噪音,让你只在通话中听到语音。那它究竟是怎么做到的呢?为了找到答案,VB与Microsoft Teams小组项目经理Robert Aichner进行了访谈。
随着新冠病毒危机迫使数百万人在家学习和工作,协作和视频会议工具的使用呈爆炸式增长。Microsoft正在将Teams作为其Microsoft 365订阅套件的一部分,推动成为针对企业和消费者的解决方案。该公司依靠其机器学习领域优势来确保AI功能是其最大特色之一。当它最终发布时,实时背景噪声抑制功能将为充满噪声的企业和家庭带来福音。此外,Microsoft构建此功能的方式还对其他用机器学习的公司具有指导意义。
固定噪声与非固定噪声
当然,多年来Microsoft Teams,Skype和Skype for Business还有其他通信工具和视频会议应用程序中一直存在噪声抑制功能。但那些噪声抑制只能消除固定噪声,例如在背景中运行的电脑风扇声或空调声。传统的噪声抑制方法是在说话停顿时,估计噪声的基准,并假设连续的背景噪声不会随时间而变化,然后将其过滤掉。
Microsoft Teams则更进一步,将抑制非固定噪音,例如狗吠或关门声。“那不是固定的,”Aichner解释说。“一般对于这类噪声你没法在说话停顿时估计。但现在机器学习就可以让你创建具有大量代表性噪声的训练集来进行训练。”
实际上,Microsoft今年早些时就在GitHub上公开了其训练集,“以促进该领域研究的发展。”虽然第一个版本已公开可用,Microsoft依然在积极致力于扩展数据集。公司发言人证实,作为实时噪声抑制功能的一部分,数据集中的某些类别的噪声并不会在通话中被过滤,包括乐器,笑声和歌声。
GitHub链接:
https://github.com/microsoft/DNS-Challenge/tree/master/datasets
微软不能单纯地分离出人的声音,因为有些噪音也有相同的频率。在语音信号的频谱图上,有些噪声不光出现在说话间隙,还会与说话本身重叠。因此,过滤掉噪音几乎是不可能的 – 因为语音和噪音存在重叠,而两者无法区分。取而代之的是,你需要先训练一个网络知道噪声和语音都是什么样的。
语音识别和噪声抑制
为了阐明观点,Aichner将用于噪声抑制的机器学习模型与用于语音识别的机器学习模型进行了比较。对于语音识别的模型,你需要录下大量用户对着麦克风讲话的语料,并通过记录语料内容的方式人工标记这些数据。与将麦克风输入映射到文字不同,噪声抑制关注于将嘈杂的语音转变为纯净的语音。
Aichner说:“我们训练了一个模型来理解噪音和语音之间的差异,然后该模型试图仅仅保留语音。”“我们有训练数据集,其中收集了数千种不同的人声和100多种噪音类型。然后要做的是将没有噪音的干净语音与噪音混在一起,这样就模拟了麦克风信号。接着,我们还向模型提供干净语音作为标注数据。就好像你告诉模型,“请从这些嘈杂的数据中提取出干净信号,和标注数据一样。这就是在监督学习中训练神经网络的方式,你得有一些标注数据。”
对于语音识别而言,标注数据就是对麦克风说话的实际内容。而对于实时噪声抑制来说,标注数据是干净的语音。通过提供足够大的数据集(在这种情况下为数百小时的数据),Microsoft可以有效地训练其模型。“即便我的声音没有出现在训练数据中,模型也可以泛化并降低其中的噪音,”Aichner说,“于是当我讲话时,模型可以从噪音中实时地提取干净的语音,然后发送给远程人员。”
挑战
和语音识别的功能进行比较,噪声抑制更容易实现,即使后者是实时的。那么为什么以前没有实现过?Microsoft的竞争对手可以快速重建它吗?Aichner列出了构建实时噪声抑制的挑战,包括查找代表性数据集,构建和缩小模型以及利用机器学习知识。
具有代表性的数据集
我们已经提到了第一个挑战:代表性数据集。团队花费了大量时间来弄清楚如何产生能够代表典型通话情况的声音文件。
他们从有声读物中找出代表男性和女性的典型声音,因为“男性和女性的声音之间确实有语音特征上的不同”。他们还用了带标注的YouTube数据集,标注出了录制内容包含的声音,比如打字声和音乐。然后,Aichner的团队用脚本以不同的信噪比将语音数据和噪声数据合并在一起。接着通过放大噪音的方式,他们就可以模仿通话中可能发生的不同实际情况。
但有声读物与电话会议完全不同。那难道不会影响模型,从而影响噪声抑制的效果?
“这是一个很好的观点,”Aichner承认。“我们的团队也做了一些录音,以确保我们不仅在生成的合成数据上面进行训练,而且还要在实际数据上能起作用。但要获得那些真实的录音肯定要困难得多。”
隐私限制
Aichner的团队是不允许看到任何用户数据的。此外,微软内部还有着非常严格的隐私保护准则。“我不能只是简单地说:‘现在我要开始记录下每次会议’。”
因此,该团队不能使用Microsoft Teams进行通话。即使一些员工愿意让他们记录自己的会议,但当有很明显的噪音发生时还是需要人记录下来。
“这就是为什么我们现在只做了一些小规模的工作,以确保能使用各种设备和扬声器等收集一些真实的录音“Aichner说,”接下来要做的是,将它们作为测试集,也就是接近真实会议场景的测试数据。就可以来看我们是否使用了一个准确的训练集,以及在测试集上的表现如何?当然,理想的情况是我能有一个训练集,它包含了所有Teams的录音,里面夹杂着人们正在听到的各种噪音。但现实是,我无法像通过获取其他开源数据那样轻松地获取相同规模的数据。“
另外他还说:“你可能会说它应该变得更好。当然,如果有更具代表性的数据,它可能会变得更好。所以我认为在未来,可以看看是否能进一步改善。但就目前而言,即使仅仅使用现有的公开数据,它已经表现得很好了。”
云端和边缘端
接下来的挑战就是要确定:如何构建神经网络、模型结构应该是什么样子以及如何迭代。机器学习模型经历了很多的调整,这需要大量的计算,这使得Aichner的团队需要花很长时间才能在Azure(当然得是它?)的多块GPU上完成模型的训练。
”很多机器学习任务是在云端完成的,“Aichner说,“比如对于语音识别任务来说,你对着麦克风说话,这段话会被发送到云端。借助云上强大的计算能力,便可以运行这些大型的模型来识别这段语音。但对于我们来说,由于这是实时通信我需要处理每一帧,假设它是10毫秒或20毫秒一帧,那我就要在这个时间以内处理完它,这样才可以立刻回传给你。所以我不能把它发送到云端,等待噪音抑制,再回传回来。“
对于语音识别来说,利用云可能还是有意义的。但对于实时的噪音抑制,它就没啥意义了。一旦你有了机器学习模型后,你应当缩小它以适应客户端,有可能是一部手机或是一台电脑。一个只针对拥有高端机人群的机器学习模型是没有意义的。
将处理推向边缘端
让机器学习模型留在边缘端而不是云端还有一个原因:微软希望限制服务器的使用,有时,甚至一开始不用服务器。对于Microsoft Teams中的一对一呼叫来说,呼叫设置通过服务器进行,但实际的音频和视频信号数据包是直接在两个参与者之间发送的。对于组呼叫或计划会议来说,需要有一台服务器,但微软会将这台服务器上的负载降至最低。为每个呼叫执行大量服务器处理不光会增加成本,每个额外的网络跃点也会增加延迟。从成本和延迟的角度来看,在边缘端进行处理效率会更好。
“你要确保将尽可能多的计算推送到用户端,因为这实际上并不会涉及任何成本。你已经有笔记本电脑、PC或是手机了,只不过要多做一些其他处理。只要你的CPU没过载,就没有问题~“Aichner说。
当我指出,电池寿命,尤其是不在连接状态设备的电池,是其中一项成本时, Aichner这样说:“是啦,我们当然也关注到了这一点,我们可不想因为仅仅添加了一些噪声抑制功能就降低了设备的电池续航时间。这绝对是要满足的另一个需求,要确保不会在这一点上因小失大。”
下载大小和未来
团队不能仅仅考虑可能失败,还要考虑到未来发展。因为我们现在讨论的是机器学习模型,所以工作是永无止境的。
“我们正在努力去构建一种将来也具有灵活性的产品,因此在发布第一个功能后,我们不会止步于噪声抑制”,Aichner说,”我们想让它越来越好。也许对于一些噪声测试,现在表现还不尽如人意,但我们希望能够有能力去改进它。只要有性能提升,Teams的用户一定就能下载到最新的模型,使用质量更高的产品。“
模型本身将以几兆字节的速度运行,但这不会影响客户端本身的大小。“这也是我们的另一个要求,当用户在手机、台式机或笔记本电脑上下载我们应用时,会想要最小化下载大小,你也会想要让人们尽快完成下载。“
Aichner还说:“‘只是为一些模型’在下载中增加兆字节是不可取的,当你安装完Microsoft Teams后,模型将会稍后在后台下载完成。这也使我们在将来变得更加灵活,可以做更多的事,建立更多不同的模型。”
机器学习专业知识
所有以上这些都需要最后一个组成部分:人才。
“你还需要有机器学习的专业知识,才能知道自己想对这些数据进行什么样的操作,”Aichner说,“这就是为什么我们在这个智能通信小组中成立了机器学习团队的原因,我们需要知道应该如何处理这些数据的专家。什么是正确的模型?深度学习有着非常广泛的意义,你可以创建许多不同类型的模型。我们在世界各地有多个微软研究中心,有很多音频方面的专家。现在正与他们紧密地合作着,因为他们在深度学习领域有很多经验和知识。”
数据是开源的,也是可以进行改进的。任何公司都可以轻松地利用公共云,包括主流的Amazon Web Services,Microsoft Azure和Google Cloud,去完成大量必要的运算。因此,如果有另一家拥有视频聊天工具和合适的机器学习人才,他们是否能实现这一目标呢?
“或许可以吧。”Aichner说,“这和一些公司如何获得语音识别能力类似,他们需要有一个涉及到大量数据的语音识别器,还需要有很多专家去构建模型。因此,一些大公司正在做着。”
Aichner认为,由于规模庞大,微软仍然具有很大的优势。“我认为价值在数据,”他说,“我们将来要做的,就像你说的,有一个计划是微软的员工可以提供给我们足够多真实的Teams Calls数据,以便对客户的真实情况和所遇到的问题进行更好的分析,并对其进行更多定制化服务。“
相关报道:
https://venturebeat.com/2020/04/09/microsoft-teams-ai-machine-learning-real-time-noise-suppression-typing/