音频相关基本概念,音频处理及编解码基本框架和原理以及音、重采样、3A等音频处理(了解概念为主)

视频笔记:音频专业级分析软件(Cooledit)

                  音质定义以语音带宽来区分,采样率越高,带宽越大,则保真度越高,音质越好。窄带(8khz采样),宽带(16khz采样),CD音质(44.1khz采样)

                  音频采集播放流程:采集-前处理(回声消除、噪声抑制、音量调节、混响处理等)-编码-传输-解码-后处理-播放

                 

                 采样率:原始PCM数据每秒采样次数

                 比特率:编码压缩后的码率,每秒音频的大小。(所以在编码效果好的情况下也会有高采样率对应相对低的比特率)

                 PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏似的短暂起伏的电冲                         击),把这些脉冲的幅值按一定精度进行量化,这些量化后的数值被连续的输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程(抽样、量化、编码三个过程)。

 

 

               混音技术介绍https://blog.csdn.net/zego_0616/article/details/81705025

    混音,顾名思义,就是把两路或者多路音频流混合在一起,形成一路音频流。而混流,则是指音视频流的混合,也就是视频画面和声音的对齐,也称混流。

    并非任何两路音频流都可以直接混合。两路音视频流,必须符合以下条件才能混合:

 

  • 格式相同,要解压成 PCM 格式。
  • 采样率相同,要转换成相同的采样率。主流采样率包括:16k Hz、32k Hz、44.1k Hz 和 48k Hz。
  • 帧长相同,帧长由编码格式决定,PCM 没有帧长的概念,开发者自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用 20ms 为帧长。
  • 位深(Bit-Depth)或采样格式 (Sample Format) 相同,承载每个采样点数据的 bit 数目要相同。
  • 声道数相同,必须同样是单声道或者双声道 (立体声)。这样,把格式、采样率、帧长、位深和声道数对齐了以后,两个音频流就可以混合了。

 

  在混音之前,还需要做回声消除、噪音抑制和静音检测等处理。回声消除和噪音抑制属于语音前处理范畴的工作。在编码之前,采集、语音前处理、混音之前的处理、混音和混音之后的处理应该按顺序进行。静音抑制(VAD,Voice Activity Detect)可做可不做。对于终端混音,是要把采集到的主播声音和从音频文件中读到的伴奏声音混合。如果主播停顿一段时间不发出声音,通过 VAD 检测到了,那么这段时间不混音,直接采用伴奏音乐的数据就好了。然而,为了简单起见,也可以不做 VAD。主播不发声音的期间,继续做混音也可以(主播的声音为零振幅)。

 

音频重采样

 

重采样的原因

 

音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。比如在播放音乐的过程中,来了一个提示音,就需要把音乐和提示音都混合到codec输出,音乐的原始采样率和提示音的原始采样率可能是不一致的。问题来了,如果codec的采样率设置为音乐的原始采样率的话,那么提示音就会失真。因此最简单见效的解决方法是:codec的采样率固定一个值(44.1KHz/48KHz),所有音轨都重采样到这个采样率,然后才送到codec,保证所有音轨听起来都不失真。

重采样即是将音频进行重新采样得到新的采样率的音频。

 

回音消除(AEC)(整理:https://www.cnblogs.com/ldjrl2013/p/3687938.html

 

在即时通讯应用中,需要进行双方,或是多方的实时语音交流,在要求较高的场合,通常都是采用外置音箱放音,这样必然会产生回音,即一方说话后,通过对方的音箱放音,然后又被对方的Mic采集到回传给自己(如下图所示)。如果不对回音进行处理,将会影响通话质量和用户体验,更严重的还会形成震荡,产生啸叫。

 

 

 

 

 

 

 

回声消除就是在Mic采集到声音之后,将本地音箱播放出来的声音从Mic采集的声音数据中消除掉,使得Mic录制的声音只有本地用户说话的声音。

 

 

 

传统的回声消除都是采用硬件方式,在硬件电路上集成DSP处理芯片,如我们常用的固定电话、手机等都有专门的回音消除处理电路,而采用软件方式实现回声消除一直存在技术难点,包括国内应用最广泛的QQ超级语音,便是采用国外的GIPS技术,由此可见一般。

 

 

 

回声消除已经成为即时通讯中提供全双工语音的标准方法。声学回声消除是通过消除或者移除本地话筒中拾取到的远端的音频信号来阻止远端的声音返回去的一种处理方法。这种音频的移除都是通过数字信号处理来完成的。回声消除技术是数字信号处理的典型应用之一。

 

 

 

回声消除的基本原理是以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使得估计值更加逼近真实的回声。然后,将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。

 

 

 

 

音频3A处理在不同的应用场景三者的处理顺序也不同,如在WebRTC中音频数据回依次经过AECNS(noise suppression) 或者 NSAECM(AECM 是WebRTC专门为移动端打造的算法,计算量低,而AEC 是为PC打造的)。而在AEC(回声消除算法),为什么需要这个算法呢?当一个设备在播放声音经过空间中的多次反射会被麦克风再次捕捉并采集到系统当中,这时音频的输入既有空间反射的回声也有本端说话声,如果缺少此模块就意味着通话中说话人一直可以听到自己的声音回来,这是非常差的一种体验,这当然是需要我们避免的。这里AEC的作用就是通过播放的参考信号跟踪出回声并从采集信号中把回声消除掉,随后再经过降噪处理去除噪声。而其中的AECM是在NS模块之后通过获取clean与noise数据进行分析,AEC则是NS模块之前直接获取noise数据进行分析。

 

音频数据完成AEC与NS的处理后会进行AGC处理,其包括AAGC(模拟域的自动增益控制)与DAGC(数字域的自动增益控制)。其中AAGC的主要作用是通过系统的采集音量设置接口调整输入信号(大多用于PC端,移动端一般没有输入音量的系统接口),如借助Windows上的的API调整采集音量等参数。AAGC可为输入的音频数据带来明显的质量优化,如提高信噪比,避免输入信号溢出等。但由于我们服务的跨平台要求,我们需要构建一个面向多平台设备的框架,在不同的输入平台和设备都会有不同的输入音量,DAGC可以根据对输入信号的跟踪,尽量的调整信号到达期望大小(幅值或能量),从而避免不同设备采集带来的音量差异过大。完成AGC处理的音频数据,即可进入Audio Encode进行编码操作。
原文:https://blog.csdn.net/lipengshiwo/article/details/84280294

 

posted @ 2019-04-28 17:51  oi蒟蒻技术咸鱼  阅读(4156)  评论(0编辑  收藏  举报