音频编码

编码

压缩编码,其原理是压缩掉冗余的信号,冗余信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号。

模拟音频信号转换为数字信号需要经过采样和量化,

量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,

常见的编码方式有:PCM ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件了,它是一种由微软和IBM联合开发的用于音频数字存储的标准,可以很容易地被解析和播放。

几个概念

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

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

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

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

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

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

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


音频编码的基本原理讲解

1概述

语音编码致力于:降低传输所需要的信道带宽,同时保持输入语音的高质量

语音编码的目标在于:设计低复杂度的编码器以尽可能低的比特率实现高品质数据传输。

2静音阈值曲线

指在安静环境下,人耳在各个频率能听到声音的阈值

3临界频带

由于人耳对不同频率的解析度不同,MPEG1/Audio将22khz内可感知的频率范围,依不同编码层,不同取样频率,划分成23~26个临界频带。下图列出理想临界频带的中心频率与频宽。图中可看到,人耳对低频的解析度较好。

4频域上的掩蔽效应

幅值较大的信号会掩蔽频率相近的幅值较小的信号,如下图:

5时域上的遮蔽效应

在一个很短的时间内,若出现了2个声音,SPL(sound pressure level)较大的声音会掩蔽SPL较小的声音。

时域掩蔽效应分前向掩蔽(pre-masking)和后向掩蔽(post-masking),其中post-masking的时间会比较长,约是pre-masking的10倍。

时域遮蔽效应有助于消除前回音。


音频编码基本手段

编码基本手段(1):量化和量化器

基本概念:

  • 量化和量化器:量化是把离散时间上的连续信号,转化成离散时间上的离散信号。

  • 常见的量化器有:均匀量化器,对数量化器,非均匀量化器。

  • 量化过程追求的目标是:最小化量化误差,并尽量减低量化器的复杂度(这2者本身就是一个矛盾)。

常见的量化器的优缺点:

  • (a)均匀量化器:最简单,性能最差,仅适应于电话语音。

  • (b)对数量化器:比均匀量化器复杂,也容易实现,性能比均匀量化器好。

  • (c)非均匀(Non-uniform)量化器:根据信号的分布情况,来设计量化器。信号密集的地方进行细致的量化,稀疏的地方进行粗略量化。

编码基本手段(2):语音编码器

1基本概念

语音编码器分为三种类形:(a)波形编器 、(b)声码器 、(c)混合编码器 。

波形编码器以构造出背景噪单在内的模拟波形为目标。作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率。 而声码器 (vocoder)不会再生原始波形。这组编码器 会提取一组参数 ,这组参数被送到接收端,用来导出语音产生模形。声码器语音质量不够好。混合编码器,它融入了波形编码器和声器的长处。

2波形编码器

波形编码器的设计常独立于信号,所以适应于各种信号的编码而不限于语音。

时域编码:

  • a)PCM:pulse code modulation,是最简单的编码方式。仅仅是对信号的离散和量化,常采用对数量化。

  • b)DPCM:differential pulse code modulation,差分脉冲编码,只对样本之间的差异进行编码。前一个或多个样本用来预测当前样本值。用来做预测的样本越多,预测值越精确。真实值和预测值之间的差值叫残差,是编码的对象。

  • c)ADPCM:adaptive differential pulse code modulation,自适应差分脉冲编码。即在DPCM的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。

频域编码:

频域编码是把信号分解成一系列不同频率的元素,并进行独立编码。

  • a)sub-band coding:子带编码是最简单的频域编码技术

    是将原始信号由时间域转变为频率域,然后将其分割为若干个子频带,并对其分别进行数字编码的技术。

    它是利用带通滤波器(BPF)组把原始信号分割为若干(例如m个)子频带(简称子带)。将各子带通过等效于单边带调幅的调制特性,将各子带搬移到零频率附近,分别经过BPF(共m个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,其设置m路数字编码器。将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同量化方式以及对子带分配不同的比特数。

  • b)transform coding:DCT编码

