您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

声网Agora:游戏的语音通话解决方案

2016-06-27 16:22:27   作者:   来源:CTI论坛   评论:0  点击cti:


  随着手机性能的提高,手游开始向复杂化发展。不再是以消消乐这种简单的小游戏为主,RPG、实时对战类游戏开始变火。
  这种游戏,由于有玩家间的交互,有团队作战、配合,保证玩家能够进行实时语音通话,成为极大的需求。
  本文将说明游戏语音通话的难点在哪?
  现在的游戏语音通话解决方案存在什么问题?
  目前有两种解决方案:
  1、第三方通话APP
  这种方案,第三方的APP独立在后台运行,比如YY语音手机版。这种方案存在两个问题:
  • 音效和语音的音量无法控制在一个合理比例,无法统一调节;
  • APP在后台运行,会自己关闭,或者掉线。
  • 对手机性能要求很高,容易增加耗电量,造成手机发烫。
  2、集成在游戏APP里的语音功能。
  这种方案存在的问题是:
  由于适配问题,安卓机型上游戏音效会被对方听到,或者说话会有回声。
  游戏语音通话方案最注重什么?
  1、游戏玩家最关心游戏语音的实时性。
  高对战游戏处处要求快,要求低延时。网游中,团队下副本,最影响团队成功率的就是加血的角色。一旦这个人加血加慢了,导致一个人牺牲。在激烈的时候,损失一个人的代价基本就宣判团队的死刑。
  从技术的角度而言,要求的不是加血快,是加血的流程快。我们之前和强大的竞争对手竞争PC上游戏通信软件地位的时候,是什么案例让我们活下来,就是一个加血的案例。我们用对手的软件,队友说,加血,加血。结果等了1s~2s才传到保姆那里。可想而知,血还没加,就挂了。而用我们的软件,加血成功的概率提高了几倍几十倍。就算跨国玩游戏,我们延时也不过百毫秒。所以当时,玩家像爱惜枪一样爱惜、使用我们的软件。
  2、游戏厂商最关心的是占用系统资源量和耗电量
  游戏厂商如果选择语音通话SDK集成方案,那么SDK占用系统资源量和耗电量会起到很大的影响因素。SDK编解码器、前后端处理性能差,造成手机CPU、内存吃紧,会影响游戏体验,游戏卡,让手机发烫,导致手机耗电量增加。这对一个游戏来说,是致命的硬伤。
  这些恰恰是声网Agora音视频引擎通过多年研发和技术积累能给大家提供的技术特性和产品特性。声网Agora。io实时云技术团队,曾经提供10亿分钟每天的运营支撑,最多180w人同时在一个频道内实时视频直播服务。并且可以提供多声道甚至带有垂直声道的音频音效系统。并提供“军用”级的低延时传输系统。通过这些来助力VR游戏实现通信和直播的业务需求。
  接下来,就以声网Agora.io的语音通话SDK为例,说明SDK解决方案如何解决这些问题。
  声网Agora.io是如何做的
  通常整套的实时云通信系统概述下来包括后台技术、客户端技术和运维技术等等。
  全高清音频通信系统,首先要怎么搭建这样一个系统,通常搭建一个最小音频子系统分成下面几个步骤:
  1、采集播放。如果把采集的数据存成文件,或是交给播放,就形成一个闭环,我称他为第一闭环,也可以称为ADM(audio device module)。
  2、编码解码。只有采集播放还不够,数据量太大,还要加上编码解码,进行数据压缩,采集压缩后的数据再解压缩播放,我称他为第二闭环,加上的这个编解码模块叫作ACM(audio coding module)。
  3、网络模块。实现网络发送接收,ANM(audio network module),我叫他第三闭环。
  4、前后处理模块。也就是第四闭环,Audio Processing module。这个模块主要实现3A引擎:回声消除AEC,增益控制AGC,噪声抑制ANS。
  1.回声消除
  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怎么做的呢,Agora的回声消除技术,发展到今天,已经是第四代回声消除技术。
  声网Agora的第三代回声消除技术,通过逐个机型的适配。累计适配了几百款机型,而我们的第四代“免”适配技术保证我们实现4000款机型的适配。
  声网Agora的“免”适配,免带一个小引号。声网Agora的免适配和适配相互配合,适配的机型,效果更好。不适配的机型是公版算法,基本也没有大问题,一般不会出现整句回声。只会间或的出现小回声,比如2分钟1次,或是10分钟1次的残留回声。很小的回声也会有,不想适配过的手机,你完全听不到回声。适配的机型,声网Agora有整套测试方法验证;免适配的机型,声网Agora依靠线上数据的反馈,判断“免”的效果。也正是依赖声网Agora线上数据的反馈,才能做到“免”适配。
  如果线上数据反映效果不好,声网Agora会尝试联系用户和采购机型进行适配。正是因为声网Agora充分适配了足够多的机型,接触过各式各样的回声消除技术和历史才有这个把握掌握开发进阶技术。如果“免”适配技术无法满足,立刻有适配技术补上。结合声网Agora网络传输的优势,“免”适配和适配互相配合,助力声网Agora实现很好的回声消除效果。当然回声消除只是我们APM引擎的一部分。在APM里,还有降噪技术,单麦克降噪双麦克降噪,声网Agora在个别机型上开启了双mic降噪功能。
  2.测试评估
  声网Agora的评估体系有三个层次:
  第一层次,客观测试。我们把手机出厂测试和VOIP测试相结合,提出了我们的测试方法、这个测试方法是ITU、3GPP、ETSI或是电信运营商要求测试的标准通信测试的交集。按照这套方法,我们经常会去泰尔实验室做客观测试。国内我们是第一个互联网厂家把这套测试用在云服务标准上的。
  第二个层次,主观测试。因为客观测试只是一个基本测试,很多手机出厂都做,但是出厂之后还是有很多很多问题,尤其对我们这样的全平台多机型通信引擎,只做客观测试是不够的,所以我们定义出很多细的标准,比如,声音质量、卡、失真、回声情况、双讲情况、是否有切音、延时等等。安排测试人员,对海量机型,逐个机器逐个机型的去听,去感受我们音频的效果。
  第三个层次,线上测试。也就是线上用户的使用反馈,我们两个DemoAPP,一个就是我们的Beckon,可以在AppStore搜索到,这个APP是我们用来做实验和演示的。用户可以体验Beckon的效果,我们收集用户的反馈,判断我们音频系统的质量。
  通过这三个层次的测试,我们能保证提供最好的音频通信引擎。高清音频通信引擎,整个通信系统都是32khz音频采样频率,对系统的ADM,APM,ACM,ANM要求的处理算法都针对32Khz。我们比通信标准更早的把32Khz代入实际应用,今天VoLTE还没有普及全高清音频传输系统,而我们做到了。
  本文作者:
  高泽华,11年音乐语音编解码学习经验。理解几十种音频编解码标准。先后在中磊电子、士兰微电子、虹软科技主导音频项目。任职YY期间负责语音音频技术工作。对音频算法在芯片设计、嵌入式系统、桌面软件。在互联网应用和专利分析方面有多年研发经验和积累。目前负责声网Agora。io的音频开发工作。

专题