音频格式(一)PCM和WAV

这篇具有很好参考价值的文章主要介绍了音频格式(一)PCM和WAV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

零、写在前面

        想要了解音频首先要了解它的构造,知道它怎么从声音变成文件,又怎么从文件变成声音。文件格式根据需求和技术的进步有了不同的版本,不同的文件格式有其不同的文件构造。我们先从最原始的两种音频文件入手,讲一讲常见的音频文件格式。首先是PCM和WAV

一、PCM文件

        PCM(Pulse-code modulation 脉冲编码调制)是音频原始数据,是采样器(麦克风)电信号转化的数字信号,这就是我们常说的采样到量化的过程,所以其实PCM不仅仅可以用在音频录制方面,它可用在其它电信号转数字信号的所有场景。由这样一段原始数据组成的音频文件叫PCM文件,以.PCM结尾。一个PCM文件的大小取决于以下几个元素:

1.1、格式和参数    

        采样率:是指每秒电信号采集数据的频率,常见的音频采样率有8000HZ,16000HZ,44100HZ,48000HZ,96000HZ等。

        采样位深:表示每个电信号用多少位来存储,例如8位的采样位深能够划为的等级位256份,人耳的可识别声音频率为20-20000hz,那么每个位的误差就达到了80HZ,这对音频的还原度大幅降低,但是它的大小相应的也减小了,更有利于音频传输。早期的电话就使用的比较低的采样率来达到更稳定的通话质量。如果16位位深就能精准采样每一HZ。对于采样位深其实也并没有简单的8位/16位/32位这么简单,对于计算机来讲16位既可以用short表示也可以用16位int表示,32位既可以用32位int表示也可以用32位float表示,除此之外还有有符号和无符号之分,所有对于在编解码的时候对于这个我们也需要注意。

        采样通道:常见的有单通道还是双通道,双通道能帮我们区分左右耳的声音,单通道的话两只耳朵都是一样的声音。通常我们追求立体感会使用双通道,所以双通道采集的声音也叫立体声。除此之外还有要求更高的2.1,5.1,6.1,7.1,等等通道类型,这些对你录制音频的麦克风有一定要求。

        数据存储方式:表明数据是以交叉方式存放还是以分通道的方式存放,交叉排列只针对的是多通道的音频文件,单通道的音频文件不存在交叉排列。采样通道和数据存储方式决定数据具体如何存储。

        那么从上可知生成一个1S的PCM文件所需要占磁盘的大小:

        采样率*采样位数*通道数 单位为bit

        那么其实算出来的结果也就是我们的比特/秒=比特率

        那么我们生成一段时长为10S,采样率44100hz,采样位数为16位,通道数为两位的PCM文件所要占的磁盘大小(单位bit)为:44100*16*2*10。

        虽说PCM是音频的源数据但是大多的播放器都无法播放它,因为它只有数据,播放器无从得知要怎么解析它,就算是PCM播放器也要事先指定它的采样率、通道数、和采样位数、以及字节序才能正确的播放(将数字信号转化为电信号)。

        所以有了我们常见的几种音频格式WAV/MP3/AAC。当然这些音频格式的出行不仅仅是为了解决存放音频基本信息的问题,像MP3和AAC的目的更多的是压缩数据,在尽量保证质量的前提下,减小文件占用空间,达到更好的传输和存储效果。在这之前先说一说和PCM十分接近的音频文件WAV。

1.2、字节序

        我们在录制PCM的时候其实也需要关注无关文件质量,很简单但是又非常重要的东西:字节序。字节序当然不仅仅在音频上,对于一些计算机相关数据交互/存储/通信协议上都是一个需要注意的点,字节序分为大端序和小端序两种,大端序是人更易读的顺序,小端序是电脑更易读的顺序。例如一个数据为0x01234567,那它的大端序为0x01234567 小端序为0x67452301,其实就是把字节位置倒过来放置。

二、WAV

