在视频或者音频通话过程中,一方面为了减小原始声音数据的传输码率,需要进行音频压缩,另一方面为了得到更高质量的音质,需要进行音频处理。那么,如何处理好这两方面,保证声音传播的高真性?本篇文章将会结合网易云信在音视频技术方面的实战和经验,小议音频处理与压缩技术。

推荐阅读:

视频私有云实战:基于Docker构建点播私有云平台

《高清音质背后:网易云信音乐教学方案技术解密》

音频处理的方法主要包括:音频降噪、自动增益控制、回声抑制、静音检测和生成舒适噪声,主要的应用场景是视频或者音频通话领域。音频压缩包括各种音频编码标准,涵盖ITU制定的电信领域音频压缩标准(G.7xx系列)和微软、Google、苹果、杜比等公司制定的互联网领域的音频压缩标准。(iLBC、SILK、OPUS、AAC、AC3等)。

音频基础概念

在进一步了解音频处理和压缩之前需要知道这些:

(1)音调:泛指声音的频率信息,人耳的主观感受为声音的低沉(低音)或者尖锐(高音)。

(2)响度:声音的强弱。

(3)采样率:声音信息在由模拟信号转化为数字信号过程中的精确程度,采样率越高,声音信息保留的越多。

(4)采样精度:声音信息在由模拟信号转化为数字信号过程中,表示每一个采样点所需要的字节数,一般为16bit(双字节)表示一个采样点。

(5)声道数:相关的几路声音数量,常见的如单声道、双声道、5.1声道。

(6)音频帧长:音频处理或者压缩所操作的一段音频信息,常见的是10ms,20ms,30ms。

音频处理基础

1. 噪声抑制(Noise Suppression)

手机等设备采集的原始声音往往包含了背景噪声,影响听众的主观体验,降低音频压缩效率。以Google著名的开源框架WebRTC为例,我们对其中的噪声抑制算法进行严谨的测试,发现该算法可以对白噪声和有色噪声进行良好的抑制。满足视频或者语音通话的要求。

其他常见的噪声抑制算法如开源项目Speex包含的噪声抑制算法,也有较好的效果,该算法适用范围较WebRTC的噪声抑制算法更加广泛,可以在任意采样率下使用。

2. 回声消除(Acoustic EchoCanceller)

在视频或者音频通话过程中,本地的声音传输到对端播放之后,声音会被对端的麦克风采集,混合着对端人声一起传输到本地播放,这样本地播放的声音包含了本地原来采集的声音,造成主观感觉听到了自己的回声。

回声产生的原理如下图所示

以WebRTC为例,其中的回声抑制模块建议移动设备采用运算量较小的AECM算法,该算法的处理步骤如下图所示。有兴趣的读者可以参考AECM的源代码进行研究,这里不展开介绍了。

3. 自动增益控制(Auto Gain Control)

手机等设备采集的音频数据往往有时候响度偏高,有时候响度偏低,造成声音忽大忽小,影响听众的主观感受。自动增益控制算法根据预先配置的参数对输入声音进行正向/负向调节,使得输出的声音适宜人耳的主观感受。

以WebRTC为例,它的自动增益控制算法的基本流程图如下所示。

4. 静音检测(Voice ActivityDetection)

静音检测的基本原理:计算音频的功率谱密度,如果功率谱密度小于阈值则认为是静音,否则认为是声音。静音检测广泛应用于音频编码、AGC、AECM等。

5. 舒适噪声产生(ComfortableNoiseGeneration)

舒适噪声产生的基本原理:根据噪声的功率谱密度,人为构造噪声。广泛适用于音频编解码器。在编码端计算静音时的白噪声功率谱密度,将静音时段和功率谱密度信息编码。在解码端,根据时间信息和功率谱密度信息,重建随机白噪声。

它的应用场景:完全静音时,为了创造舒适的通话体验,在音频后处理阶段添加随机白噪声。

音频编码基础

音频的另一个广泛应用的领域:音频编码。

首先看一下当前应用最广泛的一些音频编码标准,如下图所示。

图中横轴是音频编码码率,纵轴是音频频带信息。从图中我们可以获得如下几方面信息。

(1)对于固定码率的编码标准,如G.711或者G.722,图中采用单点表示,说明这两个编码标准是固定码率编码标准。其他如Opus、Speex,它们的曲线是连续的,说明这类编码标准是可变码率的编码标准。

(2)从频带方面看,G.711、G.722、AMR和iLBC等标准适用于narrowband(8khz采样率)和wideband(16khz采样率)范围,针对普通的语音通话场景。AAC和MP3适用于fullband(48khz采样率)范围,针对特殊的音乐场景。而Opus适用于整个频带,可以进行最大范围的动态调节,适用范围最广。

(3)从标准的收费情况看,适用于互联网传输的iLBC、Speex和Opus都是免费且开源的;适用于音乐场景的MP3和AAC,需要license授权,而且不开源。

随着音频处理和压缩技术的不断发展,效果更好、适用范围更广、性能更高的算法和新的技术必将不断涌现,如果你有好的技术或者分享,欢迎留言,我们一起探讨。