3声码器

  • channel vocoder: 利用人耳对相位的不敏感。

  • homomorphic vocoder:能有效地处理合成信号。

  • formant vocoder: 以用语音信号的绝大部分信息都位于共振峰的位置与带宽上。

  • linear predictive vocoder:最常用的声码器。

4混合编码器

波形编码器试图保留被编码信号的波形,能以中等比特率(32kbps)提供高品质语音,但无法应用在低比特率场合。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的语音听起来不自然。

混合编码器结合了2者的优点:

  • RELP: 在线性预测的基础上,对残差进行编码

机制为:只传输小部分残差,在接受端重构全部残差(把基带的残差进行拷贝)。

  • MPC: multi-pulse coding,对残差去除相关性,

用于弥补声码器将声音简单分为voiced和unvoiced,而没有中间状态的缺陷。

  • CELP: codebook excited linear prediction

用声道预测其和基音预测器的级联,更好逼近原始信号。

  • MBE: multiband excitation,

多带激励,目的是避免CELP的大量运算,获得比声码器更高的质量。


常见的音频压缩格式

  • 1.WAV编码

    WAV编码是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式等信息。特点:音质非常好、大量软件都支持。使用场景:多媒体开发的中间文件、保存音乐和音效素材等。

  • 2.MP3编码:

MP3具有不错的压缩比,使用LAME编码的中高码率的MP3文件,听感上非常接近源WAV文件。特点:音质在128Kbps以上表现还不错,压缩比比较高,兼容性好。使用场景:高比特率下对兼容性有要求的音乐欣赏。

  • 3.AAC编码:

AAC是新一代的音频有损压缩技术,它通过一些附加编码技术(如PS、SBR等),衍生出LC-AAC、HE-AAC、HE-AAC V2三中主要编码格式。特点:在小于128kbps码率下表现优异,且多用于视频中的音频编码。适用场景:128Kbps 码率下的音频编码,多用于视频中的音频轨的编码。

  • 4.Ogg编码:

Ogg编码音质好、完全免费。可以用更小的码率达到更好的音质,128Kbps的Ogg比192Kbps甚至更高的MP3还要出色。但是目前媒体软件支持上还是不够友好。特点:高中低码率下都有良好的表现,兼容性不够好,流媒体特性不支持。使用场景:语音聊天的音频消息场景。

  • 5.FLAC编码: 

FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质 。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持。特点:无损压缩、压缩率高于普通文件夹压缩格式(ZIP、rar等)。使用场景:高品质音乐等。


音频压缩

本质:消除冗余数据

  • 第一:频谱掩蔽效应:

人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余信号。

人耳听觉范围外的音频信号: 20Hz~20KHz

  • 去除人耳听觉频率范围临界附近的值

  • 大声音附近如果有小的声音可以去除

  • 时域屏蔽效应

  • 高声附近50ms内如果声音比较小可以去掉

  • 无损压缩

  • 第二:时域掩蔽效应:

当强音信号和弱音信号同时出现时,弱信号会听不到,因此,弱音信号也属于冗余信号。


常见的音频编码器

OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等

  • OPUS:

    目前性能最好、质量最高,但是由于时间短,暂时还没有普及,rtmp协议还不支持它。

  • AAC:

有损压缩算法,目的取缔mp3,压缩率很高、但还能接近原始的质量;

  • MPEG-4标准出现后,加入了SBR技术和PS技术,目前常用规格有AAC LC、AAC HE V1、AAC HE V2;

  • AAC LV:低复杂度,码流128k

  • AAC HE V1:AAC+SBR 分频编码,低频(减少采样率)和高频(增加采样率)分开编码

  • AAC HE V2:AAC+SBR+PS 由于声道间相同的性质很大,所以对于其它声道只要存储一些差异性的特征

  • AAC格式:

ADIF-只能从头开始解码,常用于磁盘文件中;

ADTS 每帧都有一个头信息,可以在音频流的任何位置解码,但是占用比较大。

AAC编码库:

Libfdk_AAC > ffmpeg AAC > libfaac > libvo_aacenc

FFmpeg入门详解之16:音频编码原理相关推荐

  1. FFmpeg入门详解之82:FFmpeg转码器Java版之ava编码

    创建数据库:db_webavtc 创建数据表:avcategory(素材类别) id int primary key, pid int , cname varchar(255), cmemo varc ...

  2. FFmpeg入门详解之117:视频监控的架构和流程

    几张架构图带您快速了解视频监控 图一 图二 图三 图四 视频监控系统的简介 视频监控 视频监控是安全防范系统的重要组成部分,英文Cameras and Surveillance.传统的监控系统包括前端 ...

  3. FFmpeg入门详解之111:RTSP协议2

    rtsp消息详解 1.RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同. 请求消息格式: 方法 URI RTSP版本 CR LF 消息头 C ...

  4. FFmpeg入门详解之86:RTP/RTCP协议讲解

    RTP RTP:(Real-time Transport Protocol) 是用于Internet上针对多媒体数据流的一种传输层协议.RTP 协议和 RTP 控制协议 RTCP 一起使用,而且它是建 ...

  5. FFmpeg入门详解之112:RTP/RTCP协议讲解

    RTP RTP:(Real-time Transport Protocol) 是用于Internet上针对多媒体数据流的一种传输层协议.RTP 协议和 RTP 控制协议 RTCP 一起使用,而且它是建 ...

  6. FFmpeg入门详解之85:RTSP协议2

    rtsp消息详解 1.RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同. 请求消息格式: 方法 URI RTSP版本 CR LF 消息头 C ...

  7. FFmpeg入门详解之105:m3u8文件格式详解

    简介 M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码."M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Stream ...

  8. FFmpeg入门详解之83:流媒体与直播技术

    流媒体 流媒体又叫流式媒体,它是指商家用一个视频传送服务器(比如:vlc)把节目(比如:ande10.mp4)当成数据包发出,传送到网络上.用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显 ...

  9. FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战

    5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...

最新文章

  1. 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型
  2. Java程序员,上班那点事儿--程序员也是一般人
  3. JAVA程序连接hadoop HDFS服务报无法连接。
  4. Microsoft Visual Studio 2010 和 TFS 下载
  5. Tomexam在线考试系统 2.1
  6. python怎么画出好看的统计图_用最简单的 Python ,画最好看的图 [简单数据可视化]...
  7. 同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)
  8. python 多层for循环转递归/迭代
  9. 类的封装,继承和多态
  10. Python利用情感词典做情感分析
  11. 设计师案头必备的配色灵感宝典软件\插件!
  12. 毕业设计选题管理系统
  13. 人口普查数据有疑问???
  14. QQ号被盗了申诉回来马上又被盗了怎么办
  15. 解决Rstudio打开空白
  16. 超低延时的H5直播,电子游戏互动控制直播,桌面远程控制直播方案
  17. Unity导入fbx模型贴图不显示的问题
  18. pdf太大怎么缩小兆数?怎样将pdf文档储存变小?
  19. 两位数码管秒表c语言,单片机C语言编程实现双数码管可调秒表
  20. HDFS的常用操作--hdfs下的文件操作常用命令总结

热门文章

  1. 能在水上“散步”的动物
  2. BI 报表正逐渐成为技术债,真的吗?
  3. playbook使用
  4. PDF加图片、文字水印(自动调整比例)
  5. [python] 基于matplotlib实现圆环图的绘制
  6. android stack dump,Android ODEX介绍
  7. windows10下基于3070显卡安装 mmdetection+mmcv_full
  8. DNSPod十问高春辉: 老兵不死, 我还有梦!
  9. 万科与鑫苑,解读房地产企业最佳管理模式
  10. 如何卸载NyanProgressBar插件