音频基础--PCM音频

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

1、PCM定义

  PCM 全称 Pulse-Code Modulation,就是脉冲调制编码,是用于将波形表示的模拟音频信号转换为数字1和0表示的数字音频信号,而不压缩也不丢失信息的处理技术。简单来说就是一种用数字表示采样模拟信号的方法

  如下是使用Audacity音频处理软件截取1~2s的时间段内音频波形图:
音频基础--PCM音频
  我们再对这个区间的波形图进行放大:

音频基础--PCM音频

  上面一个像火柴棒的是什么?它其实就是一个样本,接下来介绍PCM 几个重要问题:采样(Sampling) 、量化(Quantization) 、编码(Coding)、声道存储

2、采样

  通常自然界的声音可以通过一条曲线在坐标中显示连续的模拟信号表示:
音频基础--PCM音频  为了更加容易理解 PCM,选取其中的一个波形,假设这一个波形表示一秒的音频模拟信号。则采样可以如下图所示:
音频基础--PCM音频
  其中红色的曲线表示原始信号;蓝色垂直线段表示是当前时间点对原始信号的一次采样。

  采样率:sampel rate,每秒钟采集的样本数,采样频率一般越大,转换失真越小,声音的还原度就越高,质量越好,同时占用的空间也会越大。。常见的采用率有:44100HZ,48000HZ和91KHZ。

3、量化

  原始信号采样后,需要通过量化来描述采样数据的大小。
音频基础--PCM音频
  量化处理过程,就是将时间连续的信号,处理成时间离散的信号,并用实数表示。这些实数将被转换为二进制数用于模拟信号的存储和传输。在图例中,如果说采样是画垂直线段的话,那么量化就是画水平线,用于衡量每次采样的数字指标:
音频基础--PCM音频
  每条横线表示一个等级(level),为了更好的描述量化过程.引入位深(bit-depth) 概念:用来描述存储数字信号值的 bit 数。
常用的模拟信号位深有:

  • 8-bit:2^8 = 256 levels,有 256 个等级可以用于衡量真实的模拟信号;
  • 16-bit:2^16 = 65,536 levels,有 65,536 个等级可以用于衡量真实的模拟信号;
  • 32-bit:2^32 = 4294967296 levels,有 4294967296 个等级可以衡量真实的模拟信号。其中 16-bit 的最常见。显而易见位深越大对模拟信号的描述将越真实,对声音的描述更加准确。

  量化的过程就是将一个平顶(同一个高度)样本四舍五入到一个可用最近 level 描述的过程。如图中黑色加粗梯形折线。量化过程中,我们将尽量让每个采样和一个 level 匹配,因为每个 level 都是表示一个 bit 值。

4、编码

音频基础--PCM音频
  编码就是将每个 sample 数据转换成二进制数据,该数据就是 PCM 数据。PCM 数据可以直接存储在介质上,也可以在经过编解码处理后进行存储或传输。PCM 数据常用量化指标: 采样率、位深、声道数、采样数据是否有符号(有符号的采样数据不能使用无符号的方式播放)、字节序(表示 PCM 数据是用大端存储还是小端存储,通常是小端存储)。 例如: ffmpeg 常见的 PCM 数据格式 s16le,它表示有符号的 16 位小端pcm 数据.

5、声道

  声道:channel,表示音频采集源的个数,比如:单声道,采集源只有一个;双声道(立体声),采集源有两个,分别为左和右;多声道(环绕声),采集源有多个。声道越多,播放的音频效果越立体,但是存储的数据越大。
 
  对于多声道(大于一个声道)的PCM音频,在实际编码中,我们也按照单声道处理,统称为一个采样,如上面的单声道,双声道和三声道的一个采样大小分别为:8bits,18bits和24bits;可以将多声道分离为一个个单声道。

  通过上面的介绍,我们可以得出如下关系:

  • sample_bits = depth_bits
  • channels_sample_bits = sample_bits* channel
  • samples_bits_per_second = sample_rate * depth_bits * channel = sampe_rate * sample_bits * channel;

6、存储

  例如一段有符号的 8-bit 的 pcm 数据:

+---------+-----------+-----------+----
 binary  | 0010 0000 | 1010 0000 | ...
 decimal | 32        | -96       | ...
+---------+-----------+-----------+----

  其表示的采样范围是 -128 ~ 127. 当含有多通道时候 PCM 数据就会交叉排列(通常)以双声道为例:

+---------+-----------+-----------+-----------+-----------+----
     FL  |     FR    |     FL    |     FR    |     FL    |
