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

什么是残差矢量量化?

一、说明

        基于残差矢量量化的神经音频压缩方法正在重塑现代音频编解码器的格局。在本指南中,了解 RVQ 背后的基本思想以及它如何增强神经压缩。

        数据压缩在当今的数字世界中发挥着关键作用,促进信息的高效存储和传输。由于当今超过 80% 的互联网流量来自音频和视频流,因此开发更高效的数据压缩可以产生相当大的影响 - 降低成本并显着改善网络的整体能源和碳足迹。

        传统的压缩算法一直致力于减少数据序列中的冗余(无论是图像、视频还是音频),同时大幅减小文件大小,但代价是丢失一些原始信息。MP3 编码算法极大地改变了我们存储和共享音乐数据的方式,这是一个著名的例子。

        神经压缩技术作为一种新方法正在迅速兴起,它利用神经网络来表示、压缩和重建数据,有可能实现高压缩率和几乎为零的感知信息损失

用于重建的神经压缩放大和超分辨率技术

        当与重建的放大和超分辨率技术相结合时,神经压缩方法可以实现近乎无损的功能(来源)。
        特别是在音频领域,基于残差矢量量化的神经音频编解码器取代了传统的手工制作的管道。最先进的人工智能模型,如 Google 的SoundStream和Meta AI 的EnCodec,已经能够熟练地在广泛的比特率范围内编码音频信号,这标志着可学习编解码器向前迈出了重要一步。

        在这篇博文中,我们将概述神经压缩和残差矢量量化背后的主要思想。

二、神经压缩

神经压缩旨在将各种数据类型(无论是像素形式(图像)、波形(音频)还是帧序列(视频))转换为更紧凑的表示形式,例如向量

像素、波形和帧通过神经压缩映射到矢量。

        关键是,这种转换不仅仅是简单地减小大小:它产生数据的表示,其中模式被自动识别、存储,然后用于重建。这种表示称为嵌入,广泛用于从语言模型到图像生成器的深度学习中。

        例如,在图像压缩的背景下,神经压缩不是记录每个像素值,而是学习识别关键特征或视觉模式。与自动编码器一样,学习到的特征随后用于高精度地重建图像。类似地,波形可以转换为矢量格式并解码以重新生成声音。

        关于神经压缩的学术讨论强调了其无损接近无损压缩能力的潜力,即以最小的质量下降来压缩和解压缩数据的能力。事实上,当这些模型与迭代去噪和扩散相结合以进行放大或超分辨率技术时,它们可以以高度忠实于原始数据的方式重新创建数据。

使用基于扩散的恢复模型去模糊图像(来源)。

        鉴于人类视觉和听觉系统往往比其他细节更容易注意到某些细节,这种方法更加重视和强调知觉损失。此外,该技术允许基于相同的矢量表示将内容自适应转换为不同的质量(分辨率、比特率或帧速率)。

        在下一节中,我们将了解如何应用这些一般思想来使用神经音频编解码器压缩音频数据。最后,我们讨论了一个缺失的关键组件,残差矢量量化,以实现高压缩率。

三、神经音频编解码器和 RVQ

        本质上,音频编解码器将录制的声音(数字音频信号)转换为给定的内容格式。目标是保持声音的原始品质,同时减小文件大小和比特率。最先进的神经音频压缩(或神经音频编解码器)采用深度神经网络来实现相同的目标。

        基于自动编码器的简单方法没有帮助,因为音频信号具有非常高的信息密度并且需要正确表示高维向量。因此,需要采用量化技术来降低这些向量的维数。现在让我们概述一下量化的工作原理。

