-01-
ORTC简介
首先简单介绍一下ORTC:它是OPPO实时音视频平台,是OPPO万物互融战略下的重要基础设施,面向终端和业务提供音视频实时通信基础能力。ORTC目前支持视频会议、视频通话、云游戏、云渲染等产品。
ORTC架构分为两部分,端侧和服务侧。端侧包括APP层、SDK层、核心库,以及系统层和硬件层。服务端分为业务服务器和ORTC服务器:业务服务器主要管理如认证、监控和调度等;ORTC服务器主要有信令服务器、媒体服务器,以及STUN、TURN、MCU和网关服务器等。所有这些服务器都是基于OPPO混合云架构之上的微服务。
接下来通过一个应用场景介绍ORTC交互流程。
如图是一个点对点视频通话场景,业务管理服务器用于资源分配,信令服务器用于链路建立以及SDK协商,媒体转发服务器用于媒体流收发。
ORTC作为一个PaaS平台,不只提供简单的应用,还可以进一步扩展,它是对开发者开放的。此外,作为OPPO三大战略之一的潘塔纳尔系统也是借助PRTC来实现原厂互联通信能力的。
-02-
AI=>ORTC
接下来我们看AI能够从哪些方面给ORTC带来惊喜的呢?
我们知道,RTC的核心要素包括音频、视频和网络传输。接下来我们从这三个方面分析AI师如何促进ORTC能力跃迁的。
首先是音频部分。在RTC交互过程中,音频处理的上行流程包括音频采集、音频前处理、压缩编码、RTP封包和弱网对抗。在前处理和弱网对抗部分都可适当引入AI。在云端还包括合流转码和云端增强。在下行部分中,AI也可以发挥很大的作用。
接下来就从音频前处理的几个常用场景介绍下。
首先是AI语音降噪。AI降噪基于大量语料练习,应用深度学习技术,实现将人声和噪音分离,有效抑制环境中的各种噪音。在这个过程中,我们所做的主要包括模型训练以及算法执行。 在模型的训练过程中,需要对含噪语音进行前处理、 短时傅里叶变换,经过深度学习网络后,得到增强语音,再将增强语音与干净语音输入到损失函数模块,得到损失值来指导模型更新,直至收敛。在这个过程中,对于降噪效果的指标衡量,取决于训练目标和损失函数。 常用的训练目标包括掩码类和映射类。掩码类描述了干净语音与噪音之间的时频关系,包括基于幅度的理想二值掩码等;映射类通过训练神经网络模型直接学习带噪语音和纯净语音之间的映射关系,包括频谱映射和波形映射。 有了训练目标后,再叠加损失函数,如MSE、SDR、PESQ等,最终使模型得到很好的收敛。
在网络模型方面,CRN是融合了卷积和循环神经网络的一种网络模型。在此基础上,DCCRN融合了复数卷积概念,ORTC正是基于此模型进行语音降噪的。 下一步的演进过程需要考虑分场景进行。因为有些降噪算法的引入会增加功耗和复杂度,我们会综合运用传统WebRTC降噪、DCCRN降噪以及基于视觉辅助的AI降噪(视觉语音降噪是利用视觉信息,如嘴唇运动,把跟目标声音相关的背景人声过滤掉)。
回声包括线性回声和非线性回声。 在进行回声消除时,首先进行延迟估计(将参考信号和麦克风信号对齐),然后做一个线性自适应滤波器(去除线性回声),第三步是非线性处理(抑制残留噪声)。 AI回声消除是通过语音分离方式,基于长短记忆模型(LSTM)和卷积神经网络(CNN)进行回声场景的算法建模,直接消除线性回声和非线性回声。 训练策略包括频谱映射、波形映射、掩码和时域。
ORTC视频端到端处理流程如图所示。在流程中,AI算法的应用场景还是很丰富的。
基于此,OPPO提供了基于“云-端-芯”的三层架构和“端云协同部署,端芯加速计算”的技术方案,为移动业务提供安全快速的端侧能力。 AIDeploy是云端AI部署平台,为端侧AI能力提供线上部署更新和运行监控能力,通过异常预警和用户行为分析持续演进算法能力,从而增强端侧AI服务,为用户带来更好的体验。 AIUnit是端侧AI能力平台,基于自主创新的双驱引擎架构,可以自由部署各种算法模型,为App提供轻量API可快速集成AI能力。 AIBoost是AI算法加速框架,结合ColosOS系统调度和硬件计算,提供模型加速、异构计算、推理转换等能力,支持TensorFlow、Pytorch等算法框架。
在实时视频交互过程中,会遇到视频过暗、过淡、抖动等需要处理的场景,很多AI算法也已支持解决此类问题。在ORTC视频增强架构中,CameraUnit SDK实现层提供了AI算法的能力接入,在视频前处理如抖动、美颜、视频增强等做能力提升。
在视频前处理中,美颜主要使用双曲线磨皮和高低频磨皮。 双曲线磨皮通过Y通道求高反差,进行RGB通道提亮和压暗处理,最后进行图像融合。此方法在磨皮程度的度量和处理色块上都有一定的缺陷和局限性。 于是,我们针对高低频磨皮进行了一些改进。首先对图像进行滤波,生成中间结果,利用图像的方差图来反映图像的频率分布,将图像划分为不同频段的区域并为其设置不同的权重,根据相应的权重将原图和滤波后的图进行融合叠加。 在此过程中我们也遇到了一些问题,例如中高光压制过多导致图像通透性差,对应的解决方案是细化分频区域,减小对高光的压制。另外,针对图像锯齿和小人脸效果不佳的问题,我们通过降低缩放尺度或不缩放以解决此问题。
接下来介绍在RTC处理过程中的自适应编码部分,AI带来了哪些提升。 RTC系统中最大的成本在于带宽,而带宽和清晰度是相辅相成的。一方面希望节省带宽成本,另一方面希望传输高质量图像,这是不可兼得的。那如何在有限带宽的网络环境中,实现更清晰、更低成本的视频传输呢?我们提出了窄带高清的需求。 在窄带高清的要求下,比较常用的是内容感知编码,即对视频帧进行感知分析,识别出感兴趣区域,预测最佳编码数据,实现基于场景复杂度的智能感知编码。这里的关键在于ROI即感兴趣区域的识别,引入ROI视频编码后,就变得比较容易。 我们在SDK接入层提供ROI封装能力,三方通过接口调用硬件平台提供的底层ROI编码 功能。
图像超分在端侧和云端都有实现机会,可以在低带宽情况下实现更高质量的图像。目前ORTC视频超分的AI应用主要在服务侧,稍后在架构部分会进一步讲解。
在网络传输部分,AI可以带来哪些提升呢?目前包括几个方面:
WaveNetEQ,即一种改进版的PLC系统,用于语音合成的递归神经网络模型,能更好解决音频丢包问题;
基于神经网络的自适应传输;
基于强化学习的拥塞控制算法;
基于RNN的丢包恢复;
-03-
ORTC=>AI
在端侧无论如何优化,都会有一些AI无法克服的困难,比如计算复杂度过高、训练数据集不足、模型普适性差、无法应对大规模应用等。这些端侧的痛点,可以利用ORTC低时延、高保真的特性来解决。
基于此,我们提供了ORTC和AI融合的架构,可以有效借助开发框架引入AI算法服务。例如,在对实时性要求较高的场景,可以借助云端虚拟SDK引入流辅助AI做分析处理;如果是对帧率要求高、时延要求不高的场景,可以借助平台分发实现AI算法服务进行流转发。
在语音分析和自然语言处理方面,ORTC可以补充AI在实时语音翻译/字幕、实时变声、对话机器人等方面的能力。另外,基于ORTC SDK通道的能力,我们还可以做一些较复杂的场景运用,如远程听诊。用户和医生之间不仅可以实时通话,同时还可以借助同一个通道传输高保真音频。
在视频分析及处理方面,ORTC可以在远程活体检测、数字人驱动建模、辅助驾驶、远程心率测量等场景帮助AI落地。
-04-
ORTC与AI融合
接下来介绍AI和ORTC之间融合的一些实践探索。
在RTC云端AI处理关键流程中,视频和音频基本可以实时处理(端到端500ms内),同时视频超分在云端利用GPU进行计算之后,可以对视频图像做增强,然后回流到ORTC中。
在ORTC融合AI架构中,ORTC可以让AI算法得到很好的实践落地,如前述提到的借助ORTC可以实现流的分发,或实现AI对图像实时的抽帧和流转发流程处理。同时,视频处理后的智能流可以很好反馈回流到ORTC系统中去。
以背景建模场景为例,AI不仅可以使网络传输质量得到很好的提升,对背景区域进行虚化,还可以保证隐私。此外,我们还可以把通过背景建模算法提取到的背景帧作为长期参考帧,以提升抗弱网的能力。
基于ORTC和AI的相互作用,我们还做了很多的探索和实践,例如图示的实时音视频多模态分析。
此外,在元宇宙场景也有相关探索,例如多模态驱动虚拟数字人,以及云渲染+ORTC串流。
我的分享就到这里,谢谢!
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !