当前位置: 首页 > news >正文

音视频学习(五十):音频无损压缩

音频无损压缩是一种在不损失任何原始音频信息的前提下,减小音频文件大小的技术。它与有损压缩(如MP3、AAC)不同,后者通过删除人耳听不见的音频信息来大幅压缩文件,但会导致音质下降。无损压缩的目标是在保持原始音频质量的同时,尽可能地提高存储效率。

基本原理

无损压缩的核心思想是识别和消除音频数据中的冗余。这种冗余主要体现在以下几个方面:

  • 时间域冗余: 音频信号在短时间内往往具有相似的波形。例如,一个持续的音符在短时间内可以被预测。
  • 频率域冗余: 某些频率分量在一段时间内是高度相关的,或者可以被有效地建模。
  • 统计冗余: 某些数据模式或比特序列出现的频率比其他模式更高。

无损压缩算法通常会综合利用这些冗余,通过预测、变换和编码等一系列步骤来压缩数据。

预处理阶段

音频帧划分(Framing)

音频数据以连续 PCM(Pulse Code Modulation)采样点形式存储。为了便于分析与建模,压缩算法会先将数据划分为多个 定长或变长的帧,每帧通常包含数百到数千个采样点。

  • 定长帧:简单实现,压缩率稍低;
  • 可变长度帧:复杂但适应性强,能提高压缩效果。

通道处理(Channel Decorrelation)

对于立体声或多通道音频,左右声道之间往往存在高度相关性。此时可以应用中-边(Mid/Side)编码,将:

  • Mid(中) = (L + R) / 2
  • Side(边) = (L - R) / 2

这样的变换可以显著减少冗余,提高压缩效率。

线性预测建模(Linear Prediction)

音频信号通常具有短时相关性,即当前样本可以用前面若干个样本进行预测。线性预测分析(LPC)正是基于此原理。

LPC建模原理

假设音频样本为 x[n],可用如下公式预测:

在这里插入图片描述

残差计算(Prediction Residual)

预测误差(即残差)是:

在这里插入图片描述

因为残差的幅度通常远小于原始信号,所以编码残差的代价更小。

LPC系数求解方法

常见算法包括:

  • Levinson-Durbin 递归法;
  • Burg 算法;
  • 矩阵最小二乘法。

熵编码(Entropy Coding)

残差信号仍需进一步压缩。熵编码是一种无损压缩编码技术,根据数据符号的概率分布,使用尽可能短的比特串表示高频出现的符号。

常用方法包括:

Rice编码(Golomb-Rice)

  • 适合小整数分布,计算简单;
  • 主要用于FLAC等格式;
  • 将每个残差值分为商和余数部分,用二进制方式编码。

Huffman编码

  • 构造一棵最优前缀树;
  • 根据符号频率生成不等长编码;
  • 在ALAC、WAVPACK中常用。

算术编码(Arithmetic Coding)

  • 精度更高,但计算更复杂;
  • 稀有用于音频无损压缩(多用于视频压缩或文件压缩)。

误差控制与流同步(可选步骤)

CRC 校验

每帧或每数据块可以附加循环冗余校验码(CRC),用于数据完整性检测。

同步码与帧头信息

为了支持流式传输和断点恢复,许多无损格式(如 FLAC)会为每一帧添加帧头,包含:

  • 帧起始码;
  • 采样率、通道数;
  • 块大小;
  • CRC 校验等。

封装与元数据

无损音频格式通常需要将压缩数据与元数据封装成一个整体文件。

元数据包括:

  • 采样率、通道数、量化位数;
  • 标签信息(如歌手、专辑、封面图);
  • Seek Table(快速定位索引);
  • 编码器版本等。

封装格式

  • FLAC 使用原生 FLAC 流封装;
  • ALAC 使用 MP4(M4A)封装;
  • WavPack 可使用自己的封装或嵌入 RIFF/WAV;
  • APE 使用 Monkey’s Audio 专用格式。

流程图

原始 PCM 数据↓
[帧划分] ←→ [通道预测][LPC 预测建模][残差计算][熵编码(如 Rice/Huffman)][封装帧头、元数据]↓
输出压缩音频文件(FLAC/ALAC/APE等)

解码过程(反向处理)

音频无损解码过程为压缩流程的完全反向操作,依次执行:

  1. 解析封装格式;
  2. 解出帧头信息和熵编码数据;
  3. 反熵解码 → 得到预测残差;
  4. 使用预测系数恢复原始PCM;
  5. 重建通道结构、拼接音频帧。

因为是无损压缩,解码后音频数据与原始输入数据逐位一致