2.1、格式和参数        

        WAV完全可以说它只解决了PCM数据没有存储录制格式的问题,解决办法也相当简单粗暴,直接在PCM的头部加上录制格式的信息,这些信息占用固定的44字节。所以WAV占用空间上非但没有比PCM数据小,反而大出44个字节,让我们看看这44字节到底放了些什么东西。我们以 采样率为44100,采样位数16,双通道,时长10S的PCM文件转WAV为例。先算出PCM文件大小:44100*16*2*10=14112000bit=176000byte,当然实际应用中我们也可以读取文件长度获得。

所属块

position

名称

大小(byte)

字节序

描述

内容

RIFF块

0-3

ID

4

大端

固定内容'RIFF'ASCALL码

0x52494646

4-7

Size

4

小端

整个文件长(包括头部44)减去ID和Szie大小,其实就是-8

数据为176000+44-8=176036

大端序:0x0002AFA4

小端序:0xA4AF0200

8-11

type

4

大端

固定内容'WAVE'

0x57415645

Format块

12-15

ID

4

大端

固定内容'fmt ',注意最后一个字节未空格(全ASCALL)

0x666d7420

16-19

SIZE

4

小端

该区块(非总文件)长度-ID和Size长度

区块长35-11=24数据长24-8=16

大端序:0x0010

小端序:0x1000

20-21

AudioFormat

2

小端

音频格式,一般为1表示PCM

大端序:0x0001

小端序:0x0100

22-23

NumChannels

2

小端

声道数 1单声道 2立体声

大端序:0x0002

小端序:0x0200

24-27

SampleRate

4

小端

采样率

数据44100

大端序:0x0000AC44

小端序:0x44AC0000

28-31

ByteRate

4

小端

字节率其实就是比特率/8

数据1411200/8=17600

大端序:0x000044C0

小端序:0xC0440000

32-33

BlockAlign

2

小端

每采样一次需要多少字节=

通道数*采样位数/8

数据:2*16/8=4

大端序:0x0004

小端序:0x0400

34-35

BitPerSample

2

小端

采样位数 8/16/24/32bit

数据:16

大端序:0x0010

小端序:0x1000

Data块

36-39

DataId

4

大端

固定内容'data'

0x64617461

40-43

DataSize

4

小端

PCM实际大小

数据:176000

大端序:0x0002AF80

小端序:0x80AF0200

44-(44+

DataSize)

Data

DataSize

小端

PCM数据(其实这里的小端也是我们在录制时经常指定的录制字节序)

PCM数据直接往上拼接

        需要注意的是,官方资料是显示这些头文件数据是有大小端序之分的,但实际应用中我们全按大端序来也并不影响我们播放。反正别需要小端的数据你一会小端一会大端的,那肯定不行。至于怎么封装PCM转WAV的方法大家其实看上面的表就已经清楚了。

 2.2、总结

        优点:在数据上来说他是无损的,保留了原始数据/格式转换简单,几十行代码就能完成一个格式转换/无需转码解码。

        缺点:体积过大/文件大小受限,存储文件大小数据的空间只有4字节最多也就2^32个byte将近4GB。

        应用场景:其实除了音频外还可以用作广播/其它电信号转数字信号的文件存储。

三、写在最后

        这篇记录的是最简单的PCM和WAV音频格式,后续还有MP3和AAC格式的相关记录,有兴趣的可以点个关注等待后续更新,也希望大家能看看我其它博客给出建议哦。欢迎大家交流讨论,批评指正。文章来源地址https://www.toymoban.com/news/detail-423172.html

