北大开源音频编辑模型PlayDiffusion,可实现音频局部编辑,比传统 AR 模型的效率高出 50 倍!

北大开源了一个音频编辑模型PlayDiffusion,可以实现类似图片修复(inpaint)的局部编辑功能 - 只需修改音频中的特定片段,而无需重新生成整段音频。此外,它还是一个高性能的 TTS 系统,比传统 AR 模型的效率高出 50 倍。

自回归 Transformer 模型已被证明能够高效地从文本合成语音。然而,它们面临着一个显著的局限性:修改生成音频的某些部分(称为修复)或移除它们而不留下不连续的伪影,这超出了它们的标准能力。因此,需要开发更通用的语音编辑工具,并采用不同的方法。请考虑以下句子:

“The answer is out there, Neo. It's looking for you.”

现在假设你想在生成后将“Neo”更改为“Morpheus”。使用传统的 AR 模型,你的选择有限:

重新生成整个句子,这在计算上很昂贵,并且经常导致韵律或语音节奏的变化。

仅替换单词“Neo”,会导致单词边界处出现明显的伪影或不匹配。

从中间点重新生成,例如从“Morpheus。它在寻找你。”,但这可能会改变未编辑部分的韵律(“它在寻找你。”),从而产生不必要的语音节奏变化。

所有这些方法都会损害音频的连贯性和自然性。

相关链接

  • 项目: https://github.com/playht/PlayDiffusion

  • 试用: https://huggingface.co/spaces/PlayHT/PlayDiffusion

PlayDiffusion 简介

在 PlayAI,我们用一种新颖的基于扩散的音频语音编辑方法解决了这个问题。它的工作原理如下:

首先,我们将音频序列编码到离散空间中,将波形转换为更紧凑的表示形式。此表示中的每个单元称为一个标记 (token)。此过程适用于真实语音和文本转语音 (TTS) 模型生成的音频。

当需要修改某个片段时,我们会屏蔽该部分音频。

使用以更新后的文本为条件的扩散模型来对掩蔽区域进行去噪。

周围环境被无缝保留,确保平滑过渡和一致的扬声器特性。

然后使用我们的 BigVGAN 解码器模型将生成的输出标记序列转换回语音波形。

通过使用非自回归扩散模型,我们可以更好地保持编辑边界处的语境,从而实现高质量、连贯的音频编辑。这标志着音频编辑能力的重大进步,并为动态、细粒度的语音修改铺平了道路。完整流程如图 1 所示。

图 1. PlayDiffusion 1.0 模型。

图 1. PlayDiffusion 1.0 模型。

  1. 包含语音“答案就在那儿,Neo。去抓住它!”的输入音频被编码为离散的音频标记。

  2. 与要编辑的语音对应的标记被屏蔽。这里我们屏蔽了“Neo”的标记。

  3. 给定更新后的文本和完整的输入标记序列(即屏蔽和未屏蔽的序列),PlayDiffusion 生成编辑后的输出序列。

  4. 该序列由我们的 BigVGAN 转换为波形,并以从原始片段中提取的说话人嵌入为条件。

离散扩散作为 TTS

在整个音频波形被掩盖的极端情况下,扩散模型可以作为高效的文本到语音 (TTS) 系统发挥作用。

虽然自回归 Transformer 模型在语音合成领域取得了令人瞩目的成果,但其逐个 token 的顺序生成方式本身就存在效率低下的问题。每个 token 都必须基于前一个 token 进行生成,这会导致巨大的计算开销。

相比之下,扩散模型采用非自回归方法——同时生成所有标记,并通过固定数量的去噪步骤对其进行细化。这种根本的架构差异带来了显著的性能优势。

举例来说:对于运行频率为 50 Hz 的音频编解码器,在自回归模型中生成 20 秒的语音需要 1,000 个步骤。而扩散模型可以一次性生成全部 1,000 个 token,并仅需 20 个迭代步骤即可对其进行优化——这使得生成步骤的效率提高了 50 倍,同时又不影响输出的质量或清晰度。

举例来说:对于运行频率为 50 Hz 的音频编解码器,在自回归模型中生成 20 秒的语音需要 1,000 个步骤。而扩散模型可以一次性生成全部 1,000 个 token,并仅需 20 个迭代步骤即可对其进行优化——这使得生成步骤的效率提高了 50 倍,同时又不影响输出的质量或清晰度。

