当前位置: 首页 > 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.dtcms.com/a/312979.html

相关文章:

  • 使用 Docker 部署 Golang 程序
  • 计数组合学7.12( RSK算法的一些推论)
  • 考研复习-计算机组成原理-第二章-数据的表示和运算
  • PHP面向对象编程与数据库操作完全指南-下
  • 深入解析C++函数重载:从原理到实践
  • 2025年测绘程序设计比赛--基于统计滤波的点云去噪(已获国特)
  • MySQL梳理三:查询与优化
  • python新功能match case|:=|typing
  • Hertzbeat如何配置redis?保存在redis的数据是可读数据
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
  • ELECTRICAL靶机复现练习笔记
  • Leetcode:1.两数之和
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用(379)
  • ubuntu24.04安装selenium、edge、msedgedriver
  • 05.Redis 图形工具RDM
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第四天(DOM编程和AJAX异步交互)
  • k8s+isulad 国产化技术栈云原生技术栈搭建1-VPC
  • 使用ACK Serverless容器化部署大语言模型FastChat
  • 如何在不停机的情况下,将MySQL单库的数据迁移到分库分表的架构上?
  • 【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序
  • [AI8051U入门第十五步]W5500实现DHCP自动获取IP
  • SpringBoot+Vue高校实验室预约管理系统 附带详细运行指导视频
  • Matlab算法编程示例4:数值解法求解常微分方程的代码实例
  • Python类与对象指南
  • java贪吃蛇小程序
  • 个人项目介绍:STM32F407核心多层电路板
  • Java试题-选择题(8)
  • 25 渗透测试培训课程第一部分 - 信息收集 内容概要
  • 江协科技STM32 14-1 WDG看门狗