+---------+-----------+-----------+-----------+-----------+----

  对于 8-bit 有符号的 PCM 数据而言,上图表示第一个字节存放第一个左声道数据(FL),第二个字节放第一个右声道数据(FR),第三个字节放第二个左声道数据(FL)…不同的驱动程序对于多声道数据的排列方式可能稍有区别,下面是常用的声道排列地图:

2:  FL FR                       (stereo)
3:  FL FR LFE                   (2.1 surround)
4:  FL FR BL BR                 (quad)
5:  FL FR FC BL BR              (quad + center)
6:  FL FR FC LFE SL SR          (5.1 surround - last two can also be BL BR)
7:  FL FR FC LFE BC SL SR       (6.1 surround)
8:  FL FR FC LFE BL BR SL SR    (7.1 surround)

  下图展示的是8bit和16bit,单声道和多声道的存储方式示意图:
音频基础--PCM音频
  下图展示的左右声道的PCM数据:
音频基础--PCM音频
  从以上可以看出,刚开始的4个字节是同一个采样点,其中0x04e8是左声道,0x01c9是右声道,发现是不一样的。通过cool edit pro查看波形:

音频基础--PCM音频

  从上图,可以发现左右声道的数据虽然形状类似,但是值得大小不同:

参考资料:
《https://zhuanlan.zhihu.com/p/396273481》
《https://www.cnblogs.com/smartNeo/p/14788021.html》文章来源地址https://www.toymoban.com/news/detail-405948.html

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

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

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

相关文章

  • 三、pcm音频转wav

    ffmpeg录制下来的音频为pcm格式(内部存储着十六进制数据),但pcm格式的音频无法直接播放 本文先将pcm转换成wav格式(提要提前了解音频知识) 首先分析wav文件格式(wav的本质是在pcm数据前加上文件头),即在pcm的十六进制数据前加上文件头(文件头也是十六进制数据,但

    2023年04月08日
    浏览(43)
  • 音频格式(一)PCM和WAV

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

    2023年04月24日
    浏览(36)
  • QT-播放原始PCM音频流

    QT +=  multimedia audioplay.h audioplay.cpp

    2024年02月12日
    浏览(35)
  • C++ 多路音频pcm混音算法

    1、均值化混音算法 不适合商用,声音的损失比较大,不建议用,建议用第二种声音混音 short remix(short pcm1,short pcm2){ int value = pcm1+ pcm2; return (short)(value/2) } 2、归一化混音算法 输入数据为48Khz-2-16bit音频数据 方法:为避免发生溢出,使用一个可变的衰减因子对语音进行衰减。这

    2024年04月12日
    浏览(24)
  • PCM音频格式解析和帧大小计算

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

    2023年04月08日
    浏览(35)
  • Unity AudioClip和PCM音频数据的转化

    1 PCM音频数据转化AudioClip   假设PCM音频当前是16Khz采样率,16bit数据 2 提取AudioClp中的数据转化为PCM bytes字节数组

    2024年02月05日
    浏览(42)
  • C# 将音频PCM数据封装成wav文件

    之前实现了《C++ 将音频PCM数据封装成wav文件》,最近将其改成了C#版本。使用C#实现录音功能时还是需要写wav文件的,直接用C#实现也是比较简单的,这样可以免去不必要的依赖。 首先需要构造wav头部,wav文件音频信息全部保存在头部,我们要做的就是在PCM数据的前面加入w

    2024年02月07日
    浏览(40)
  • I2S/PCM接口及音频codec

    目录 1.I2S接口及时序 1.1 I2S接口信号 1.2 I2S接口时序 1.3 MCLK的作用 2. PCM(TDM)接口  2.1 PCM(TDM)接口信号 2.2 PCM接口时序 3.audio codec  可参考本人转载的一篇文章: 数字音频接口(I2S,PCM/TDM,PDM)_cy413026的博客-CSDN博客 数字音频接口。 https://blog.csdn.net/cy413026/article/details/132590286?csdn_shar

    2024年02月01日
    浏览(74)
  • alsa音频pcm设备之i2c调试

    i2cdetect 列举 I2C bus i2cdetect -l ls /dev/i2c* 列出I2C bus i2c-7 上面连接的所有设备,并得到i2c设备地址 i2cdetect -y 7 发现i2c设备的位置显示为UU或表示设备地址的数值,UU表示设备在driver中被使用. I2cdump i2c设备大量register的值 i2cdump -y 7 0x40 I2cset设置i2c设备某个register的值 i2cset -y 7 0x40 0x0

    2024年02月08日
    浏览(40)
  • Qt-FFmpeg开发-音频解码为PCM文件(9)

    目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-使用libavcodec API的音频解码示例(MP3转pcm) 1、概述 2、实现效果 3、主要代码 4、完整源代码 更多精彩内容 👉个人内容分类汇总 👈 👉音视频开发 👈 最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学

    2023年04月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包