WebRTC(网页实时通信),作为一个支持网页浏览器进行实时语音或视频对话的开源技术,解决了互联网音视频通信的技术门槛问题,正逐渐成为全球标准。

过去十年间,在众多开发者的贡献之下,这项技术的应用场景越来越广泛和丰富。在人工智能时代,WebRTC 将走向何方?本文主要分享 WebRTC 与人工智能技术结合的相关方向及融云的创新实践( 融云全球互联网通信云 服务号了解更多)。

WebRTC+人工智能,
让声音更真切、视频更高清

人工智能技术在音频和视频方面的应用越来越来广泛,在音频方面,人工智能技术主要用于噪声抑制(noise suppression)、回声消除(echo removal)等;在视频方面,人工智能技术则更多用于虚拟背景、视频超分辨率等。

AI语音降噪

语音降噪已经有多年历史,最早常使用模拟电路降噪方法。随着数字电路的发展,降噪算法代替传统模拟电路,大大提升了语音降噪的质量。这些经典的算法都基于统计理论估计噪声,能够将稳态噪声消除得比较干净。对于非稳态噪声,如敲击键盘、桌子的声音,马路上车来车往的声音,经典算法就显得无能为力了。

AI 语音降噪应运而生,它基于大量语料,通过设计复杂的算法,结合持续的训练学习而成,省去了繁琐而模棱两可的调参过程。AI 语音降噪在处理非稳态噪声时有着天然优势,它能识别非稳态数据的特征,有针对性地降低非稳态噪音。

回声消除

回声是由于扬声器放出来的声音经过衰减和延时后又被麦克风收录产生的。我们在发送音频时,要把不需要的回音从语音流中间去掉。WebRTC 的线性滤波器采用频域分块的自适应处理,但并没有仔细考虑多人通话的问题,非线性回声消除部分采用维纳滤波的方法。

结合人工智能技术,我们可以基于深度学习方法,采用语音分离方式,通过精心设计的神经网络算法,直接消除线性回声和非线性回声。

虚拟背景

虚拟背景依托于分割技术,通过将图片中的前景分割出来,对背景图片进行替换得以实现。主要应用场景包括直播、实时通讯、互动娱乐,涉及到的技术主要包括图像分割和视频分割。典型的实例如图 1 所示。


(图 1 上图黑色背景替换为下图紫色背景)

视频超分辨率

视频超分辨率是将高糊视频变清晰,在带宽受限、码率较低的情况下,传输较低质量的视频,然后通过图像超分辨率技术还原成高清视频,这一技术在 WebRTC 中具有重要意义。典型的图像如图 2 所示。在带宽有限的情况下,传输低分辨率的视频码流,依然可以获得高分辨率的视频。

(图 2 原始低分辨率图像 vs 处理后的高分辨率图像)

融云的创新实践

WebRTC 是一个开源技术栈,想真正在实际场景下做到极致,还需要进行大量的优化。融云结合自身的业务特点,对 WebRTC 音频处理和视频压缩部分源代码进行修改,用以实现基于深度学习的音频噪声抑制和视频高效压缩。

音频处理

除了 WebRTC 原有的 AEC3、ANS 和 AGC 外,针对会议、教学等纯语音场景,融云加入了 AI 语音降噪模块,并对 AEC3 算法做了优化,大大提高音乐场景下的音质。

AI语音降噪:业界大都采用时域和频域的 mask 方法,结合了传统算法和深度神经网络。通过深度神经网络估计信噪比,可以计算出不同频段的增益,转换到时域后,再次计算一个时域的增益,最后应用到时域上,可以最大限度消除噪声,保留语音。

由于深度学习语音降噪模型过多采用 RNN (循环神经网络),所以语音结束一段时间内,模型依然认为有人声存在,拖延时间太长以至于语音无法掩蔽掉残余噪声,导致语音结束后短暂的噪声。融云在现有模型的基础上添加预测模块,根据语音幅度包络和 SNR 下降程度,提前预测到语音的结束,消除在语音结束时能够察觉到的残余噪声。

