默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
网易视频云技术分享:音频处理与压缩技术快速入门
阅读(110068) | 评论(8 收藏5 淘帖1 1

1、音频处理与压缩的意义


在视频或者音频通话过程中,一方面为了减小原始声音数据的传输码率,需要进行音频压缩,另一方面为了得到更高质量的音质,需要进行音频处理。

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

网易技术团队分享的其它文章:


2、音频基础概念


在进一步了解音频处理和压缩之前需要明确如下几个概念:

  • 1)音调:泛指声音的频率信息,人耳的主观感受为声音的低沉(低音)或者尖锐(高音)。
  • 2)响度:声音的强弱。
  • 3)采样率:声音信息在由模拟信号转化为数字信号过程中的精确程度,采样率越高,声音信息保留的越多。
  • 4)采样精度:声音信息在由模拟信号转化为数字信号过程中,表示每一个采样点所需要的字节数,一般为16bit(双字节)表示一个采样点。
  • 5)声道数:相关的几路声音数量,常见的如单声道、双声道、5.1声道。
  • 6)音频帧长:音频处理或者压缩所操作的一段音频信息,常见的是10ms,20ms,30ms。

3、音频处理基础


3.1噪声抑制(Noise Suppression)


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

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

3.2回声消除(Acoustic Echo Canceller)


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


▲ 回声产生的原理如上图所示

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



3.3自动增益控制(Auto Gain Control)


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

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


▲ 自动增益控制算法的基本流程图

3.4静音检测(Voice Activity Detection)


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

3.5舒适噪声产生(Comfortable Noise Generation)


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

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

4、音频编码基础


介绍了音频处理基础,再向大家介绍一下音频的另一个广泛应用的领域:音频编码。首先看一下当前应用最广泛的一些音频编码标准,如下图所示。


▲ 当前应用最广泛的一些音频编码标准

图中横轴是音频编码码率,纵轴是音频频带信息。

从图中我们可以获得如下几方面信息:

  • 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授权,而且不开源。

5、结语


随着音频处理和压缩技术的不断发展,效果更好、适用范围更广、性能更高的算法和新的技术必将不断涌现,不断改善我们的生活。

附录:更多实时音视频技术文章


[1] 开源实时音视频技术WebRTC的文章:
开源实时音视频技术WebRTC的现状
简述开源实时音视频技术WebRTC的优缺点
访谈WebRTC标准之父:WebRTC的过去、现在和未来
良心分享:WebRTC 零基础开发者教程(中文)[附件下载]
WebRTC实时音视频技术的整体架构介绍
新手入门:到底什么是WebRTC服务器,以及它是如何联接通话的?
WebRTC实时音视频技术基础:基本架构和协议栈
浅谈开发实时视频直播平台的技术要点
[观点] WebRTC应该选择H.264视频编码的四大理由
基于开源WebRTC开发实时音视频靠谱吗?第3方SDK有哪些?
开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用
简述实时音视频聊天中端到端加密(E2EE)的工作原理
实时通信RTC技术栈之:视频编解码
开源实时音视频技术WebRTC在Windows下的简明编译教程
网页端实时音视频技术WebRTC:看起来很美,但离生产应用还有多少坑要填?
>> 更多同类文章 ……

[2] 实时音视频开发的其它精华资料:
专访微信视频技术负责人:微信实时视频聊天技术的演进
实时语音聊天中的音频处理与编码压缩技术简述
网易视频云技术分享:音频处理与压缩技术快速入门
学习RFC3550:RTP/RTCP实时传输协议基础知识
基于RTMP数据传输协议的实时流媒体技术研究(论文全文)
声网架构师谈实时音视频云的实现难点(视频采访)
浅谈开发实时视频直播平台的技术要点
还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!
实现延迟低于500毫秒的1080P实时音视频直播的实践分享
移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡
如何用最简单的方法测试你的实时音视频方案
技术揭秘:支持百万级粉丝互动的Facebook实时视频直播
简述实时音视频聊天中端到端加密(E2EE)的工作原理
移动端实时音视频直播技术详解(一):开篇
移动端实时音视频直播技术详解(二):采集
移动端实时音视频直播技术详解(三):处理
移动端实时音视频直播技术详解(四):编码和封装
移动端实时音视频直播技术详解(五):推流和传输
移动端实时音视频直播技术详解(六):延迟优化
理论联系实际:实现一个简单地基于HTML5的实时视频直播
IM实时音视频聊天时的回声消除技术详解
浅谈实时音视频直播中直接影响用户体验的几项关键技术指标
如何优化传输机制来实现实时音视频的超低延迟?
首次披露:快手是如何做到百万观众同场看直播仍能秒开且不卡顿的?
Android直播入门实践:动手搭建一套简单的直播系统
网易云信实时视频直播在TCP数据传输层的一些优化思路
实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器
>> 更多同类文章 ……

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:为战胜拖延症 - 我们打造了个开源IM社交app下一篇:报告,RainbowChat 的测试服务器登录不了

本帖已收录至以下技术专辑

推荐方案
评论 8
通俗易懂,继续学习
签名: 秋天到了,终于凉快了
引用:clark.li 发表于 2016-12-27 21:51
通俗易懂,继续学习

理论结合实际才有作用啊
签名: 该会员没有填写今日想说内容.
通俗易懂,继续学习
66666
学习了,受教了
签名: 来看看啊
是我网络问题还是怎么回事?这篇文章图片看不了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部