主流无损音频压缩格式

FLAC (Free Lossless Audio Codec)

FLAC 是目前最流行、应用最广泛的无损压缩格式。

  • 技术特点:
    • 主要采用线性预测技术,结合自适应系数和多种预测阶数,能高效地处理不同类型的音频。
    • 使用Rice 编码对残差进行熵编码,这是一种专为整数数据优化的变长编码方法。
    • 支持高达 24-bit/192 kHz 的高分辨率音频。
    • 开源和免版税,这使其成为行业标准,被几乎所有主流播放器和设备支持。
  • 优点: 压缩比高(通常在 30%-50%之间),解码速度快,兼容性极佳。
  • 应用: 音乐流媒体服务(如 Tidal)、数字音乐商店(如 Bandcamp)、个人音乐收藏。

ALAC (Apple Lossless Audio Codec)

ALAC 是苹果公司开发的无损压缩格式,通常封装在 M4A 容器中。

  • 技术特点:
    • 原理与 FLAC 相似,也采用线性预测,但在实现上有所不同。
    • 在早期的 AAC-LC 编码器中,ALAC曾被作为一部分技术,但现在它作为一个独立的格式存在。
  • 优点: 在苹果生态系统(iTunes, iPhone, Apple Music)中无缝支持,压缩效率与 FLAC 相当。
  • 应用: 苹果设备用户、iTunes 音乐库。

APE (Monkey’s Audio)

APE 是早期无损压缩格式的代表,以其极高的压缩比而闻名。

  • 技术特点:
    • 使用更复杂的预测模型和编码技术,旨在将文件压缩到极致。
  • 优点: 压缩比通常高于 FLAC 和 ALAC。
  • 缺点: 压缩和解压缩速度较慢,对计算资源要求较高。开源性不如 FLAC 普及,导致兼容性相对较差。
  • 应用: 追求极致文件大小的用户,但目前已逐渐被 FLAC 取代。

WavPack

WavPack 是一种独特的无损压缩格式,因为它支持混合模式

  • 技术特点:
    • 它能同时生成一个小的、有损的 .wv 文件和一个小的、仅包含差异数据.wvc 文件。
    • 用户可以只使用 .wv 文件进行播放,以节省空间;也可以结合 .wvc 文件,完全恢复原始无损音频。
  • 优点: 灵活性高,兼顾了有损和无损的优点。
  • 应用: 需要在不同场景下灵活选择音质和文件大小的用户。

与有损压缩的区别

比较有损压缩无损压缩
是否丢失数据
典型格式MP3、AAC、OGGFLAC、ALAC、APE
压缩比高(可达10:1)中等(约2:1~3:1)
音质有损(感知接近原声)原汁原味
用途流媒体、移动设备播放音频制作、存档、发烧音响
http://www.xdnf.cn/news/1237825.html

相关文章:

  • 力扣-437.路径总和III
  • 深度学习中的模型知识蒸馏
  • 关于Web前端安全之XSS攻击防御增强方法
  • 广东省省考备考(第六十五天8.3)——判断推理:图形推理(数量规律题目总结)
  • C的运算符与表达式
  • C的数据类型与变量
  • lumerical——锥形波导偏振转换
  • 《前端无障碍设计的深层逻辑与实践路径》
  • JavaWeb学习------SpringCloud入门
  • Web 开发 11
  • JavaScript:编程世界中的“语盲”现象
  • CCF-GESP 等级考试 2025年6月认证C++一级真题解析
  • 推荐系统学习笔记(九)曝光过滤 Bloom Filter
  • 从传热学基础到有限元弱形式推导:拆解热传导问题Matlab有限元离散核心
  • Jupyter Notebook 中高效处理和实时展示来自 OpenCV 和 Pillow 的图像数据探究
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | TodoList(代办事项组件)
  • Android 之 MVC架构
  • JVM学习日记(十五)Day15——性能监控与调优(二)
  • IO流-对象流
  • 回归的wry
  • 前后端交流
  • 电路原理图绘制专业实战教程2
  • Nginx负载均衡配置
  • 6. 平台总线
  • 跨语言模型中的翻译任务:XLM-RoBERTa在翻译任务中的应用
  • Compose笔记(四十一)--ExtendedFloatingActionButton
  • 有限元方法中的数值技术:三角矩阵求解
  • Redis面试精讲 Day 10:Redis数据结构底层实现原理
  • 【AI论文】Rep-MTL:释放表征级任务显著性在多任务学习中的潜力
  • 介绍JAVA语言、介绍greenfoot 工具