(图 3 优化前的噪音拖尾)

(图 4 优化后没有噪声拖尾)

视频处理

在 WebRTC 源码中,视频编码部分主要采用了开源的 OpenH264、VP8、VP9 并重新封装成了统一的接口。融云通过修改 OpenH264 源码完成背景建模和感兴趣区域编码等任务。

背景建模:为了完成实时的视频编码,将背景建模的处理放在 GPU 上十分必要。经过调研发现,OpenCV 中的背景建模算法支持 GPU 加速。实际操作中,我们将摄像头等采集设备获取的原始 YUV 图像转成 RGB 图像,再将 RGB 图像送入 GPU 中。然后,在 GPU 中获取背景帧并将其从 GPU 转移到 CPU 中。最后,再将该背景帧加入到 OpenH264 的长期参考帧列表中,用于提高压缩效率。流程图如图 5 所示。

(图 5 背景建模流程图)

感兴趣区域提取:感兴趣区域编码部分实现采用了 yolov4tiny 模型,进行目标检测以及与背景建模提取的前景区域融合。部分代码展示下图 6 所示。网络加载后,选择 cuda 进行加速,输入图像设置为 416*416。

(图 6 将网络加载到 GPU 的部分程序)

视频编码在 WebRTC 上的实验效果:为了验证效果,我们采用 WebRTC 中的 videoloop 测试程序对修改的 OpenH264 进行测试。图 7 为摄像头现场采集的视频,选用 1920*1080 分辨率进行背景建模的效果。图 8 为输出的结果,WebRTC 为了保证实时性,会抛弃由于各种原因未在设定的时间内实际编码的帧。图 8 显示,我们采用的算法没有消耗很大的编码时间,没有使编码器产生被抛弃的帧。

(图 7 当前帧和背景帧)

(图 8 编码器的实际效果)

总结而言,在音频方面采用基于人工智能的降噪处理,可以显著提高现有语音通话的体验,但是模型预测还不够精准,计算量相对较大。随着模型的不断完善优化,数据集的不断扩大,AI 语音降噪技术一定会为我们带来更好的通话体验。在视频方面,采用背景建模技术将背景帧加入到长期参考帧列表中,有效地提高了监控类场景的编码效率,采用基于目标检测和背景建模以及高效的码率分配方案提高视频感兴趣区域的编码质量,有效地改善了在弱网环境下人们的观看体验。

技术更迭步履不停,我们已经迈入了全面智能化时代。人工智能技术深度应用于各类场景,在音视频产业领域,先进技术与 WebRTC 相结合,亦是前景广阔。服务优化永无止尽,融云将继续紧跟科技趋势,不断对创新科技进行积极探索,并将其沉淀成为可供开发者便捷使用的底层能力,长期赋能开发者。

