问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深入解析 PCM:声音数字化的核心技术

创作时间:
作者:
@小白创作中心

深入解析 PCM:声音数字化的核心技术

引用
CSDN
1.
https://blog.csdn.net/Interview_TC/article/details/146394435

PCM(脉冲编码调制)是音频数字化的核心技术,广泛应用于计算机、嵌入式系统和音频设备中。本文将深入解析PCM的基本概念、工作原理以及在Linux ALSA框架中的实际应用,帮助读者彻底理解这一关键技术。

引言

在计算机、嵌入式系统和音频设备中,PCM(Pulse Code Modulation,脉冲编码调制)是最基础的音频数据格式。无论是 MP3、AAC 还是 FLAC,最终它们的底层都是 PCM。

但 PCM 究竟是什么?它如何转换音频?在 Linux 声卡驱动(ALSA)中,它又是如何工作的?本文将带你彻底理解 PCM,让你不再对 PCM 感到陌生。

1. PCM 的基本概念

PCM 是一种将模拟音频信号转换为数字音频信号的方法。它的核心过程包括:

  1. 采样(Sampling)
  2. 量化(Quantization)
  3. 编码(Encoding)

让我们从一个实际案例讲解。

1.1 采样(Sampling)

采样就是每秒钟从模拟信号中取出多少个数值。采样率(Sample Rate)用 Hz(赫兹)表示,例如:

  • 44.1 kHz(CD 质量):每秒 44100 个采样点。
  • 48 kHz(DVD 质量):每秒 48000 个采样点。
  • 96 kHz(高解析音频):每秒 96000 个采样点。

📌理解方式:

  • 采样率越高,声音的还原度越好,但文件体积也更大。

1.2 量化(Quantization)

采样后,每个点的数值需要转换为离散的数字。

  • 8-bit PCM(256 级别):每个采样点存储 0~255 之间的整数。
  • 16-bit PCM(常见):每个采样点存储 -32768~32767 之间的整数。
  • 24-bit PCM(专业音频):每个采样点存储 -8388608~8388607 之间的整数。

📌理解方式:

  • 位深度(Bit Depth)越高,音质越细腻。
  • 16-bit PCM 是目前最常见的音频格式。

1.3 编码(Encoding)

  • PCM 编码最常见的格式是 Signed 16-bit Little Endian,在 Linux 中表示为 S16_LE。
  • 数据格式:PCM 数据可以是单声道(Mono)或立体声(Stereo)。

示例:CD 质量的 PCM

Format: Signed 16-bit Little Endian
Sample Rate: 44100 Hz
Channels: 2(Stereo)

2. PCM 设备与功放(Amplifier)的区别

在音频系统中,我们通常会看到 PCM 设备(PCM Device)和功放(Amplifier),它们的作用截然不同。

2.1 什么是 PCM 设备?

在 Linux ALSA(Advanced Linux Sound Architecture)框架中,PCM 设备指的是负责处理 PCM 音频数据流的设备。它可以是:

  • I2S/SAI 控制器(用于 PCM 数据传输)
  • 音频 CODEC(如 PCM1754)(处理 PCM 并进行 D/A 转换)
  • 数字信号处理单元(DSP)

如何识别 PCM 设备?

aplay -l

示例输出:

**** List of PLAYBACK Hardware Devices ****
card 0: pcm1754audio [pcm1754-audio], device 0: 30c30000.sai-lm48100q lm48100q-0
  Subdevices: 1/1
  Subdevice #0: subdevice #0

📌理解方式:

  • PCM 设备处理 PCM 数据流,并将其传输到 DAC 或其他组件。
  • pcm1754audio 代表 PCM 设备。

2.2 LM48100Q 是 PCM 设备吗?

❌不是!

LM48100Q 是一个功率放大器(Audio Power Amplifier),它的作用是放大模拟音频信号并驱动扬声器。

但 PCM 设备(如 I2S 控制器或 CODEC)会向它提供音频信号,然后它负责放大输出。

📌PCM 设备 vs 功放的区别

设备类型
作用
是否是 PCM 设备?
I2S/SAI 控制器
传输 PCM 数据
✅ 是
音频 CODEC(如 PCM1754)
处理 PCM 数据,并进行 D/A 转换
✅ 是
功放(如 LM48100Q)
放大模拟音频信号
❌ 不是

📌理解方式:

  • PCM 设备 = 处理数字 PCM 音频的设备
  • 功放 = 处理模拟音频信号的设备
  • LM48100Q 不能直接处理 PCM 数据,它只能接收 DAC 输出的模拟信号,然后进行放大。

3. PCM 设备的 Linux 命令

3.1 查看 PCM 设备

cat /proc/asound/cards
aplay -l  # 列出所有 PCM 播放设备
arecord -l  # 列出所有 PCM 录音设备

📌示例输出:

**** List of PLAYBACK Hardware Devices ****
card 0: pcm1754audio [pcm1754-audio], device 0: 30c30000.sai-lm48100q lm48100q-0

表示:

  • card 0:声卡编号 0。
  • pcm1754audio:设备名。
  • lm48100q:功放芯片(不是 PCM 设备)。

4. 结论

✅PCM 设备是指处理数字 PCM 数据的设备,如 I2S 控制器、CODEC。

✅LM48100Q 只是功放,不是 PCM 设备,它接收 PCM 设备输出的模拟音频信号并放大。

✅如果要播放 PCM 音频,你需要一个 CODEC(如 PCM1754)将 PCM 转换成模拟信号,再送到 LM48100Q 进行放大。

掌握 PCM 之后,你就掌握了数字音频的核心原理! 🚀

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号