上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成.MCU 主要是把从网络收到的语音RTP包放进packet buffer内,同时也会根据计算出来的网络延时和抖动缓冲延时以及DSP单元反馈过来的信息决定给DSP发什么控制命令(命令主要有正常播放.加速.减速.丢包补偿.融合等),也会把语音包从packet buffer里取出来给DSP单元处理.DSP主要是对取出来的语音包解码并…
上篇(webRTC中音频相关的netEQ(四):控制命令决策)讲了MCU模块是怎么根据网络延时.抖动缓冲延时和反馈报告等来决定给DSP模块发什么控制命令的.DSP模块根据收到的命令进行相关处理,处理简要流程图如下. 从上图看出如果有语音包从packet buffer里取出来先要做解码得到PCM数据,没有就不用做解码了.编解码也是数字信号处理算法的一种,是个相当大的topic,不是本文所关注的,本文关注的是对解码后的PCM数据做数字信号处理,如加减速.如果命令是非Normal命令,就要根据命令做D…
上篇(webRTC中音频相关的netEQ(三):存取包和延时计算)讲了语音包的存取以及网络延时和抖动缓冲延时的计算,MCU也收到了DSP模块发来的反馈报告.本文讲MCU模块如何根据网络延时.抖动缓冲延时和反馈报告等决定发给DSP模块的控制命令, 好让DSP模块先对取出的语音包做解码处理(如果有的话)以及根据这些命令做信号处理. MCU模块给DSP模块发的控制命令主要有正常播放(normal).加速播放(accelerate).减速播放(preemptive expand).丢包补偿(PLC,代码…
上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础.本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer和从packet  buffer里取出来,以及网络延时值(optBufLevel)和抖动缓冲延时值(buffLevelFilt)的计算.先看RTP语音包是怎么放进packet  buffer的. 前面说过把从网络收到的RTP包放进packet  buffer时有个slot概念,每个slot里放一个包…
上篇文章(语音通信中终端上的时延(latency)及减小方法)说从本篇开始会切入webRTC中的netEQ主题,netEQ是webRTC中音频技术方面的两大核心技术之一(另一核心技术是音频的前后处理,包括AEC.ANS.AGC等,俗称3A算法).webRTC是Google收购GIPS重新包装后开源出来的,目前已是有巨大影响力的实时音视频通信解决方案.国内的互联网公司,要做实时音视频通信产品,绝大多数都是基于webRTC来做的,有的是直接用webRTC的解决方案,有的是用webRTC里的核心技术,…
Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc:  spring framework中拥有自己的web层框架,叫做spring web MVC,开发者可以直接使用spring MVC作为web框架,也可以不使用spring MVC,而是集成其他三方web框架,如Struts2 关于spring web flow:Spring Web Flow (SWF) aims to be the be…
类方法的概述与定义和调用 1, 类方法的概述 类方法(class method)在其他编程语言中常常称为静态方法(例如 Java 或 C# 等). 与实例方法不同的是,类方法只需要使用类名即可调用, 不需要引用对象, 也就不需要创建对象了. 而实例方法必须是先将对象(实例)创建出来, 再利用对象来调用方法. OC 中使用 "+" 表示类方法, 使用 "-" 表示实例方法. 类方法与实例方法的定义比较: 2, 类方法的定义 3, 使用类方法的优势分析: -> 类…
NetEQ 是 WebRTC 音视频核心技术之一,对于提高 VoIP 质量有明显的效果,本文将从更为宏观的视角,用通俗白话介绍 WebRTC 中音频 NetEQ 的相关概念背景和框架原理,以及相关的优化实践. 作者| 良逸 审校| 泰一 为什么要 "白话" NetEQ? 随便搜索一下,我们就能在网上找到很多关于 WebRTC 中音频 NetEQ 的文章,比如下面的几篇文章都是非常不错的学习资料和参考.特别是西安电子科技大学 2013 年吴江锐的硕士论文<WebRTC 语音引擎中…
做音频软件开发10+年,包括语音通信.语音识别.音乐播放等,大部分时间在做语音通信.做语音通信中又大部分时间在做VoIP语音处理.语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的语音让自己听到.发送又可叫做上行或者TX,接收又可叫做下行或者RX.之前写了好多关于VoIP语音处理方面的文章,本文想结合框图对相关知识做一个梳理.先综述发送和接收方向的处理,再具体到每个知识点上.讲到某个知识点,如曾经写过相关的文章,就给出链接,如没有写过,等以后写到时再补上链接.由于一些知识点在…
ANS(adaptive noise suppression) 是webRTC中音频相关的核心模块之一,为众多公司所使用.从2015年开始,我在几个产品中使用了webRTC的3A(AEC/ANS/AGC)模块.以前仅仅是使用,对其中的算法原理只是初步了解.近半年来,我利用业余时间在看着<语音增强:理论与实践>和<实时语音处理实践指南>这两本书,对降噪算法有了更深的理解,同时又对ANS的代码进行了调试,基本掌握了算法实现.我想把我对ANS的理解写出来.由于内容细节较多,就出一个系列吧…