正文
回声消除(AEC, Acoustic Echo Cancellation)
如果说噪音抑制是狼人杀的基础痛点,那么回声消除就是狼人杀差异化的杀手锏。为什么那么说?狼人杀首先是个游戏平台,然后才是社交平台。作为游戏平台,要在轮流发言的杀人游戏环节解决噪音抑制问题,游戏平台的用户体验才能做好;作为社交平台,要在复盘讨论的社交环节解决回声消除问题,社交平台的用户体验才能差异化。然而,回声消除的技术难度十分高。因此,回声消除是狼人杀从游戏走向社交必须要打的硬仗。解决了,就是社交平台;解决不掉,就只是一款游戏。在资本市场上,游戏和社交产品的估值可是天壤之别的。
回声消除可以分为硬件层次的和软件层次的。一般来说,在硬件层次,硬件会做一些基础的回声消除工作。目前的音频终端硬件主要包括 PC(Intel+Windows)、安卓手机、和苹果手机。PC 端没有做回声消除;安卓手机对回声消除做得不好,而且效果参出不齐;苹果手机的回声消除做得相对效果比较好。在软件层次,软件要抹平这些硬件平台的区别,确保在不同平台上回声消除的效果都要良好,都要保持一致。
这里只会简单介绍回声消除的原理,有详细学习需要的同学请自行百度之。从麦克风采集到的声音包括用户近端的有效声音加上近端回声(NE, Near Echo)。回声消除的目的就是要把近端回音消除掉。如果没有任何参考信号,要把近端回音消除掉是不可能完成的任务,软件算法无法区分哪些是有效声音信号,哪些是近端回音信号。
软件算法采用远端回声(FE, Far Echo)作为参考信号来消除回声。虽然近端回声和远端回声不完全相同,但是高度相关,可以通过一个函数来表示:NE=f(FE)。这个函数 f(x) 就是回声路径,表达了远端回声在空气中经过多次反射等环境影响以后如何变成近端回声的。从技术的角度看,回声消除就是要从麦克风采集到的声音中,把 FE 经过回声路径后变成的 NE 消除掉,本质上是对回声路径函数进行求解。
图 1 回音消除的基本原理
回音消除的效果好不好,该如何衡量?有两个指标可以衡量:1)回声有没有消除掉;2)在双讲条件下效果好不好。比较拓扑的说法是,回音消除要么没有消除完全,要么消除过度。如果没有消除完全,就会有回音漏掉;如果消除过度,就会带来失真。
狼人杀的应用场景对回声消除的要求十分的高。在复盘讨论环节,十来个用户同时开着麦克风和扬声器七嘴八舌进行摊牌对讲,十来路的回声,十几个人在抢话。在这种极端的语音环境中,即使在线下进行都有听不清的时候,更何况在线上进行。因此,回声消除是对狼人杀十分有挑战的技术。
低延迟
关于语音视频通讯如何做到低延迟,笔者已经在雷锋网发表过的一篇技术专栏文章中做了详尽的探讨。请参照雷锋网的文章,这里就不再展开论述了:
“为了互动直播,如何让直播技术实现低延迟?”
狼人杀语音视频云的系统架构和直播云的系统架构比较接近,可以通过下图来展现。
图 2 即构科技狼人杀音视频多路连麦系统架构
要降低语音视频通讯的延迟,要从三个方面入手: