音频编码

编码

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

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

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

常见的编码方式有: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. 我了解到的新知识之——电热水器用电安全
  2. Javascript中的日期函数[zz]
  3. SQL Stored Procedure Generator
  4. f450四轴使用技巧
  5. 18个不常见的C#关键字,您使用过几个?
  6. hbase查看表结构_HBase基本使用之DDL学习
  7. jwt 私钥_三分钟带你了解JWT认证
  8. 网络蜘蛛Spider的逻辑Logic(一)
  9. 宝峰对讲机编码写频工具
  10. python阿拉伯数字转中文_阿拉伯数字转化为中文数字
  11. DW个人网站设计 练习作业
  12. 摄影测量学空间后方交会
  13. JavaSE-Adventure(III): Generics 泛型程序设计
  14. 对抗重力—初探声悬浮技术
  15. 分享77个NET源码,总有一款适合您
  16. camtasia studio2022电脑屏幕录像录屏剪辑
  17. 基于springboot高考填报志愿综合参考系统设计与实现-计算机毕业设计源码+LW文档
  18. 执行git checkout -b出错的解决办法
  19. 新闻周刊文字内容_央视新闻周刊文字版官网-央视新闻周刊文字版2020下载-游戏大玩家...
  20. Android开发:禁用应用分屏和屏幕旋转功能

热门文章

  1. oracle nextval mysql_mysql中实现类似oracle中的nextval函数
  2. python爬虫学习34
  3. 公司上市有什么好处?公司上市利弊分析
  4. .net aspx三种导出excel的方法
  5. aspx.net响应点击事件(页面button的onclick事件)
  6. linux命令实践-du
  7. 数字电子技术 八路呼叫器 Multisim仿真 课程报告
  8. 测试你是不是处男或者处女 超级准确!
  9. 标准库 - fmt/print.go 解读
  10. Liskov替换原则(Liskov Substitution principle)