训练

我们从预先训练的仅解码器文本转换器架构开始,并引入了专门针对音频生成定制的关键修改:

非因果掩蔽:

与 GPT 等采用因果掩蔽(允许标记仅关注先前的标记)的标准解码器专用 LLM 不同,我们改进的 LLM 实现使用非因果注意力头。这使得模型能够同时利用过去、现在和未来的标记。

自定义分词器和嵌入缩减:

为了优化效率,尤其是针对英语语音合成,我们使用了自定义字节对编码 (BPE) 分词器,该分词器仅包含 10,000 个文本分词。这大大减少了嵌入表的大小,从而显著提升了计算速度,同时又不影响音频质量。

说话人调节:

我们的模型融合了源自预训练嵌入模型 e(w): ℝᵗ → ℝᵏ 的说话人调节方法,该模型将不同长度 t 的波形映射到维度为 k 的固定大小向量。这能够捕捉说话人的基本特征,确保合成或编辑的音频片段之间语音身份的一致性。

在训练过程中,我们像 MaskGCT [1] 一样,随机屏蔽一定比例的音频 token。模型会根据说话人嵌入、文本输入以及剩余未屏蔽的音频 token 提供的上下文,学习准确预测这些被屏蔽的 token。这种方法可以有效地训练模型处理部分或完全音频屏蔽的场景。给定不同时间步长的文本样本 xₜ,文本条件 C,我们将损失建模为:

在推理过程中,解码会迭代进行,从完全掩码的 token 序列开始。解码过程包含多个步骤,记为 T:

逐步解码过程:

初步预测:在每次迭代中,模型根据当前的掩蔽音频和文本输入生成初始预测 X̂₀。

置信度评分:根据模型的预测,每个 token 都会获得一个置信度分数。新预测的(之前被屏蔽的)token 会被赋予与其预测概率相等的置信度,而之前确定的 token 则保持不变,置信度分数为 1。

自适应重掩码:我们利用一个逐步递减的方案 gamma,选择一定数量的置信度最低的 token,在后续迭代中进行重掩码。每次迭代后,需要重掩码的 token 数量都会逐渐减少,从而使模型的优化工作集中在不确定性最高的区域。更多详情,请参阅 MaskGCT [1]。

这个迭代解码过程持续进行,直到所有步骤完成,逐渐完善标记预测并产生连贯的高质量音频输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis————入门

1,配置相关 我们上一期详细讲了一下使用注解来实现操作数据库的方式,我们今天使用xml来实现,有同学可能有疑问,使用注解挺方便呀,为啥还要注解呀,先来说一下注解我感觉挺麻烦的,但是我们后面要…

【推荐算法】推荐算法演进史:从协同过滤到深度强化学习

推荐算法演进史:从协同过滤到深度强化学习 一、传统推荐时代:协同过滤的奠基(1990s-2006)1.1 算法背景:信息爆炸的挑战1.2 核心算法:协同过滤1.3 局限性 二、深度学习黎明:神经网络初探&#xf…

Java基于SpringBoot的校园闲置物品交易系统,附源码+文档说明

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

Ajax Systems公司的核心产品有哪些?

Ajax Systems 是一家专注于家庭安全和智能系统的公司,其核心产品如下3: 入侵保护设备:如 MotionCam Outdoor 无线室外运动探测器,配备内置摄像头和两个红外传感器,可通过预装电池运行长达三年,能在 15 米距…

64、js 中require和import有何区别?

在 JavaScript 中,require 和 import 都是用于模块导入的语法,但它们属于不同的模块系统,具有显著的区别: 1. 模块系统不同 require 属于 CommonJS 模块系统(Node.js 默认使用)。 语法:const…

Java+Access综合测评系统源码分享:含论文、开题报告、任务书全套资料

JAVAaccess综合测评系统毕业设计 一、系统概述 本系统采用Java Swing开发前端界面,结合Access数据库实现数据存储,专为教育机构打造的综合测评解决方案。系统包含学生管理、题库管理、在线测评、成绩分析四大核心模块,实现了测评流程的全自…

