高泽华,11年音乐语音编解码学习经验。理解几十种音频编解码标准。先后在中磊电子、士兰微电子、虹软科技主导音频项目。任职YY期间负责语音音频技术工作。对音频算法在芯片设计、嵌入式系统、桌面软件。在互联网应用和专利分析方面有多年研发经验和积累。目前负责声网Agora.io的音频开发工作。
高泽华在GMIC2016(全球移动互联网大会)发表了演讲,以下是演讲全文。
首先,我们来看看什么是VR游戏需要什么?VR是一个很大的概念,我尝试在一两个点上去理解它的需求。
第一,VR视频的网络传输,需要高并发高容量的实时网络支持。
去年受我们同事,前Facetime视频技术架构师楼剑先生的引荐,到他的老师虞露教授的实验室参观。当时虞露老师给我们展示了72路视频输入的True 3D Video Coding技术。通过多路视频编码和后处理技术,可以实现视频的任意角度观看视频,任意放大缩小视频也不会失真。我个人呢,是NBA球迷,当时我就想,这要是用在赛事直播上,并能互动选择视角和方向,简直太酷了。而实际上,我们的CEO 赵斌先生认为,都说现在网络带宽冗余,家家都是光纤到户,但是如果真正的VR实时视频在网络上传输,即使只传差额信息,带宽还是远远不够用的。
我对VR的第二个理解是,VR对音频的要求提高了。今年3月,我参加了清华的窦唯蓓老师召集的中国音频VR技术需求研讨会,这是国内第一次召开VR音频的相关会议。可以说音频VR压缩处理传输在中国还是刚刚起步,实际应用也非常缺乏。与会的专家认为,VR给音频提出很大挑战,一个设计错误的VR音频系统,不仅会使得临场感急剧下降;错误的声音定位,也会导致人的眩晕感。所以,在VR音频处理上,需要多声道,低延时的实时音频通信系统。
谈完VR,我们再谈谈游戏。这两年游戏直播非常火。3年前我们给游戏提供直播和通信技术服务的时候,游戏主播还是靠直播中卖零食赚钱。这两年不一样啦,估计好的游戏主播收购几个零食生产商是问题不大啦。但是我们不眼红,让有才艺的人去赚大钱,让有才能的人来提供最好技术服务,一直是声网Agora.io的宗旨。一个游戏屏幕视频转发,两个游戏主播和海量观众实时互动沟通,是游戏直播的标配。
除了游戏直播,还有游戏对战。今年,我认为将是手机游戏互动元年,无论是《王者荣耀》,还是小米游戏的《CK公正对决》都是把PC游戏的实时对战搬到手机上。而这些实时对战,团战游戏,通常花了极大手笔用于音效制作,力图给游戏玩家强烈的临场感。但是不同于PC,手机音频系统像是一个拦路虎,给手机互动音频开发提出了极大的困,一旦开启实时通信,游戏音效将受到极大损伤。
在实时游戏语音通信中,游戏玩家最关心游戏语音的实时性。天下武功,唯快不破。高对战游戏处处要求快,要求低延时。我个人不太玩游戏,但是3年前在广州工作的时候,我有幸认识一个女玩家,我问她网游中什么角色最容易上手最好玩。她说不知道,但是她知道什么角色最不容易上手、最难用。那就是负责给团队加血的那个角色,因为他要给及时团队的每个人加血,是他们的保姆。一旦这个人加血加慢了,导致一个人牺牲。在激烈的时候,损失一个人的代价基本就宣判团队的死刑。所以,加血的角色最容易挨骂。对配合要求也最高,通常不会换。其实,他们要求的不是加血快,是加血的流程快。我们之前和强大的竞争对手竞争PC上游戏通信软件地位的时候,是什么案例让我们活下来,就是一个加血的案例。我们用对手的软件,队友说,加血,加血。结果等了1s~2s才传到保姆那里。可想而知,血还没加,就挂了。而用我们的软件,加血成功的概率提高了几倍几十倍。就算跨国玩游戏,我们延时也不过百毫秒。所以当时,玩家像爱惜枪一样爱惜、使用我们的软件。
说了这么多,VR Game到底需要什么,我们可以总结一下,
高容量、高可靠网络、互动游戏直播、多声道音效、低延时这些恰恰是声网Agora音视频引擎通过多年研发和技术积累能给大家提供的技术特性和产品特性。声网Agora.io实时云技术团队,曾经提供10亿分钟每天的运营支撑,最多180w人同时在一个频道内实时视频直播服务。并且可以提供多声道甚至带有垂直声道的音频音效系统。并提供“军用”级的低延时传输系统。通过这些来助力VR游戏实现通信和直播的业务需求。
那么下一个问题来了,声网Agora.io如何做到这些的。
声网Agora.io如何做到这些通常整套的实时云通信系统概述下来包括后台技术、客户端技术和运维技术等等,我暂时没法从头到尾把声网Agora.io的全部技术特性给大家一一介绍。一方面,有些部分我不够专业,专业人做专业事一直是声网Agora.io的宗旨。今天我给大家带来的是:
声网实时云的全高清音频通信系统
提到全高清音频通信系统,首先要怎么搭建这样一个系统,通常搭建一个最小音频子系统分成下面几个步骤:
第一步,采集播放。如果把采集的数据存成文件,或是交给播放,就形成一个闭环,我称他为第一闭环,也可以称为ADM(audio device module)。
第二步,编码解码。只有采集播放还不够,数据量太大,还要加上编码解码,进行数据压缩,采集压缩后的数据再解压缩播放,我称他为第二闭环,加上的这个编解码模块叫作ACM(audio coding module)。
第三步,网络模块。实现网络发送接收,ANM(audio network module),我叫他第三闭环。
第四步,前后处理模块。也就是第四闭环,Audio Processing module。这个模块主要实现3A引擎:回声消除AEC,增益控制AGC,噪声抑制ANS。
1)回声消除在ANM,APM,ACM,ADM四个模块中,每个模块都有很多要考虑的细节。虽然现在有了WebRTC,好像WebRTC把这一切都解决了。但是事实真的是这样的吗?不是的。我从2008年开始接触WebRtc,过去的几年内。几乎每个月都有人问我这样一个问题:大牛,怎么做回声消除,你的回声消除模块卖吗?2014年我去一家公司拜访,他就私下找我买AEC模块,今年我再去,他们还找我买。就在上周,我的QQ群里还有一个上海的游戏公司找我买AEC模块。为什么回声消除就这么难解决,今天我在这里,稍微分享一下我的理解,希望大家以后不要在软件回声消除的层面尝试购买什么回声消除模块。
AEC只是3A引擎的一部分,是很重要的一部分,为什么第一个问题就是它。因为拿起电话,除非你打不通,打通了,不管质量怎么样,声音一出来就是回声,我在音频行业做了11年,说长不长说短不短,深知国内公司做音频通常有个一很好的标准,“出声就行”。但是没有回声消除,你出声就是噪声,最基本的底线都满足不了。
那么,是什么问题困扰我们这么久,它就是回声,准确说是声学回声。自己的声音传到远端再通过远端的麦克风录音传回来,就是回声。回声从信号特性上看,有线性部分和非线性部分。回声消除就是要通过信号处理算法消除这些回声,消除回声的线性部分和非线性部分。有电话的年头就有回声,早期是线路回声,都是线性的,很好处理,一个自适应滤波器,搞定了。
回声消除的算法算算也有几十年了,为什么今天还要研究?不是搞定了吗,一个自适应滤波就搞定了。不是的,回声问题和设备紧密相关。一个回声消除算法的设计实现和其他算法设计实现有很大的区别,因为它和设备紧密相关,和系统状态紧密相关。早期,GIPS和某些AEC算法提供公司,通常设计AEC模块的时候,都是给固定电话和移动电话设备设计,是给定的一款设备,也就是说,芯片厂商设计公版硬件,找合作伙伴或是自己设计AEC模块,然后针对该款设备调试AEC参数,调好之后就不变了,以后所有该款设备的出货都用这组参数,一旦换了设备,软件要重新调。当初GIPS,SpritDSP就是做这些事情的公司。如果有人参与过手机出厂的回声消除设计,你就知道每款手机的回声消除参数都不同。
那么为什么回声消除为什么和手机设备关系这么大呢?是信号特性决定的,回声是声音经过扬声器传导到mic,经过了多少路径就被处理多少次。通常手机由于声腔的原因,没办法设计的音量很大所以当你放大音量的时候,如果是10格调整的音量放大器,前5格还是线性放大,5格以上就是非线性放大,这是扬声器第一级处理。声音从外部传给mic,经过空气和手机壳,设备壳的特性的传导作用产生第二级的非线性影响。不同的手机壳,铁壳,塑料壳,甚至手机壳发热导致声传导特性不一样,都会影响声音传导的处理,导致回声消除算法不一样。我们就遇到过,一套收回声消除算法,换不换壳,就能决定工不工作。这是手机。还有pc,如果pc外接音箱,音箱一般多少都会自带功放,又是非线性放大。设备mic的位置也紧密相关,早期有一款thinkpad,mic和speaker离的非常近,极其难处理。谈来谈去,好像都是非线性放大的问题嘛,是的,线性的东西是科学,非线性的东西是艺术。可以说,设备的差异性导致非线性问题,非线性信号的处理是回声消除技术的第一个拦路虎。
非线性回声问题是不是全部呢?不是的。我前面说了,回声消除除了和设备有关,还和系统有关和系统有什么关系,回声消除两大模块,自适应滤波和非线性处理,一个是线性处理,一个是非线性处理。前面说了非线性处理,线性处理部分还有问题,自适应滤波前置第一个模块就是延时搜索,其实WebRtc本身的延时搜索技术是非常先进的,是由这个领域的大牛Keilgn大师设计的专利技术。但是大师东西虽好,但是有个依赖,延时估计要在一定范围内估计,就是要有一个预先设计的值,如果在一个很大的范围内搜索,会极大消耗CPU资源。而这个预设的delay值通常不准,为什么不准呢?因为安卓系统线程调度设计不是很实时导致。一旦资源抢占,会在安卓底层buffer产生莫名的延时导致delay不准。还是那个问题,每款手机甚至每个手机都不一样。我们遇到过那种状况,某国内手机品牌,不同款手机delay不准,同款手机不同子款比如(带不带s)。同款手机不同批次,delay不同,同款手机同一批次不同时间测试delay都不同。如何拿到稳定的低延时的声音信号,为此,谷歌专门有个一视频教程。无奈,安卓手机的碎片化和私人裁剪导致这个问题无法一致性解决。
那么声网Agora.io怎么做的呢,声网Agora.io的回声消除技术,发展到今天,已经是第四代回声消除技术。
我们的第三代回声消除技术,通过逐个机型的适配。累计适配了几百款机型,而我们的第四代“免”适配技术保证我们实现4000款机型的适配。有人问,你前面说了那么多设备特性问题,要适配要适配,怎么到这里又不用适配了呢。这不是矛盾吗。我告诉大家,不矛盾。第一,我们的“免”适配,免带一个小引号。为什么,我们的免适配和适配相互配合的,适配的机型,效果更好。不适配的机型是公版算法,基本也没有大问题,一般不会出现整句回声。只会间或的出现小回声,比如2分钟1次,或是10分钟1次的残留回声。很小的回声也会有,不想适配过的手机,你完全听不到回声。适配的机型,我们有整套测试方法验证,免适配的机型,我们依靠线上数据的反馈,判断“免”的效果。也正是依赖我们线上数据的反馈,我们才能做到“免”适配。如果线上数据反映效果不好,我们会尝试联系用户和采购机型进行适配。正是因为我们充分适配了足够多的机型,接触过各式各样的回声消除技术和历史才有这个把握掌握开发进阶技术。如果“免”适配技术无法满足,立刻有适配技术补上。结合我们网络传输的优势,“免”适配和适配互相配合,助力我们实现很好的回声消除效果。当然回声消除只是我们APM引擎的一部分。在APM里,还有降噪技术,单麦克降噪双麦克降噪,我们在个别机型上开启了双mic降噪功能。还有增益控制技术,如何控制音量不会忽高忽低。还有噪声环境下的音质增强等等。时间原因,APM这块,我没法一一展开。
2) 测试评估第二个问题,我分享下我们高清音频通信系统的测试评估方法,我们的评估体系有三个层次:
第一层次,客观测试。我们把手机出厂测试和VOIP测试相结合,提出了我们的测试方法、这个测试方法是ITU、3GPP、ETSI或是电信运营商要求测试的标准通信测试的交集。可以说,按照这套方法,我们经常会去泰尔实验室做客观测试。可以说,国内我们是第一个互联网厂家把这套测试用在云服务标准上的。
第二个层次,主观测试。因为客观测试只是一个基本测试,很多手机出厂都做,但是出厂之后还是有很多很多问题,尤其对我们这样的全平台多机型通信引擎,只做客观测试是不够的,所以我们定义出很多细的标准,比如,声音质量、卡、失真、回声情况、双讲情况、是否有切音、延时等等。安排测试人员,对海量机型,逐个机器逐个机型的去听,去感受我们音频的效果。
第三个层次,线上测试。也就是线上用户的使用反馈,我们两个Demo APP,一个就是我们的Beckon,可以在App Store搜索到,这个APP是我们用来做实验和演示的。用户可以体验Beckon的效果,我们收集用户的反馈,判断我们音频系统的质量。
通过这三个层次的测试,我们能保证提供最好的音频通信引擎。高清音频通信引擎,整个通信系统都是32khz音频采样频率,对系统的ADM,APM,ACM,ANM要求的处理算法都针对32Khz。可以说,我们比通信标准更早的把32Khz代入实际应用,今天VoLTE还没有普及全高清音频传输系统,而我们做到了。