EnCodec 架构(来源)。

        上图描绘了 EnCodec 架构,它反映了 SoundStream 的架构。其核心是一种基于端到端神经网络的方法。它由编码器、量化器和解码器组成,全部同时训练。

        以下是管道运行方式的分步概述:

  1. 编码将每个固定长度的样本(仅几毫秒的音频波形)转换为预先确定的固定维度的向量。
  2. 然后,量化通过称为残差矢量量化的过程来压缩该编码矢量,该过程源自数字信号处理。
  3. 最后,解码器获取该压缩信号并将其重建为音频流。然后使用鉴别器组件将此重建的音频与原始音频进行比较。鉴别器测量两者之间的数值差异,称为鉴别器/生成器损失。
  4. 除了鉴别器损失之外,该模型还计算其他类型的损失。这些损失包括将重建的波形和梅尔谱图与原始波形和梅尔谱图进行比较,并评估承诺损失以稳定编码器的输出。最终目标是确保音频输出密切反映初始输入。

        数据压缩的关键发生在量化器级别。下图说明了这个想法:

        该图概述了单个量化步骤的逻辑,该步骤将 128 维向量减少为单个数字(码本中的索引),从而压缩信息。


        考虑编码器将音频样本转换为 128 维向量。

  • 第一量化器层具有包含固定数量的相同维度的可学习向量的码本表。
  • 将输入向量与码本中的向量进行比较,并提取最相似向量的索引。
  • 这是压缩阶段:我们刚刚用一个数字(密码本中的相应索引)替换了 128 个数字的向量。

        实际上,单个量化器层需要非常大(实际上是指数级大)的码本来准确表示压缩数据。

        残差矢量量化 (RVQ)提供了一个优雅的解决方案。RVQ 可以通过使用级联码本为这些高维向量提供逐渐更精细的近似。

        这个想法很简单:主码本提供输入向量的一阶量化。然后使用辅助码本进一步量化残差或数据向量与其量化表示之间的差异

        RVQ 将量化过程分解为多个层,每一层都处理前一层的残余误差。这允许系统缩放以在不同的比特率上运行(通过缩放层数)。 


        这种分层方法仍在继续,每个阶段都专注于前一阶段的残差,如上图所示。因此,RVQ 不是尝试直接使用单个庞大的码本量化高维向量,而是解决了这个问题,在显着降低计算成本的情况下实现了高精度。

四、进一步阅读

        要在 Pytorch 中试验 RVQ,您可以使用lucidrains的优秀开源VQ 存储库。

        我们推荐R. Kumar 等人最近发表的论文《采用改进的 RVQGAN 的高保真音频压缩》 。(以及其中的文献)以了解神经音频压缩的最新进展。作者介绍了一种高保真“通用”神经音频压缩算法,可以用单个通用模型压缩所有音频域(语音、环境、音乐等),使其适用于所有音频的生成建模。提供开源代码和模型权重(以及演示页面)。

五、最后的话

        基于残差矢量量化的神经压缩方法正在彻底改变音频(并且可能很快还会改变视频)编解码器,提供近乎无损的压缩功能,同时减少计算开销。RVQ 等量化技术对于文本转语音和文本转音乐生成器已变得至关重要。

        更广泛地说,神经压缩的创新不仅意味着技术的进步,而且意味着迈向更高效、更可持续的数字生态系统的飞跃。

参考资料:

  • 音频生成人工智能的最新发展
  • 生成人工智能的大型语言模型简介
  • 使用 Python 中的 LLM 进行自动摘要

相关文章:

什么是残差矢量量化?

一、说明 基于残差矢量量化的神经音频压缩方法正在重塑现代音频编解码器的格局。在本指南中,了解 RVQ 背后的基本思想以及它如何增强神经压缩。 数据压缩在当今的数字世界中发挥着关键作用,促进信息的高效存储和传输。由于当今超过 80% 的互联网流量来自…...

计算机网络(第六版)复习提纲2

二、物理层 2.1 物理层基本概念 物理层协议常常成为物理层规程 物理层的主要任务为确定与传输媒体的接口有关的一些特性: 1.机械特性:指明接口所用接线器的尺寸等; 2.电气特性:指明接口电缆各条线上的电压范围; 3.功能…...

11k+star 开源笔记应用真香 centos部署教程

leanote binary installation on Mac and Linux (En) life edited this page on Jul 21, 2017 10 revisions Pages 26 Home How to develop leanote 如何开发leanote How to install leanote on Ubuntu? How to Upgrade Leanote Install Mongodb leanote api leanote …...

win下安装tensorflow

1首先ctrlaltdelete打开任务管理器查看GPU型号 2或者右键我的电脑然后如下方式查看显卡发现没有navida没有GPU...

SpringBoot 入门

1.SpringBoot介绍 1.1.什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”,Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速开发 Spring应用的方式。 1.2.Spring Boot 特点 • 嵌…...