【python】RGB to YUV and YUV to RGB

文章目录 1、YUV2、YUV vs RGB3、RGB to YUV4、YUV to RGB附录——YUV NV12 vs YUV NV21参考1、YUV YUV 颜色空间,又常被称作 YCbCr 颜色空间,是用于数字电视的颜色空间,在 ITU-R BT.601、BT.709、BT.2020 标准中被明确定义,这三种标准分别针对标清、高清、超高清数字电视…

运行示例程序和一些基本操作

欢迎 ----> 示例 --> 选择sample CTRL B 编译代码 CTRL R 运行exe 项目 中 Shadow build 表示是否 编译生成文件和 源码是否放一块 勾上不在同一个地方 已有项目情况下怎么打开项目 方法一: 左键双击 xxx.pro 方法二: 文件菜单里面 选择打开项目

计算机网络第2章(下):物理层传输介质与核心设备全面解析

目录 一、传输介质1.1 传输介质的分类1.2 导向型传输介质1.2.1 双绞线(Twisted Pair)1.2.2 同轴电缆(Coaxial Cable)1.2.3 光纤(Optical Fiber)1.2.4 以太网对有线传输介质的命名规则 1.3 非导向型传输介质…

PHP文件包含漏洞详解:原理、利用与防御

PHP文件包含漏洞详解:原理、利用与防御 什么是文件包含漏洞? 文件包含漏洞是PHP应用程序中常见的安全问题,当开发者使用包含函数引入文件时,如果传入的文件名参数未经严格校验,攻击者就可能利用这个漏洞读取敏感文件…

5.4.2 Spring Boot整合Redis

本次实战主要围绕Spring Boot与Redis的整合展开,首先创建了一个Spring Boot项目,并配置了Redis的相关属性。接着,定义了三个实体类:Address、Family和Person,分别表示地址、家庭成员和个人信息,并使用Index…

java内存模型JMM

Java 内存模型(Java Memory Model,JMM)定义了 Java 程序中的变量、线程如何和本地内存以及主内存进行交互的规则。它主要涉及到多线程环境下的共享变量可见性、指令重排等问题,是理解并发编程中的关键概念。 核心概念&#xff1a…

配置git命令缩写

以下是 Git 命令缩写的配置方法及常用方案,适用于 Linux/macOS/Windows 系统: 🔧 一、配置方法 1. 命令行设置(推荐) # 基础命令缩写 git config --global alias.st status git config --global alias.co che…

准确--k8s cgroup问题排查

k8s cgroup问题排查 6月 06 17:20:39 k8s-node01 containerd[1515]: time"2025-06-06T17:20:39.42902033408:00" levelerror msg"StartContainer fo r \"46ae0ef9618b96447a1f28fd2229647fe671e8acbcec02c8c46b37051130c8c4\" failed" error&qu…

Go 中 map 的双值检测写法详解

Go 中 map 的双值检测写法详解 在 Go 中,if char, exists : pairs[s[i]]; exists { 是一种利用 Go 语言特性编写的优雅条件语句,用于检测 map 中是否存在某个键。让我们分解解释这种写法: 语法结构解析 if value, ok : mapVariable[key]; …

C# Wkhtmltopdf HTML转PDF碰到的问题

最近碰到一个Html转PDF的需求,看了一下基本上都是需要依赖Wkhtmltopdf,需要在Windows或者linux安装这个可以后使用。找了一下选择了HtmlToPDFCore,这个库是对Wkhtmltopdf.NetCore简单二次封装,这个库的好处就是通过NuGet安装HtmlT…

grafana 批量视图备份及恢复(含数据源)

一、grafana 批量视图备份 import requests import json import urllib3 import osfrom requests.auth import HTTPBasicAuthfilename_folders_map "folders_map.json" type_folder "dash-folder" type_dashboard "dash-db"# Grafana服务器地…

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…

露亦如电 · 时之沙 | 让遗憾在灰烬里随风而去

注:略作重排,未整理去重。 一个人最了不起的能力:快速翻篇 原创 十点邀约作者 棠唐 2022 年 11 月 29 日 20:12 福建 《了凡四训》有言:“从前种种,譬如昨日死;从后种种,譬如今日生。” 人生犹…

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…