常见的音频文件一般以pcm、 wav、 mp3、 amr等格式进行存储。本文对这几种音频文件格式进行了介绍并以具体的音频文件进行了分析。

1、PCM

PCM(Pulse Code Modulation),脉码调制录音,即将模拟信号变成符号化的脉冲序列,以原始的音频数据将其记录下来,是对模拟信号先抽样,再对样值幅度量化,编码的过程。PCM信号是把以一定采样频率记录的脉冲幅值信号按一定的精度进行量化后构成的数字信号,没有未经过任何编码和压缩处理。涉及到的两个重要参数是采样频率和量化精度,常用的采样频率有22050Hz,44100H等,,量化精度8bit、16bit,标准的CD音频2即以2050Hz/161bit的方式进行记录。

2、WAV
WAV是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头包含音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,故基于PCM编码的WAV常被作为中介的格式在各种类型的音频文件中进行转换。
WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。有时文件中也包含Playlist chunk、Associated data list chunk等区块。

》RIFF chunk:
54 49 46 46 (大端):RIFF标识,表明该文件遵循RIFF规则
24 08 00 00(小端):整个wav文件的包含的字节数,即0x0824,十进制为2084,不包含RIFF标识的四个字节及本身所占的四个字节
57 41 56 45(大端):WAVE标识,表明该文件后面有Format块和Data块

》Format chunk:
66 6d 74 20(大端):fmt标识,表明文件接下来是Format块
10 00 00 00(小端):Format子块所包含的字节数,十进制为16,不包含fmt标识的四个字节及本身所占的四个字节
01 00 (小端):音频的编码格式,01为PCM编码
02 00 (小端):通道数,02为双通道(立体声)
22 56 00 00(小端):音频采样频率,此处为0x5622,即十进制为22050
88 58 01 00(小端):位率(也叫比特率,指音频每秒的传输速率),此处为0x5888,即十进制为88200(采样频率*通道数 *量化精度)
04 00 (小端):表示音频数据以四字节对齐
10 00 (小端):采样值幅的量化精度,以16位量化后进行记录

》Data chunk:
64 61 74 61(大端):data标识,表明文件接下来是Data块
00 08 00 00(小端):Data 子块所包含的字节数,此处为0x0800,即十进制的2048,不包含data标识的四个字节及本身所占的四个字节

3、MP3
MP3利用的是MPEG Audio Layer3音频压缩技术,所以人们把它简称为MP3。MPEG音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,分别对应MP1、MP2、MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。并且音频编码的层次越高,编码器越复杂,压缩率也越高,MP1 和MP2 的压缩率分别为4:1 和6:1-8:1,而MP3 的压缩率可达1∶10甚至1∶12。MP3 属于有损失的格式,牺牲音乐文件的质量以换取较小的文件体积,因为人耳只能听到一定频段内的声音(20Hz~20000Hz),而其他更高或更低频率的声音对人耳是无法感知的,所以MP3技术就把这部分声音去掉了,从而使得文件体积大为缩小,但在人耳听起来, 却并没有什么失真。

MP3 音频一般包含三部分:ID3V2,Frame,ID3V1。ID3V2,ID3V1 为标签帧,Frame为数据帧,ID3v1存在文件尾部,长度 128 字节,而 ID3v2,是对 ID3v1 的扩展,存在文件头部,长度不定。在一个MP3 文件内不一定有标签帧,但一定有数据帧。

如果mp3音频文件存在ID3V2标签的话,在文件的首部顺序会记录10 个字节的ID3V2的头部,即标签头。之后则为ID3V2标签的标签帧,可有多个标签帧,标签帧数据表明了该MP3的作者,作曲,专辑等信息,扩展了ID3V1 的信息量。
》ID3V2的标签头:
49 44 33:ID3标识,表明该MP3文件包含ID3V2标签
04:版本号,此处为ID3V2.4
00:副版本号,此处为0
00:存放标志的字节(是否包含扩展头部及测试标签等)
00 00 00 02:ID3V2标签帧包含的字节数,包括标签头的10 个字节和所有的标签帧的大
ID3V2标签帧之后是数据帧,记录了mp3 的位率,采样率,版本等信息,每个数据帧帧都有一个帧头Header,长度是4Byte(32bit),帧头后面可能有两个字节的CRC 校验值,一般为FF FB或 FF FA。