使用WebFlux处理WebSocket连接的全生命周期案例

使用WebFlux处理WebSocket连接的全生命周期案例 简介: 在Web应用程序开发中,WebSocket是一种用于实现双向通信的协议。Spring WebFlux提供了对WebSocket的支持,使您能够轻松地处理WebSocket连接和消息。本博客将介绍如何使用WebFlux处理WebS…...

【REST2SQL】10 REST2SQL操作指南

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…...

199_二叉树的右视图

描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 思路 对树进行深度优先搜索,在搜索过程中,我们总是先访问右子树。那么对于每一层来说,…...

第七讲_css浮动

css浮动 1. 设置浮动2. 浮动的特点3. 浮动的影响4. 解决浮动的影响4.1 解决父元素高度塌陷的问题4.2 解决对兄弟元素影响问题 1. 设置浮动 浮动是通过float属性设置,float取值范围: none:不浮动,默认值。left:向左浮…...

2024秋招,顺丰科技测试开发工程师一面

前言 今天回顾一下,一个被捞的全流程面试经历 时间线 9月21日测评 10月26日技术一面,本来是11点半开始,我正做另一个笔试呢,突然给我打电话开面 20分钟结束,一开始以为KPI,结果给过了 10月31日技术二…...

基于apache的http文件服务配置

背景: 公司的产品使用的第三方模组可以OTA,厂家提供的是window开启软件,这样就可以在本机做http下载服务器,然后使用端口映射的方式,公开到外网,这样就可以进行4G网络访问内网服务器了。但这个有个弊端&am…...

连铸工艺和模铸工艺有什么区别。

问题描述:连铸工艺和模铸工艺有什么区别。 问题解答: 连铸工艺和模铸工艺在多个方面存在显著差异: 指代不同: 模铸是成批大量生产锻件的锻造方法。连铸即为连续铸钢的锻造方法。 工艺不同: 模铸在锻压机械的作用…...

pyqt treeWidget树生成

生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…...

DataFunSummit:2023年云原生大数据峰会:核心内容与学习收获(附大会核心PPT下载)

随着数字化转型的深入推进,大数据技术已经成为企业获取竞争优势的关键因素之一。本次峰会汇聚了业界顶尖的大数据专家、企业领袖和技术精英,共同探讨云原生大数据领域的最新技术和趋势。本文将深入分析峰会的核心内容,并探讨参会者从中能学到…...

docker 容器添加指定网络地址

docker 容器添加指定网络地址 在搭建halo博客时,准备让 halo、mysql8.1、nginx 三个容器在同一个网段中,并指定IP。 实现docker内部容器之间网络互通。 查看容器网络信息命令 docker inspect 容器名各容器部署成功后网络效果如下: nginx …...

后端怎样防止重复提交订单?

参考文章 通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题, 如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后…...

数据结构之二叉搜索树

二叉搜索树 满足条件: 1.对于根节点:左子树中所有节点的值小于右子树中所有节点的值 2.任意节点的左右子树也是二叉搜索树,同样满足条件1 二叉搜索树的常用操作 我们将二叉搜索树封装为一个类 BinarySearchTree ,并声明一个成员变…...

《设计模式的艺术》笔记 - 抽象工厂模式

介绍 提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构…...

7.11、Kali Linux中文版虚拟机安装运行教程

目录 一、资源下载准备工作 二、安装教程 三、kali linux换源 四、apt-get update 报错 一、资源下载准备工作 linux 中文版镜像历史版本下载:http://old.kali.org/kali-images/ 大家可以自行选择版本下载,本人下载的是2021版本 二、安装教程 打开vmvare wokst…...

Go+快速开始详细指南

Go快速开始 Go编程语言是为工程、STEM教育和数据科学设计的。 对于工程:用儿童能掌握的最简单的语言工作。对于STEM教育:学习一门可以在未来工作中使用的工程语言。对于数据科学:用同一种语言与工程师交流。 安装方法 现在,我们建议您从源代码安装Go。 注意:需…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

解析“道作为序位生成器”的核心原理

解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制&#xff0c;重点解析"道作为序位生成器"的核心原理与实现框架&#xff1a; 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...