webrtc音频QOS小结

一、概述

webrtc音频QOS小结

音频的QOS可以分:音频前处理3A算法、NetEQ两大类。

二、音频前处理3A算法

1)AEC

AEC (Acoustic Echo Cancellation) 回声消除算法

IOS和ANDROID系统都使用内置的AEC算法。只有windows使用webrtc的AEC算法。配置过程请参见

WebRtcVoiceEngine::Init
->WebRtcVoiceEngine::ApplyOptions

AEC算法原理分析,请参见《webrtc AEC算法原理分析》

2)ANS

ANS (Automatic Noise Suppression)自动降噪。

该算法适用于多方会议入会,若没有噪声抑制,每个与会方都自带背景噪音,混音叠加会导致会议背景音嘈杂。
 

3)AGC

AGC (Automatic Gain Control) 自动增益控制

自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克风的距离改变时,声音有忽大忽小声的缺点。

三、NetEQ

webrtc音频QOS小结

1)抗丢包方法

1、NACK:丢包重传协议。

2、FEC:冗余协议。

2)抗抖动方法

抗网络抖动由三个模块共同完成:

1、网络延时统计算法;

2、抖动延迟统计算法;

3、控制命令决策判定

3)音频平滑处理方法

虽然前面有了抗抖动方法尽量保证音频质量,但是在一些特定网络,音频渲染时还是可能出现音频数据堆积、断流现象。若不进行特殊处理,音频时快时慢,用户体验较差。这里webrtc引入WSOLA(变速不变调)算法进行平滑处理:

1、累积数据过多时,通过该算法,不影响用户体验情况下,减少这些数据播放时长。

2、音频播放BUF数据不足时,通过该算法,增加这些数据播放时长。让用户感知不到音频数据的波动。

在弱网丢包率比较高情况下,数据相对长时间丢失,WSOLA算法也无法满足实际应用,webrtc又引入了丢包补偿、音频融合算法,衔接和平滑音频质量。

1、丢包补偿算法原理是根据前一帧的解码信息,利用基音同步重复的方法近似替代当前的丢失帧,以达到丢包补偿。 

2、融合算法是当上一次播放的帧与当前解码的帧不连续的情况下,进行衔接和平滑处理。让两个数据包一部分播放时间重叠,使过度更自然。

参考

https://www.jianshu.com/p/09c103f95825

https://www.cnblogs.com/talkaudiodev/p/9142192.html

http://sxjs.cnjournals.cn/ch/reader/create_pdf.aspx?file_no=20100512&flag=1&journal_id=sxjs&year_id=2010