4、AMR
AMR( Adaptive Multi-Rate),自适应多速率,是一种音频编码文件格式。基于新的网络和新的要求,无论是从节省传输频带资源,还是保持线路通信的高效率等方面来看,研究采用各种可变速率语音编码技术的系统都有重要意义。目前为了适应此需要提出了AMR的概念,即自适应多速率语音编码器。主要用于移动设备的音频压缩,可有效地压缩语音频率,压缩比非常高,但是音质相对其他的压缩格式质量比较差比较差,主要用于语音类的音频压缩,不适合对音质要求较高的音乐类音频的压缩。
AMR又分为两种,一种是AMR-NB(AMR-NarrowBind),语音带宽范围:300-3700Hz,8KHz采样频率;另外一种是AMR-WB(AMR WideBand),语音带宽范围50-7000Hz,16KHz采样频率。但考虑语音的短时相关性,每帧长度均为20ms。这两种编码器根据带宽的要求选用了不同的速率,适用于不同的应用场景。
1)AMR-NB
AMR-NB的采样频率为8KHz,每20ms编码一帧,每个帧中包含160个语音样点,支持8种不同的编码方式:4.75 kb/s 5.15kb/s 5.9kb/s 6.7kb/s 7.4kb/s 7.95kb/s 10.2kb/s 12.2kb/s 。AMR采用的是基于代数码激励线性预测(ACELP)的编码模式,从编码端提取ACELP模型参数,解码端接收到数据后后根据这些参数从新合成语音,如TD-SCDMA中AMR-NB的实现。
2)AMR-WB
AMR-WB是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称为G722.2标准。AMR-WB采样频率为16kHz,同样是每20ms编码一帧,但每帧中包含320个语音样点,拥有更大的语音带宽,支持9种不同的编码方式:6.6kb/s 8.85kb/s 12.65kb/s 14.25kb/s 15.85kb/s 18.25kb/s 19.85kb/s 23.05kb/s 23.85kb/s,用户可主观感受到话音比以前更加自然、舒适和易于分辨。AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。AMR-WB在较低的误码信道可以提供很好的性能,但对于误码率大或干扰高的信道,具有较低编码速率的AMR-NB更为合适。

AMR文件由AMR和数据帧组成,文件头标识占6个字节,后面紧跟着就是音频帧,每个音频帧都包含一个字节的音频头和相应字节的语音数据。
》AMR文件头:23 21 41 4D 52 0A (固定的)

对于不同的编码模式,它的音频帧的大小是不同的,比特率也是不同的。此处为3C,即AMR12.2编码模式。可知其比特率为12.2kbs,每秒采样的音频数据位数为32字节。