如何用人工智能技术优化 WebRTC 产品(内附具体方案)相关推荐

  1. 如何应用人工智能技术优化改进软件工厂流水线,这方面有什么示例

    人工智能技术可以应用于软件工厂流水线的优化改进,比如可以使用自然语言处理技术来改善软件开发流程,使得开发者可以更有效的管理他们的代码:还可以使用机器视觉技术来检测软件产品在流水线中的质量:此外,还可以 ...

  2. 人工智能技术及项目产品开发流程

    人工智能作为当下最热门的行业之一,不管是高考的专业选择中,还是各行各业的工作中,基本都会听到人工智能这个词,主要原因就是社会上各行各业对人工智能的需求越来越大了.在国内,从2015年开始,人工智能技术 ...

  3. 宅米网性能优化实践(内附小强点评)

    背景介绍 宅米是一家专注校园电子商务的互联网企业,目前主营校园超市O2O.公司成立于2014年11月,仅仅一年多的时间,公司即经过4轮融资,覆盖近200座城市,1000多所大中专院校,10000多栋宿 ...

  4. 找工作的程序员应该这样优化简历【内附120套优质简历模板】

    <花千骨>一剧,白子画为什么收花千骨为徒? <琅琊榜>中,梅长苏为什么选靖王而弃太子.誉王? <泰坦尼克号>里,杰克和露丝为什么会一见钟情? 王子基特为什么会选择灰 ...

  5. 人工智能之BP人工神经网络C语言实现内附实现代码

    原文:https://www.shanyemangfu.com/bp-c.html 人工智能现在还是十分火热.说到人工智能,那就必须提到AlphaGo的事情.这样就可以引出神经网络了.BP神经网络是最 ...

  6. 人工智能技术对专利制度的挑战与应对

    来源:上海市法学会 内容摘要 人工智能技术作为人类的一项发明创造,本身具备了一定的创造力.无论是专利法治实践还是理论研究均无法否认,在弱人工智能时代,人工智能技术兼具发明创造工具和发明创造方案的提供者 ...

  7. 《人工智能技术在网络安全方向的应用》学习笔记

    人工智能技术在网络安全方向的应用 摘要: 网络安全态势感知模型由态势要素提取.态势理解和态势预测组成,安全态势预测是整个安全态势感知模型中最高层次的技术,对网络安全的防御有着重要的作用.该技术与实现人 ...

  8. 人工智能技术在信息技术教学中的使用

    自20世纪50年代以来,人工智能技术日渐成熟,使中小学信息技术课程能够充分适应信息化时代.智能化时代发展需要.人工智能技术在教育领域内的应用,引起了各方高度关注与重视.人工智能技术将会给信息技术课堂注 ...

  9. 京东无人超市的成长之路 | 如何利用人工智能技术在零售业做产品创新?

    随着消费及用户体验的需求升级.人货场的运营效率需求提升.人工智能技术的突破以及零售基础设施的变革等因素共同推动了第四次零售革命的到来,不仅在国内,国外一线巨头互联网亚马逊等企业都在研发无人驾驶.无人超 ...

最新文章

  1. 黑鹰ASP教程(全部)下载
  2. centos7 安装无线工具包wireless-tools 包含 iwlist,iwconfig命令
  3. 【独家】手环新玩法,北京一卡通推出“刷刷手环”每天5000步每月返10元
  4. LVS之VS/NAT搭建web集群实战!!!
  5. 保驾护航金三银四,100%好评!
  6. 微服务架构模式下配置管理
  7. 解读ASP.NET 5 MVC6系列(13):TagHelper
  8. 如何掌握mysql的查询语句_如何分析mysql的查询语句
  9. 计算机主机技术标准规范,数据中心机房建设,需要依据哪些国家标准和行业标准或规范?...
  10. 【控制】动力学建模举例 --> 拉格朗日法
  11. mysql 判断语句_mysql条件判断语句讲解
  12. 重载(Overload)和重写(Override)的区别?
  13. 【我的新书】一步一步学SpringBoot 2:微服务项目实战
  14. 九八寒露——HRBUST OJ 1269 小把戏
  15. 熬秃了头整理的网络工程师学习笔记和心得:传闻中的OSPF到底是什么
  16. 在IDEA中集成Jenkins插件 解决Missing or bad crumb data异常
  17. PHP单例模式与常驻内存
  18. 如何无线接收服务器封包,大大通|如何抓取802.11a/b/g/n/ac 的无线网络封包
  19. python2的socks5代理 文件上传
  20. 如何执行代码走查活动才会有效呢

热门文章

  1. 为什么引入ReLU激活函数
  2. 【Linux】如何杀掉defunct进程-僵尸进程
  3. [Unity学习笔记:FPS游戏制作(3)]子弹拖尾,碰撞与枪口火焰效果
  4. CTP开发(2)行情模块的开发
  5. dcam matlab,matlab – 如何更改相机参数(自动曝光,快门速度,增益)?
  6. 断言(assert)的用法
  7. linux yum 安装命令包
  8. UNI’S ON AIR资源提取方法
  9. 为sketch数据集生成txt文本,并自定义Dataset
  10. 【社区图书馆】读《悲惨世界》有感