PCM格式

article/2025/9/30 19:24:15

算是上课吧,感谢原作者~

1. 音频简介

 

     经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.

     44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);

     22050HZ 8bit  mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;

 

    当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。 

    采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。


     对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);

     而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。

 

    人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。

 

    每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:

   1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;

   2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;

   4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.

   如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.

 

这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个 wav 文件的播放长度。

 

譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是 "22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),

那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒), 
播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。

但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(*.wav)中至少带有 42 个字节的头信息, 在计算播放时间时应该将其去掉, 
所以就有:(424644-42) / (22050*16*2/8) ≈ 4.8140816(秒). 这样就比较精确了.

 

关于声音文件还有一个概念: "位速", 也有叫做比特率、取样率, 譬如上面文件的位速是 705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒的意思;

 

压缩的音频文件常常用位速来表示, 譬如达到 CD 音质的 MP3 是: 128kbps / 44100HZ.



   

2. PCM数据格式

 

    PCM(Pulse Code Modulation)也被称为 脉码编码调制。PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入。(它的基本组织单位是BYTE(8bit)或WORD(16bit))

 

    一般情况下,一帧PCM是由2048次采样组成的( 参 http://discussion.forum.nokia.com/forum/showthread.php?129458-请问PCM格式的音频流,每次读入或输出的块的大小是必须固定为4096B么&s=e79e9dd1707157281e3725a163844c49 )。

 

    如果是双声道的文件,采样数据按时间先后顺序交叉地存入。如图所示:

  

 


   PCM的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。

首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示。

 

    样本大小      数据格式            最小值    最大值

    8位PCM       unsigned int         0       225

    16位PCM      int                -32767    32767


http://chatgpt.dhexx.cn/article/BlGFe8iK.shtml

相关文章

wav pcm格式文件解析

首先取一个wav文件,其次找一个wav文件格式简单符合pcm编码的,也就是文件的第14字节位置要为1 确认此wav文件此处为01 00 然后进行解析 然后我们还要知道他的位宽(8位还是16位)、几声道(单声道还是双声道)…

VS语音信号处理(4) C语言WAV格式语音存为PCM格式语音工程实例

VS语音信号处理(4) C语言WAV格式语音存为PCM格式语音工程实例 前言一. 工程实现二. 生成编译三. 小结 前言 语音识别相关算法一般在MATLAB上进行仿真验证与实验,在工程上一般还是在VS中进行实现落地,本系列将介绍语音信号处理在C…

PCM格式详解

PCM格式详解 简介: PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的…

PCM数据格式

1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道; 当然…

PCM编码格式

目录 一、PCM音频编码格式 1. 相关英文单词 2. PCM数据结构 2.1 单声道数据 2.2 多声道数据 2.3 小结 二、WAV音频文件格式 一、PCM音频编码格式 1. 相关英文单词 Amplitude:幅度 PAM:Pulse Amplitude Modulation 脉冲幅度调制(数字信号过程采样…

音频处理——详解PCM数据格式

目录 知识储备什么是PCM采样采样率重采样 量化编码PCM常用指标 PCM数据流 知识储备 音频处理——音频编码原理简介 音频处理——音频处理的基本概念 什么是PCM PCM全称Pulse-Code Modulation,翻译一下是脉冲调制编码。 在音视频中,PCM是一种用数字表…

PCM格式介绍

转自:http://www.cnblogs.com/cheney23reg/archive/2010/08/08/1795067.html http://wiki.multimedia.cx/index.php?titlePCM PCM数据格式 PCM(Pulse Code Modulation)也被称为 脉码编码调制。PCM中的声音数据没有被压缩,如果是单声道的文件&#xff…

PCM文件格式简介(比较专业)

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。 脉冲编码调制PCM文件格式简介 将音频数…

PCM数据格式介绍

目录 什么是PCM Sampling(采样) 采样率(Sample rate) Quantization(量化) Encoding(编码) PCM数据常用量化指标 PCM数据流 音量控制 采样率调整 什么是PCM PCM全称Pulse-Code Modulation&#xff…

PCM音频数据格式介绍

1. What is PCM? PCM(Pulse-code-modulation)是模拟信号以固定的采样频率转换成数字信号后的表现形式。 Sample Rate : 采样频率单位为:Hz。采样频率越高,音频质量越好,占用空间也越大。 Sign : 音频数据是否是有符号的。通常情况下都是有…

单调栈图文详解(附Java模板)

啥是"单调栈",它能解决什么样的问题? 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 数据结构与算法专栏的文章图文并茂🦕生动形象&#…

算法之单调栈常见题目

什么时候需要使用单调栈? 通常是一维数组,要寻找任意一个右边或者左边第一个比自己大或小的元素的位置,此时我们就想到可以使用单调栈了。 单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高…

单调栈及单调栈的应用

什么是单调栈 单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大 解决那类问题 要知道单调栈的适用于解决什么样的问题,我们首先需要知道单调栈的作用。单调栈分为单调递增栈和单调…

理解单调栈与单调队列

单调栈 单调栈:栈内的元素按照某种方式排序下单调递增或单调递减,如果新入栈的元素破坏的单调性,就弹出栈内元素,直到满足单调性。 单调栈分为单调递增栈和单调递减栈: 单调递增栈:栈中数据入栈或出栈的…

【栈 单调栈】浅谈单调栈与单调栈的理解

单调栈 定义: 单调栈,顾名思义,是栈内元素保持一定单调性(单调递增或单调递减)的栈。这里的单调递增或递减是指的从栈顶到栈底单调递增或递减。既然是栈,就满足后进先出的特点。与之相对应的是单调队列。 …

单调栈(一)

单调栈基本概念及实现 方案1:对于每一个数,遍历其左右位置,时间复杂度为O(N^2) 方案2:单调栈,每个元素入栈一次出栈一次,时间复杂度为O(N) (一)数组中没有重复值 示例:[…

第九章:单调栈与单调队列

单调栈与单调队列 一、单调栈1、什么是单调栈?2、单调栈的模板(1)问题:(2)分析: 二、单调队列1、什么是单调队列2、单调队列模板(1)问题(2)分析 一…

单调栈算法详解

单调栈算法详解 单调栈使用模板 stack<int> st; //此处一般需要给数组最后添加结束标志符&#xff0c;具体下面例题会有详细讲解 for (遍历这个数组){if (栈空 || 栈顶元素大于等于当前比较元素){入栈;}else{while (栈不为空 && 栈顶元素小于当前元素){栈顶元素…

单调队列和单调栈详解

这里是我的blog&#xff1a;有更多算法分享。排版可能也会更好看一点v https://endlesslethe.com/monotone-queue-and-stack-tutorial.html 前言 单调栈和单调队列算是栈和队列的高级应用吧&#xff0c;在公司面试中应该是不怎么会出现的&#xff08;除非算法岗&#xff1f;…

什么是单调栈

什么是单调栈 单调栈就是单调递增或者单调递减的栈&#xff0c;也就是栈底到栈顶递增或递减&#xff0c;根据单调栈的的这种结构&#xff0c;可以很容易想到运用单调栈可以很容易的把O(n)的时间复杂度优化到O(n),如果使用数组的话&#xff0c;相对的空间复杂度也不会太高 示例 …