音频文件--PCM、 WAV、 MP3及AMR格式分析相关推荐

  1. 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...

    最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端.经过一番研究,最终决定采用Python的ffmpy包. 安装只需执行 pip in ...

  2. 怎么转换html文件为mp3,如何把音频转换成mp3_音频文件怎么转mp3格式-系统城

    随着计算机技术的发展,网络上的音频文件的格式会随着音质的好坏决定存储的格式,一些朋友想要把某些音频文件转化成mp3格式,却不知道怎么操作.那么我们该如何把音频文件转换成mp3呢?接下来小编就给大家带来 ...

  3. 怎样把其他格式的音频文件转换成MP3格式的

    这个问题就比较简单了,如今科技这么发达,使用专业的音频格式转换器来转换就好了.比如我之前也从朋友那得知到一款音频转换器比较简单好用,后来一直在使用发现功能还比较全面且操作简单.所以跟着小编一起来看看吧 ...

  4. mp3在计算机中储存的形式,电脑中保存的AC3音频文件怎么转MP3格式的

    原标题:电脑中保存的AC3音频文件怎么转MP3格式的 大家好,我是一名音乐发烧友,也是一名音乐创作 人,平时会经常接触各种各样的音频格式.在网上最常见的音频格式是MP3,相信很多人都知道这一格式,以前 ...

  5. Android录音并播放(mp3或amr格式)

    Android项目中媒体是很多人头疼的一个问题,不仅仅因为处理起来很麻烦,而且不同的手机差别很大(和硬件,系统都有关系),今天就总结一下Android中的录音和播放,可保存成mp3或amr格式. 小米 ...

  6. 【Java】java转换可播放的QQ/微信高质量语音格式,mp3/wav转silk格式(高质量音频),mp3转换amr格式(低质量音频),mp3/wav转pcm(非语音格式)

    1.简要 参考各个博主,发现java里mp3转silk的案例真的少,几乎没有,有的都是基于 linux系统的,所以自己研究了下就有了以下代码 tips:mp3转换silk格式,需要先转换成pcm再转换 ...

  7. 音频文件PCM、WAV、MP3的区别以及文件合并

     一.数字音频三要素 1.采样率 采样率即采样频率,指的一秒内的采样次数,它反映了采样点之间的间隔大小.常说的 44.1KHz 采样率,也即 1 秒采集了 44100 个样本.间隔越小,丢失的信息越少 ...

  8. 使用lame对音频文件PCM进行转码为MP3格式

    1.LAME简介 LAME是目前非常优秀的一种MP3编码引擎,可以把音频文件转为MP3格式.当达到320Kbit/s以上时,LAME编码出来的音频质量几乎可以和CD的音质相媲美,并且能保证整个音频文件 ...

  9. 电脑录制的音频文件如何转换为MP3格式

    很多人认为,电脑录制的文件是不能转换格式,其实并不是这样的,电脑录制的音频文件转换为MP3格式大家是可以借助工具完成,如今市面上出现了很多的音频转换工具,它可以把音频的格式进行不同的变化但是大家却不知 ...

  10. 音频文件(.wav)解析读取

    wav是一种无损的音频文件格式,所有的WAV都有一个文件头,包含了音频流的编码参数,即支持非压缩的PCM编码方式,也支持常见的压缩编码格式. 当WAV文件采用PCM编码方式时,PCM文件和WAV文件的 ...

最新文章

  1. mac os下valgrind的安装
  2. 华为今年不会发布鸿蒙系统的手机,华为:今年不会推出鸿蒙系统手机 将坚守安卓生态...
  3. spring 找不到applicationContext.xml解决方法
  4. 有没有一种方法可以缓存GitHub凭证来推送提交?
  5. Python练习题:---给定一个字符串 {xxx[xxx{xxx}]xx{x[xxx]xxx{xxx}xx}x} 判断其中的 {}[]() 是否成对出现
  6. 熊孩子巨额充值打赏,互联网公司该不该退钱?
  7. 【数学】概念的理解 —— 有序对(ordered pair)
  8. 技术分享|集成开放平台使用Consul Watch机制实现配置热更新
  9. C语言非常大的数组,关于最大子数组问题
  10. ipsec *** 的总结性谈论
  11. /bin/sh: cc: 未找到命令
  12. SLAM_相机与imu的融合基础知识
  13. QQ小游戏 微信小游戏 即时通信 IM 删除会话 deleteConversation sdk
  14. 虚拟机共享WiFi网路的NAT连接方法
  15. 拜托,在学校开拖拉机很酷的!
  16. c语言编写 构成的梯形,用C语言编写梯形
  17. iOS系统日历多了莫名其妙的事项
  18. 线段树 + 二分答案:Haybale Guessing G
  19. idea配置springboot
  20. xms应用框架 - 基于.netcore

热门文章

  1. 经典c语言基础代码大全,经典基础实例编程C语言代码.doc
  2. 基于UNITY引擎开发的游戏源码修改方法
  3. 安卓系统和安卓服务器地址,给安卓应用配置服务器地址
  4. 实用新型专利撰写模板(自己总结)
  5. 从放弃迅雷和IDM到自己开发下载工具 1
  6. 主板在计算机系统中的应用,浅谈主板在计算机硬件系统中的重要性.doc
  7. Innovus中timing eco后setup margin跑哪里去了?(知识星球福利活动)
  8. js调用摄像头拍照上传图片
  9. MAC安装linux双系统
  10. python 递归函数例子