到了这里,关于音频格式(一)PCM和WAV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

    PCM 全称 \\\" Pulse Code Modulation \\\" , 脉冲编码调制 , 该 音频数据 是未经压缩的 采样裸数据 , 只有 知道该数据的 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始的音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩 分为 无损压缩

    2024年04月11日
    浏览(50)
  • Java Mp3转化WAV/PCM音频数据,解码详细解析,提取每一帧数据集合/比特流/播放,一行代码!

    大家好!我是原子君 1 .因为Java本身只支持,wav,缺少mp3的解码器,所以Java自带的无法对mp3进行处理,这种 MPEG-*音频有损压缩标准编码 ,更不要说使用Java的音频格式和音频流就可以解决。 2 .所以本次转换需要使用到colorful1.1这种纯Java-Pc可跨平台的工具框架。 注意:colorful只支持

    2024年02月15日
    浏览(51)
  • WAV格式音频截取

    【功能】 通常我们会拿到例如某个歌手的演唱会完整版的WAV格式的争端音频,而我们想对该音频进行分割或其中某些部分才是我们实际真正想要的音频段落,为此我们需要设计一个可以按照指定时分秒进行截取的程序。 要求实现的功能如下: 1.根据指定的起止时分秒的设置

    2023年04月08日
    浏览(43)
  • 【音频】WAV 格式详解

    wav 文件支持多种不同的比特率、采样率、多声道音频。 WAV 文件格式是 Microsoft 的 RIFF 规范的一个子集,用于存储多媒体文件。RIFF(resource interchange file format 资源互换文件格式,以 chunk(块) 为单位组织文件)格式文件。在 windows 上,大部分多媒体文件都是 RIFF 文件。wav 文件由

    2023年04月08日
    浏览(36)
  • 音频——WAV 格式详解

    wav 文件支持多种不同的比特率、采样率、多声道音频。 WAV 文件格式是 Microsoft 的 RIFF 规范的一个子集,用于存储多媒体文件。RIFF(resource interchange file format 资源互换文件格式,以 chunk(块) 为单位组织文件)格式文件。在 windows 上,大部分多媒体文件都是 RIFF 文件。wav 文件由

    2024年02月09日
    浏览(41)
  • PCM音频格式解析和帧大小计算

    目录 一. 什么是PCM? 二、PCM数据格式 三、PCM帧大小计算 PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。 描述PCM数据的6个参数: Sample Rate : 采样频率。8kHz(电话)、44.1kHz(CD)、

    2023年04月08日
    浏览(35)
  • 【Unity】流式播放远端音频:WAV格式音频篇(一)

    先了解一下wav的格式: 参考1:【音频】WAV 格式详解_tyustli的博客-CSDN博客_wav文件格式详解 wav 文件支持多种不同的比特率、采样率、多声道音频。WAV 文件格式是 Microsoft 的 RIFF 规范的一个子集,用于存储多媒体文件。RIFF(resource interchange file format 资源互换文件格式,以 chu

    2024年02月06日
    浏览(54)
  • 将音频格式从flac转到wav的两种方法

    最近在智能语音中用到了数据集cn-celeb。这个数据集的音频格式是flac,而在做数据增强(augmentation)以及模型训练时用的数据格式是wav,因此需要把音频格式从flac转到wav。我在ubuntu下摸索了一番,找到了两种方法。   1,基于Linux下的sox命令写shell脚本实现 SoX​​(即 Sound eXch

    2024年02月03日
    浏览(43)
  • mp3怎样才能转换成wav格式?音频互相转换的方法

    一,什么是WAV WAV,全称为波形音频文件(Waveform Audio File Format),是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来,WAV格式因其无损的音频质量和广泛的兼容性,成为了多媒体应用中不可或缺的一部分。本文将从WAV格式的定义、特点、应用以及与其他音

    2024年04月14日
    浏览(58)
  • Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法

    Python的集成环境我一般使用的是 Winpython , Winpytho 脱胎于pythonxy,面向 科学计算 , 兼顾数据分析与挖掘 ;Anaconda 主要面向数据分析与挖掘方面 ,在大数据处理方面有自己特色的一些包; Winpytho 强调 便携性 ,被做成绿色软件,不写入注册表,安装其实就是解压到某个文件夹

    2024年01月18日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包