想要获取更多产品干货、技术干货,欢迎关注网易云信博客。

云信介绍参考:

网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能。

音视频通话:小议音频处理与压缩技术相关推荐

  1. AR+ 实时音视频通话,×××无缝结合

    今年中旬 Google 在万众期待下推出了 ARCore,能将现实与数码完美无缝地融合在一起,丰富我们的现实世界.通过它开发者可以更加快速方便地在 Android 平台开发 AR 应用,凭借 AR 技 ...

  2. 3 张图带你走近蚂蚁mPaaS音视频通话组件

    简介: 远程问诊.线上开户.车载语音通话--蚂蚁 mPaaS 正在"拥抱新技术,探索新未来". 音视频技术的进步,让线上办公不再是一时权宜之计,也使得线上业务的"无接触& ...

  3. 技术干货 | 网易云信音视频通话产品中的音频效果功能

    导读:音频效果器一般是指某些通过改变声音信号来实现某些特殊效果的设备或者算法模块.随着直播.短视频等应用的爆发,娱乐应用中对音频效果器的需求也受到越来越多的关注. 文|陈耀斌 网易智企云信音视频开发专 ...

  4. 技术系列课|网易云信音视频通话2.0产品中的美声/变声功能

    随着技术的发展,越来越多的直播和社交类产品开始引入RTC功能.新的业务和生态对原本服务于实时通话.视频会议等场景的RTC PaaS产品提出新的需求,原本关注于通话基础功能的设计只能提供基本的交互,并没 ...

  5. 详解比较好的音视频通话SDK开发包的技术要点

    详解好的音视频通话SDK开发包的技术要点 云智真是一套跨平台的音视频解决方案,其技术领先性.成熟度.稳定性.可扩展性以及安全性等各方面均有优异的表现,同时支持跨平台通信,Windows.Web.And ...

  6. 讲一个api网页全部保存到本地_WebRTC在网页端音视频通话的技术实践

    ​WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API,经过多年来的发展与改进,日臻成熟,作 ...

  7. 低延时直播技术优化实践,画质增强技术应用实践,云剪辑架构设计与演进,Web端音视频通话技术探索...

    快直播,低延时直播技术优化实践 Topic <腾讯云快直播低延时播放质量优化实践> 费伟  腾讯云 专家工程师 随着直播行业的快速发展,特别是在疫情的影响下,各种低延时直播需求得到了爆发性 ...

  8. 【音视频第2天】RTC 系统音频弱网对抗技术发展与实践

    RTC 系统音频弱网对抗技术发展与实践 网易P229 1. RTC 系统中常用的 FEC 冗余算法包括: XOR. Reed Solomon.喷泉码等介绍一下这几种算法? 在RTC(实时通信)中,为了 ...

  9. webRTC——浏览器里的音视频通话

    背景 webRTC是Google在2010年收购GIP公司之后获得的一项技术.如下图所示,它提供了音视频的采集.处理(降噪,回声消除等).编解码.传输等技术. webRTC的目标是实现无需安装任何插件 ...

最新文章

  1. Python可以调用Gpu吗_加快Python算法的四个方法:Numba篇
  2. 23种设计模式之解释器模式
  3. Oracle分析函数——函数列表
  4. JavaFX 中 FX 一词的由来
  5. PrimerCH3字符串,向量,迭代器,数组
  6. 从浏览器地址栏输入url到显示页面的步骤
  7. python语言原理_梯度下降算法的原理用Python语言实现,易于理解,python,更
  8. csv linux java,java 执行Linux 命令合并.csv文件
  9. python处理ppt的插件_几款PPT神器插件,千万不能错过!
  10. 【MySQL】MySQL审计操作记录
  11. linux内核配置usb虚拟串口,霍尼韦尔是否能提供USB串口仿真的Linux驱动程序?
  12. H264的视频格式H264支持4:2:0的连续或隔行视频的编码和解码
  13. Origin好友列表离线的解决办法汇总
  14. SPSS之多因素方差分析
  15. 遭遇应用程序正常初始化失败
  16. Python兔鼠大战游戏源代码
  17. 服务器磁盘爆满的问题定位流程与命令汇总
  18. css html 对错号,HTML_DIV+CSS编码时易犯的错误,CSS+DIV是网站标准(或称“WEB - phpStudy...
  19. js控制div内部滚动内容横向滑动位置
  20. win10英语语言包

热门文章

  1. 精灵方向移动问题[math.floor]
  2. C#与C++的几个不同之处知识点
  3. hdu2133: What day is it
  4. 移动开发的分辨率问题
  5. linux限制普通账号使用sftp,CentOS6.2使用SFTP限制帐号SSH连接
  6. java中堆栈溢出_java – 由于堆栈溢出,C中通常会发生什么?
  7. python单例_python 单例模式
  8. Python-OpenCV 笔记4 -- 形态学操作(Morphological Operations)
  9. AI理论知识基础(21)-对变化建模-用差分方程-动力系统及常数解
  10. tensorflow随笔-滑动平均模型