AudioLDM2全文翻译_audioldm模型中loa是什么-程序员宅基地

技术标签: 论文阅读  deep learning  nlp  机器学习  stable diffusion  transformer  论文分享  论文笔记  audio_generate  音频  

AUDIOLDM 2: LEARNING HOLISTIC AUDIO GENERAT I O N W I T H SELF-SUPERVISED PRETRAINING

由于原本在notion上写的,文章中的文字链接大部分是我查询的一些资料,做的内部引用,所以无法展示。文章图片部分请参考原论文,相关工作部分没有翻译,如有需要请自行百度
这里是原文链接
audioLDM2论文通过引入一个中间表达LOA弥合了其他模C和音频x之间的巨大差距,同时利用GPT-2将其他模态转换为LOA。文章就此提出了一种将任意模态转化为音频的可能,其思想和CLAP,ImageBind十分类似,都是借用融合中间表征实现跨模态转换。

希望大家一起讨论,共同学习!如有不对,欢迎批评指正!!!
通过自监督预训练学习音频整体生成

文章信息

通讯作者:刘濠赫
一作:刘濠赫

研究机构

  • Centre for Vision, Speech, and Signal Processing (CVSSP), University of Surrey
  • Speech, Audio & Music Intelligence (SAMI), ByteDance

摘要

  • 文章提出了一种叫做AudioMAE的自监督预训练表征学习模型,该模型可以将任何音频转换为LOA,
  • 引入了一种叫做音频语言LOA的概念,它是对音频的一种通用表征。
  • 任何模态都可以基于GPT-2转化为LOA,并使用以LOA为条件的latent diffusion model进行自监督音频生成学习。所提出的框架自然带来了诸如上下文学习能力和可重用的自监督预训练AudioMAE和latent diffusion model等优势。在text-to-audio,text-to-music,text-to-speech的主要基准实验上证明了与先前的方法相比新模型取得了SOTA或具有竞争力的性能。

尽管不同类型的音频,如语音、音乐和音效在音频生成上存在共性。但为每种类型设计模型时都需要仔细考虑其特定的目标和偏差,这些目标和偏差可能与其他类型存在显著差异。为了让我们更接近音频生成的统一视角,本文提出了一个框架,该框架利用相同的学习方法生成语音、音乐和音效。我们的框架引入了音频的通用表示,称为“音频语言”LOA.任何音频都可以基于AudioMAE(一种自监督的预训练表征学习模型)转换为LOA,在生成过程中,我们使用GPT2将任何模态转换为LOA,并使用以LOA为条件的latent diffusion model进行自监督音频生成学习。所提出的框架自然带来了诸如上下文学习能力和可重用的自监督预训练AudioMAE和latent diffusion model等优势。在text-to-audio,text-to-music,text-to-speech的主要基准实验上证明了与先前的方法相比新模型取得了SOTA或具有竞争力的性能。我们的demo和代码在上面已经可用。https://audioldm.github.io/audioldm2/.


Introduction介绍

音频生成涉及根据特定类型条件(如文本,音素,或图片)合成音频,为了解决这个任务,基于深度学习的音频生成通常在不同的子领域进行,例如语音生成,音乐生成,音效生成以及特定类型的声音,如脚步声,小提琴声。为了解决每个子领域中的特定挑战,大多数以前的研究都设计了特定任务的归纳偏见,这些是预先定义的约束,指导学习过程专注于特定的问题空间。例如,音高和持续时间预测期通常用来模拟语音的韵律,而在音乐生成中,MIDI表示和特定领域预训练模型通常被使用。

尽管在特定子领域的音频生成开发的专门模型取得了显著进展,这种专业化的局限性,限制了音频生成模型在复杂听觉场景的更广泛的应用。是否可以开发一种统一的方法来生成各种类型的音频信号的问题仍然没有答案。在真实世界场景中,例如在电影场景,不同类型声音可能同时出现,需要一种更通用的方法建模声音的生成。虽然有些工作致力于解决通用领域的音频生成问题,但他们侧重于生成语义上正确的音频,而对细节关注有限。例如此前的text-to-audio研究往往会产生一些令人难以理解的语音。此外,虽然在解决特定子领域的挑战中归纳偏见很有用,但从一个领域得出的关于特定设计的结论不一定适用于另一个领域。近年来,统一视角解决问题取得了实质性进展。这一趋势凸显了构建统一音频生成框架的潜力。

这篇文章提出了一个新颖并且多功能的框架,名为“AudioLDM2”,它能够在没有领域特定归纳偏见的情况下,根据灵活的条件生成任意类型的音频。其核心思想是引入一种新的音频语言LOA,它是一系列向量,代表音频剪辑的语义信息。这种方法使我们能够把人类可理解的信息转换成LOA,并在LOA的条件合成音频表征。这个想法与在(Okamoto等人,2022年)中使用拟声词来描述环境声音的做法类似。尽管拟声词可以有效的模仿某些声音,例如动物的声音和简单的动作(e.g., ”splash” for water),但它无法涵盖全部音频细微差别。理论上,LOA应该能够表示细粒度声学信息(e.g., “what does the speaker say”)和粗粒度的语义信息(e.g., “what is that sound”)。考虑到这些要求,我们提议利用音频掩码自编码器Audio Mask Autoencoder(AudioMAE)提取的特征,这是一个音频生成的自监督预训练框架。AudioMAE在多样化音频内容上进行了预训练,其生成和重构方案使得其成为生成任务重的理想音频表征选择。

具体来说,我们利用了一个基于GPT语言模型将条件信息翻译成AudioMAE特征。GTP的输入条件是灵活的,包括文本,音频,图片,视频等表征。然后我们利用latent diffusion model基于AudioMAE特征合成音频。latent diffusion model可以在自监督的方式进行优化,允许使用大规模无标记的音频数据进行预训练。我们的语言建模方法使我们能够利用最近在语言模型的进展,同时减轻以前的音频自回归模型中出现的高推理计算成本和错误累计等挑战。这得益于连续AudioMAE特征的较短长度,它也提供了比以前使用的离散令牌更丰富的表示能力。

我们的实验结果展示了AudioLDM2在text-to-audio(TTA)和text-to-music(TTM)生成任务上实现了SOTA性能,分别使用了AudioCaps和MusicCaps数据集。在text-to-speech生成任务中,AudioLDM2性能明显优于强大的基准模型FastSpeech2从而实现了与SoTA相当的性能。除了利用文本条件生成,我们展示了利用视觉模态作为条件进行音频生成的能力,比如image-to-audio生成。此外我们探索了一些外围功能,比如音频,音乐,和语音的上下文学习。与原始的AudioLDM相比,AudioLDM2在保留相同功能的同时,展示出质量,多功能以及生成可理解内容的语音方面展示出实质性进步。我们的贡献如下:

  • 我们提出一个新颖并且多功能音频生成模型,它能够执行条件音频,音乐,可理解语音生成。
  • 我们所提出的方法是基于音频的通用表示,无需音频注释即可实现核心潜在扩散模型的大规模自监督预训练,并有助于结合自回归模型和潜在扩散模型的优点
  • 我们的实验表明AudioLDM2在text-to-audio和text-to-music生成上实现了soTA,同时在text-to-speech方面也提供了与当今soTA相当的性能。

2 AudioLDM2

H 0 = G ∘ M : C ↦ Y ^ ↦ x \mathcal{H}_0 = \mathcal{G} \circ \mathcal{M}:C \mapsto \hat{Y} \mapsto x H0=GM:CY^x

这里,函数 M \mathcal{M} M,任意模态到LOA翻译器,旨在基于C产生Y。紧随 M \mathcal{M} M之后,函数 G \mathcal{G} G,LOA到音频的生成器,接受LOA作为输入并且学习估计音频数据 x x x。与其在公式1中使用 Y ^ = M ( C ) \hat{Y} = \mathcal{M}(C) Y^=M(C),不如基于现成可用的 Y = A ( x ) Y = \mathcal{A}(x) Y=A(x)优化生成函数 G \mathcal{G} G,这个可以被表述为:

H 1 = G ∘ A : x ↦ Y ↦ x , \mathcal{H}_1 = \mathcal{G} \circ \mathcal{A} :x \mapsto Y\mapsto x, H1=GA:xYx,

由于过程 H 1 \mathcal{H}_1 H1仅涉及x作为训练数据,公式2意味着模型 G \mathcal{G} G可以在没有音频注释的情况下以自监督的方式进行优化。这种自监督方案可以缓解音频数据标签的稀缺性(刘等人,2023a)并为整个生成系统提供一个强大的支撑。以下各节将介绍系统的详细信息。第2.1节介绍了函数 G \mathcal{G} G,包括音频到LOA编码器encoder A \mathcal{A} A的设计,以及如何在公式2中构建自监督预训练过程。第2.2节介绍了基于条件C估计 ( Y ^ ) ( \hat{Y} ) (Y^) 的函数 M \mathcal{M} M

2.1 latent diffusion pretraining

2.1.1 使用AudioMAE进行语义表征学习

为了准确地生成包括语音、音乐和音效在内的多种类型的音频,音频表征 Y 应该有效地捕捉音频信号的语义和声学细节。因此,我们提议使用自监督预训练的 AudioMAE(Xu 等人,2022年)作为函数 A \mathcal{A} A 的表征提取模块,因为它具有通用性和在下游音频分类任务上的高准确性。

音频掩码自编码器(AudioMAE)是一种音频自监督预训练模型,它从未标注的音频数据中学习表征,而不依赖于手动标注的注释。AudioMAE 由一个编码器和一个解码器组成,两者都采用了类似于视觉变换器(VIT)(Dosovitskiy 等人,2020年)的架构。在自监督预训练期间,编码器的输入片段(通常是 mel 频谱图)被随机掩盖,解码器学习重建被掩盖的片段。与其他音频自监督预训练模型相比,AudioMAE 有几个优点:(i) AudioMAE 已被验证在一般音频领域工作良好。例如,AudioMAE 可以在 AudioSet(Gemmeke 等人,2017年)上有效地进行预训练,并在下游音频分类任务上取得最先进的性能。相比之下,典型的音频自监督模型专注于特定领域,如 MERT(Li 等人,2023年)专注于音乐,HuBERT(Hsu 等人,2021年)专注于语音。(ii) AudioMAE 特征对生成任务可能比其他区分性预训练方法更好。以对比损失下一个标记预测分类损失为学习目标,之前的系统如 wav2vec(Schneider 等人,2019年)和 BYOL-A(Niizumi 等人,2021年)在预训练期间采用了区分性方法。相比之下,AudioMAE 专注于重建被掩盖的片段,这是一个生成过程。

对于输入音频信号x,AudioMAE首先计算对数梅尔频谱图 X ∈ R T × F X \in \mathbb{R}^{T \times F} XRT×F,T表示梅尔频谱的时间步长。然后梅尔频谱X被视为图像并分割成大小 P × P P \times P P×P的块,作为AudioMAE编码器的输入。 小块的大小 ( P ) 通常被设计为 ( T ) 和 ( F ) 的公因子common factor。使用卷积神经网络进行小块切分和嵌入,其中核大小为 ( P ),步长为 ( P ),输出通道数为 ( D )。这会产生一个输出形状为 ( T ′ × F ′ × D ) ( T' \times F' \times D ) (T×F×D),其中 ( D ) 是 AudioMAE 嵌入维度, ( T ′ = T P ) , ( F ′ = F P ) ( T' = \frac{T}{P} ),( F' = \frac{F}{P} ) (T=PT)(F=PF)。AudioMAE 编码器的输出特征 ( Y ) ( Y ) (Y),具有与输入相同的形状,并通常在预训练后用作下游任务的特征。

AudioMAE 特征后处理 **。在计算Y后,我们提出利用额外的池化步骤将Y聚合为 Y λ Y_{\lambda} Yλ,如图1所示。我们执行池化步骤是为了减少 AudioMAE 特征的序列长度,以便在函数 M 中更容易进行估计。具体来说,我们在 Y ∈ R T ′ × F ′ × D Y \in \mathbb{R}^{T' \times F' \times D} YRT×F×D 的前两个维度上执行了一个二维平均-最大池化操作(刘等人,2023b),其中池化核的大小和步长具有相同的值,表示为 λ ∈ I + \lambda \in \mathbb{I}^+ λI+。这种二维池化操作有助于在输出中保持时间-频率关系。池化后的最终输入 Y λ Y_\lambda Yλ被重塑为一个嵌入序列,其形状为 L λ × D , L_\lambda \times D, Lλ×D,其中 L λ = T ′ F ′ / λ 2 L_\lambda = T'F'/ \lambda^2 Lλ=TF/λ2。为了便于实现,选择 λ \lambda λ 的值使得 L λ L_\lambda Lλ 总是一个正整数。我们在图10中展示了选择不同 λ \lambda λ的效果,在剩余的章节中,如 λ \lambda λ没有特别说明,我们将 Y λ Y_\lambda Yλ简称为Y。

2.1.2 Semantic reconstruction with the latent diffusion model利用latent diffusion model 进行语义重构

我们使用一个LDM来建模过程 ( G : Y ↦ x ) (\mathcal{G}: Y \mapsto x) (G:Yx),这是去噪扩散概率模型(DDPM)的一个变种。与直接对训练数据建模的DDPM不同,LDM在基于变分自编码器(VAE)的压缩潜在空间中学习逆向扩散过程,这可以减少计算成本。类似的思想已经被适应到音频生成中,例如AudioLDM。

使用VAE进行声学表示学习。我们使用VAE进行特征压缩并学习表示 ( z ),其维度远小于 ( x )。我们在这项工作中使用的VAE是一种卷积架构,由具有下采样功能的编码器和具有上采样功能的解码器组成。VAE的前向传播可以表示为 V : X ↦ z ↦ X ^ \mathcal{V}:X \mapsto z \mapsto \hat{X} V:XzX^, 其中 X ^ \hat{X} X^是梅尔频谱图的重构。这可以使用预训练的HiFiGAN声码器转换为音频波形 x ^ \hat{x} x^ 。遵循AudioLDM的方法,我们基于X和 X ^ \hat{X} X^计算了重建损失reconstruction loss和**判别损失discriminative loss,以优化VAE的参数。我们也计算了z**和标准高斯分布(均值μ=0,方差σ2=1)之间的KL散度KL divergence作为损失函数,以限制VAE潜在空间的变异性

latent diffusion model.我们遵循(何等人,2020)的公式来实现LDM。给定一个VAE表示z,前向转换被定义为一个不包含可训练参数的T步马尔可夫过程。给定在扩散步骤t-1的数据 z t − 1 z_{t-1} zt1,在步骤t的数据分布 ∗ ∗ z t ∗ ∗ **z_t** zt可以被表述为

q ( z t ∣ z t − 1 ) = 1 − β t z t − 1 + β t ϵ t , t ∈ 2 , . . . , T , q(z_t|z_{t-1}) = \sqrt{1 - \beta_t}z_{t-1} + \sqrt{\beta_{t}}\epsilon_t,t \in2,...,T, q(ztzt1)=1βt zt1+βt ϵt,t2,...,T,

其中,噪声调度超参数 β t \beta_t βt在[0, 1]范围内决定了噪声混入数据的速度。通过在方程3中递归替换 q ( z t ∣ z t − 1 ) q(z_t|z_{t-1}) q(ztzt1),我们可以推导出给定z_0时z_t的分布为:

q ( z t ∣ z 0 ) = α t z 0 + 1 − α t ϵ t , q(z_t|z_0) = \sqrt{\alpha_t}z_0 + \sqrt {1-\alpha_t}\epsilon_t, q(ztz0)=αt z0+1αt ϵt,

这里 α t = ∏ t = 1 t 1 − β t \alpha_t = \prod _{t=1}^{t} 1- \beta_t αt=t=1t1βt ϵ t ∼ N ( 0 , I ) \epsilon_t \sim N(0,I) ϵtN(0,I)。在最后一步t=T时 , z t ,z_t zt的分布将会服从一个标准正态高斯分布。

LDM学习了从先验分布N(0,I)到数据分布z的反向转换backward transition。反向过程建模了条件分布 P r ( z 0 … T ∣ Y ; ϕ ) = P r ( z 0 ∣ z 1 , Y ; ϕ ) ∏ t = 2 T P r ( z t − 1 ∣ z t , Y ; ϕ ) ⋅ P r ( z T ) Pr(z_{0…T}|Y;\phi) = Pr(z_0|z_1,Y;\phi) \prod_{t=2}^TPr(z_{t-1}|z_t,Y;\phi) \cdot Pr(z_T) Prz0TY;ϕ=Pr(z0z1,Y;ϕ)t=2TPr(zt1zt,Y;ϕ)Pr(zT),其中Y是AudioMAE特征作为条件信号,而θ表示学习反向扩散过程的模型参数。如果我们对z_{1…T}进行边缘化,我们可以基于证据下界ELBO和贝叶斯规则推断出 l o g [ P r ( z 0 ∣ Y ; ϕ ) ] log[Pr(z_0|Y;\phi)] log[Pr(z0Y;ϕ)]的下界:

l o g [ P r ( z 0 ∣ Y , ϕ ) ] ≥ l o g [ P r ( z 0 ∣ z 1 , Y ; ϕ ) ] − ∑ t = 2 T K L [ P r ( z t − 1 ∣ z t , Y , ϕ ) ∣ ∣ q ( z t − 1 ∣ z t , z 0 ) ] log[Pr(z_0|Y,\phi)] \ge log[Pr(z_0|z_1,Y;\phi)]-\sum \limits_{t=2}^T{KL[Pr(z_{t-1}|z_t,Y,\phi)||q(z_{t-1}|z_t,z_0)]} log[Pr(z0Y,ϕ)]log[Pr(z0z1,Y;ϕ)]t=2TKL[Pr(zt1zt,Y,ϕ)∣∣q(zt1zt,z0)]

其中 K L ( ⋅ ) KL(\cdot) KL()是计算KL散度的函数,而 q ( z t − 1 ∣ z t , z 0 ) q(z_{t-1}|z_t,z_0) q(zt1zt,z0)是具有封闭形式解的目标条件扩散分布,根据函数4给定 z 0 z_0 z0。根据Denoising diffusion probabilistic models这篇论文的方法,我们可以推导出最大化方程5下界的损失函数为:

a r g m i n ϕ [ E z 0 , Y , t ∼ { 1 , . . . . . . , T } ∣ ∣ G ( α t z o + 1 − α t ϵ t , t , Y ; ϕ ) − ϵ t ] argmin_\phi[\mathbb{E}_{z_0,Y,t \sim \{ 1,......,T\}}|| \mathcal{G}(\sqrt{\alpha_t}z_o + \sqrt{1-\alpha_t } \epsilon_t,t,Y;\phi) - \epsilon_t] argminϕ[Ez0,Y,t{ 1,......,T}∣∣G(αt zo+1αt ϵt,t,Y;ϕ)ϵt]

如图1所示,我们提出利用Transformer-UNet架构作为函数 G \mathcal{G} G。类似于其他研究中的使用的UNet,T-UNet架构由一系列带有下采样的编码器和带有上采样操作的解码器组成,且编码器和解码器之间存在相同尺度的跳跃连接。为了增强 T-UNet 的建模能力,我们在每个编码器和解码器块的卷积操作之后插入了多个 Transformer 块。具体而言,我们有 ∗ ∗ n t r a n s **n_{trans} ntrans+ 1** 个 Transformer 块,其中前 ∗ ∗ n t r a n s ∗ ∗ **n_{trans}** ntransTransformer 块是自注意力层(Vaswani等人,2017)和前馈网络的堆叠。为了融合来自 AudioMAE 的条件信息 Y 或来自 M ( ⋅ ) \mathcal{M}(·) M()(第2.2节)的 ∗ ∗ Y ^ ∗ ∗ **\hat Y** Y^,最后一个 Transformer 块将自注意力层更改为交叉注意力层,该层接受 AudioMAE 特征作为键和值,并与前一个 Transformer 块的特征合并作为查询。除了文本到语音生成外,我们在 Transformer 块中添加了一个额外的交叉注意力层,以接受来自 FLAN-T5的文本嵌入作为额外的条件,以增强音频和文本之间的关系学习。

**关于 AudioMAE 和 VAE 的比较。**既然 AudioMAEVAE 都基于自编码器进行表示学习,人们可能会想知道为什么我们选择使用 VAE 进行表示学习,而不是直接对 AudioMAE 的潜在空间进行建模。其中一部分原因是 AudioMAE 并不主要关注重构质量,其潜在空间的压缩比不如 VAE 高。另一方面,VAE 具有更好的重构能力和更高的压缩级别,使其更适合于特征表示学习。此外,我们观察到它们的表示是不同的。AudioMAE 包含更多的语义信息,而 VAE 表示更偏向声学方面。如图2所示,我们使用 T-SNE(Van der Maaten & Hinton,2008)在 ESC-50(Piczak,2015)数据集上可视化了 AudioMAEVAE 的潜在表示。可视化结果表明,AudioMAE 的潜在表示可以将相似的音频分组到潜在空间中的较近区域,而 VAE 的表示在不同音频类别之间存在更多重叠。AudioMAE表征的有效语义结构使其成为音频语义特征的合适选择,弥合了条件 C 和音频数据 x 之间的差距。

2.2条件音频语义学习建模

这个小节介绍的是函数 M \mathcal{M} M的设计。正如2.1.1小节介绍的,模型G的输入: Y ↦ x Y \mapsto x Yx可以使用AudioMAE计算得出。然而,在推理过程中,当我们根据条件C进行生成音频时, Y = A ( x ) Y=\mathcal{A}(x) Y=A(x)是不可用的。因此,我们需要另一个模型, 可以根据条件 C 生成 Y ^ 可以根据条件C生成 \hat{Y} 可以根据条件C生成Y^,记为 M θ : C ↦ Y ^ \mathcal{M}_{\theta} :C \mapsto \hat{Y} Mθ:CY^,其中 θ \theta θ表示可训练参数。

正如2.1.1节所讨论的那样,AudioMAE编码器的输出保存了时间和频率的顺序。因此我们将Y的生成视为一个语言建模任务并且选择GPT-2作为模型的基础。GPT-2模型基于transformer架构,最初是使用无监督学习方法在大量文本上进行训练的。GPT-2已经被在各种NLP任务上得到了应用,比如文本补充,问答,和语言翻译。我们使用预训练的权重初始化GPT-2模型,我们基于teacher forcing微调GPT-2模型,这意味着在模型训练的过程中, y l y_l yl将基于条件 C C C和真实序列 y 1 , … , y t − 1 y_1,…,y_{t-1} y1,,yt1生成。具体来说GPT-2模型 M θ M_\theta Mθ的训练目标是最大化序列的似然概率 P r ( y 1 , y 2 , … , y L ∣ C ) Pr(y_1,y_2,…,y_L|C) Pr(y1,y2,,yLC),这可以解释为以下的优化目标:

a r g m a x θ E C [ P r ( y 1 ∣ C , θ ) ∏ l = 2 L P r ( y l ∣ y 1 , . . . , y l − 1 , C ; θ ) ] argmax_\theta \mathbb{E}_C[Pr(y_1|C,\theta)\prod\limits_{l=2}^{L}Pr(y_l|y_1,...,y_{l-1},C;\theta)] argmaxθEC[Pr(y1C,θ)l=2LPr(yly1,...,yl1,C;θ)]

我们利用 y l y_l yl y ^ l = M θ ( y l ∣ y 1 , … , y l − 1 , C ; θ ) \hat{y}_l = \mathcal{M}_\theta(y_l|y_1,…,y_{l-1},C;\theta) y^l=Mθ(yly1,,yl1,C;θ)之间的均方误差损失,以优化等式7。需要注意的是我们直接优化连续向量 y l y_l yl的回归,而不对AudioMAE特征空间进行离散化或估计token 索引。等式7中的条件C可以包含各种灵活的条件表示,包含音频表征,文本嵌入,音素嵌入,或视觉线索。我们采用了**混合专家模型MOE的方法,并使用多个编码器作为特征提取器来计算 C。假设有 K 个系统作为特征提取模块,从第 k 个系统输出的形状 C k C_k Ck(其中 k 取自集合 {1,…,K})是 L k × D L_k × D Lk×D,其中 L k L_k Lk 是第 k 个系统的序列长度,D 是特征的维度。我们在每个特征提取模块的输出之后应用一个线性适配器,将嵌入维度统一为 D,这也是 AudioMAEGPT-2 模型的输入维度。对于从输入中提取全局特征的模块(例如 CLAPImageBind), ∗ ∗ L k **L_k Lk = 1。最终的条件 C ∗ ∗ C k ∗ ∗ **C_k** Ck 沿着序列长度维度的连接。最终的条件 C 的形状是 L × D,其中 L = ∑ k = 1 K L k L = \sum_{k=1}^K L_k L=k=1KLk。我们在本文中介绍了几个使用的条件模块如下:

CLAP是一种学习联合文本音频嵌入空间的系统,其中配对的音频和语言数据在潜在空间中距离更近。CLAP 已成功应用于音频生成作品,例如 **AudioLDM。**在这项研究中,我们使用预训练的 CLAP文本编码器作为默认的条件模块,用于提取文本嵌入作为条件。然而,在文本标题不可用的情况下(例如文本转语音任务),我们使用 CLAP 音频编码器作为条件模块,与 Liu 等人(2023a)的方法相同。

**FLAN-T5。**研究表明,CLAP模型专注于全局条件,在捕获文本数据中的时间信息方面存在问题。为了弥补 CLAP 模型的这一不足,我们选择使用另一个预训练的文本编码器来捕捉文本输入的语义信息,其中可能包含有用的细节,例如时间顺序。具体而言,我们使用了 FLAN-T5(Chung等人,2022),它是基于对多种任务进行微调的 **T5** 模型的增强版本。

Phoneme Encoder 音素编码器是文本转语音研究中广泛采用的模块,用于提取有关音素的有用信息(Ren等人,2021;Tan等人,2022)。音素是语言中最小的声音单位,可以区分不同的单词(Tan,2023)。在这项工作找那个,我们遵循NaturalSpeech中引入的结构来构建音素编码器,它是一个transformer的encoder层的堆栈。我们使用**Espeak phonemizers Espeak 音素器对文本输入进行音素预处理,并在音素序列后面添加了一个stop token.**
ImageBind(Girdhar等人,2023)是一个与 CLAP 模型类似的系统。不同之处在于,ImageBind 在一个单一的嵌入空间中对齐了更多的模态,包括图像、文本、视频、音频、深度图、热图和惯性测量单元(IMUs)。这意味着一旦条件模型使用一种模态作为条件进行训练(例如图像),其他模态也可以作为条件使用。我们使用预训练的 ImageBind 在训练过程中计算音频嵌入作为条件,并在推理过程中切换到图像嵌入。我们在图 6 中展示了从图像到音频的生成能力。

除了音素编码器没有现成的预训练权重外,所有其他预训练特征提取模型的参数在实验过程中都保持冻结。
联合微调。除了文本到语音生成任务外,我们根据方程 1、方程 6 和方程 7 对 GPT 和潜在扩散模型进行联合微调。正如表 5 所示,我们发现联合微调显著提高了模型的整体性能。如图 1 所示,概率开关控制着联合训练过程中条件信号的来源。在训练过程中,开关动态地在标准答案的 AudioMAE 特征和 GPT 生成的 AudioMAE 特征之间进行选择,分别设置概率为 P g t = 0.25 P_{gt} = 0.25 Pgt=0.25 P p r e d = 0.75 P_{pred} = 0.75 Ppred=0.75

3 实验设置

这项工作中的数据集包括AudioSet,WavCaps,AudioCaps,VGGSound,Free Music Archive(FMA),Million Song Dataset, LJSpeech, 和GigaSpeech。正在写这篇论文是AudioSet时最大的音频分类数据集,有大约200万10秒的音频和527个不同分类。WavCaps 是一个包含 ChatGPT 辅助弱标记音频字幕的数据集。 WavCaps 包含 403, 050 个音频剪辑,平均持续时间为 68 秒。AudioCaps 是 AudioSet 的一个子集,带有手工制作的标题。 AudioCaps 包含大约 46K 的十秒音频剪辑。 VGGSound是一个大规模单标签视听数据集,包含超过20万个视频。FMA 是一个没有标注的大型音乐数据集,包含来自 16, 341 位艺术家的 106, 574 首音乐曲目和 14, 854 张专辑。对于百万首歌曲数据集,我们仅利用 Doh 等人提出的标记子集。 (2022),其中包含约 510K 首音乐以及标签、标题和艺术家姓名等元数据。LJSpeech 是一个单说话人的语音数据集,包含 13,100 个短音频和详细的转录。GigaSpeech 是一个多说话人的大规模英语语音识别语料库,包含约 10,000 小时的音频,标有转录。在训练过程中,GigaSpeech 的测试集和开发集不包括在内。本研究中使用的所有音频数据都被重新采样为 16 kHz 的采样率。我们仅使用具有配对文本标签的音频数据来通过优化方程 7 来训练 GPT 模型。我们通过以自监督的方式优化方程 5 中的目标,使用所有音频数据(无论注释如何)来训练潜在扩散模型。

评估指标,我们主要关注文本到音频生成任务来验证AudioLDM2的有效性。我们遵循AudioGen的评估原则,计算包含客观指标frechet audio distance(FAD),KL散度,和主观指标包括总体印象 (OVL) 以及音频和文本之间的关系 (REL)。FAD是一种无参考音频质量度量,它根据目标特征之间的分布距离进行计算并生成音频。KL 指标用于衡量生成音频与目标音频之间的相似性,其标签由 patch-out transformer(Koutini等人,2021)计算得出。对于文本转语音任务,我们使用了常用的mean opinion score (MOS)平均意见分数去评估。

主观评价,我们利用了Amazon Mechanical Turk众包平台,对 OVL、REL 和 MOS 等指标进行主观评估。
主观评估。我们利用了众包平台 Amazon Mechanical Turk 进行主观评估,评估的指标包括 OVLRELMOS。我们为评估者提供了明确的操作说明,包括示例。为确保评估结果的可靠性,我们对众包工作者设置了一些要求,包括平均批准率不低于 60%,至少有 50 个批准记录。每个音频至少由 10 个不同的评估者进行评估。所有三个主观指标都采用了 Likert 量表(Likert, 1932),范围从 15,数字越大表示性能越好。评估者按照美国最低工资标准支付报酬。我们对所有评估者和样本的分数进行平均,作为系统的最终得分。
模型架构细节。我们使用两种大小的LDM模型进行实验,分别是 AudioLDM 2AudioLDM 2-Large,其中transformer层数分别为 ∗ ∗ n t r a n s = 2 ∗ ∗ **n_{trans} = 2** ntrans=2 ∗ ∗ n t r a n s = 6 ∗ ∗ **n_{trans} = 6** ntrans=6(详见第 2.1.2 节)。我们使用预训练的 AudioMAE5,其patch大小为 16 × 16,没有重叠,每十秒的梅尔频谱图对应 512 个patch或特征向量,嵌入维度为 768。类似于(Chen等人,2023)中提出的思路,计算 LOA Y 时,我们从编码器中收集最后 16 个transformer层的输出,并进行平均,得到最终的 Y。我们所使用的 GPT-2 模型具有 768 的嵌入维度,包含 12 层transformer。对于音频和音乐生成,我们使用 CLAPFLAN-T5 作为编码器,并将 Y = 8 设置为 GPT 的目标序列。在语音生成的情况下,我们使用 CLAP 和音素编码器的组合,并将 Y = 1 设置为目标序列,以保留更多细节。
训练和推理设置。ldm和GPT模型在训练师分别初始化。在ldm预训练时我们随机选择了 λ ∈ { 1 , 2 , 4 , 8 } \lambda \in \{1,2,4,8\} λ{ 1,2,4,8}以增强模型在不同尺度条件下的鲁棒性。我们在八个 NVIDIA A100 80GB GPU 上训练潜在扩散模型并微调 GPT-2 模型。潜在扩散模型的设置与 AudioLDM大致相同,但我们在 DDIM采样过程中更改了默认的无分类器引导尺度,设置为 3.5。对于 GPT2 的微调和潜在扩散模型,我们使用了 AdamW 优化器(Loshchilov & Hutter,2017),学习率为 1 0 4 10^4 104,线性预热步数为 10,000,没有衰减。

结果

我们对 AudioLDM 2 在三个主要音频生成任务上进行了评估:文本到音频、文本到音乐和文本到语音。这三个基本系统分别在三个不同的数据集上进行了训练:AudioCaps(通用音频)、MSD(音乐)和 LJSpeech(语音),分别表示为 AudioLDM 2-ACAudioLDM 2-MSDAudioLDM 2-LJS。模型 AudioLDM 2-Full 表示一种可以同时执行音频和音乐生成的版本,其训练数据扩展到了 29,510 小时。与 AudioLDM(Liu 等人,2023a)相比,我们没有对使用完整数据集训练的模型在 AudioCaps 上进行额外的模型微调。带有后缀 Large 的模型表示更大尺寸的模型变体,例如 AudioLDM 2-Full-Large

为了探究 AudioLDM 2 在模型大小和数据集规模方面的可扩展性,我们进一步在一个包含 29,510 小时数据的更大数据集上使用了两种不同的模型大小对 AudioLDM 2 进行了训练。结果如表 2 所示。FAD 分数在扩大模型大小后通常有所改善,而 KLCLAP 没有明显的改进,这表明扩大模型大小可能更有利于提高音频质量,而不是改善音频与文本之间的关系。尽管训练数据显著增加,但我们并没有观察到客观评估指标的显著改善。相反,所有三个指标在使用更多数据进行训练后都表现出了降低的性能。这是预期的,因为我们的测试集分布有限,而大规模的训练数据涵盖了更广泛的分布。训练和测试数据分布之间的不匹配导致了较差的客观评分。大规模训练数据导致指标得分较低的另一个可能原因是倾向于为模糊的文本描述推断相关的声音。例如,来自 AudioCaps 测试集的输入文本“Continuous basing and rustling”是一个模糊的声音描述,需要模型推断与声音相关的具体对象,例如可能是自然动物或工业机器。这种模糊性导致大规模预训练模型生成的音频样本不符合测试集的分布,或者包含模糊的声音,从而导致指标得分降低。

然而,与表 1 中的 AudioLDM-M(FAD 4.53)相比,后者也是一个在 AudioCaps 上没有进行微调的大规模预训练文本到音频模型,AudioLDM 2 使用完整的训练数据取得了显著更好的性能 ( F A D 1.42 ∼ 2.13 ) (FAD 1.42 \sim 2.13) FAD1.422.13,展示了对 AudioLDM-M 的实质性改进。

我们将我们提出的模型与 LJSpeech 测试集上广泛采用的 FastSpeech2 模型进行比较。为了研究我们系统的上限,我们添加了一个名为 GT-AudioMAE 的设置,该设置利用真实的 AudioMAE 特征,然后使用预训练的函数 G 来生成音频。我们提出的 AudioLDM 2-LJS 是在 LJSpeech 训练集上训练的。为了进一步探索我们系统的潜力,我们在 GigaSpeech 数据集上预训练了 GPT 模型,然后在 LJSpeech 上进行微调,记作 AudioLDM 2-LJS-Pretrained

根据表格4的数据,经过预训练的 AudioLDM 2-LJS-Pretrained 模型在 LJSpeech 测试集上获得了 4.00 的 MOS(平均意见分数),明显优于 FastSpeech 2。我们的听觉测试表明,这一提升主要来自于改进的韵律,其中 AudioLDM 2-LJS-Pretrained 在情感、标点和语调方面表现出更大的波动。这证明了在较小的语料库上进行微调之前,在多样化的数据集(如 GigaSpeech)上进行预训练的好处。如果没有预训练,我们提出的模型仍然可以获得 3.65 的 MOS,与 FastSpeech 23.78 的 MOS 相当。

4.4音频上下文学习

AudioLDM 2 利用了 GPT 模型的自回归建模,自然地赋予了它上下文学习的能力,如图3所示。在文本转语音生成中,当提供一个作为上下文的提示语音时,AudioLDM 2 可以以一致的说话风格合成剩余的语音。对于文本转音频和文本转音乐的任务,文本通常在生成过程中充当松散的约束。通过为 GPT 模型提供音频上下文,生成过程变得更加可控,结果基于文本描述和音频上下文中提供的内容。

4.5消融实验

为了验证我们在 AudioLDM 2 设计中的选择,我们在 AudioCaps 数据集上进行了一系列消融研究,针对文本到音频生成任务。结果如表5所示。

(a) 当禁用了 GPT 模型和潜在扩散模型之间的联合微调过程,仅分别优化它们时,所有三个评估指标都出现了明显的恶化。这表明联合微调过程使得 GPT 模型能够输出超越 AudioMAE 特征的更详细的细微差别,这反过来作为更优的条件信号。

(b-c):GPT 模型接受来自 CLAPFLAN-T5 模块的输入,用于文本到音频生成。移除其中任何一个模块都会导致评估指标的下降。然而,当仅使用 CLAP 模块作为输入时,CLAP 评分有所提高。这一改进可能是因为条件直接匹配了评估指标。

(d):在 T-UNet 中移除了接受 FLAN-T5 嵌入的交叉注意力机制,导致 KL 散度CLAP 评分显著下降。然而,FAD 评分从 1.67 提高到 1.38。这些结果表明,虽然仅使用 AudioMAE 条件可以获得更好的质量,但使用 FLAN-T5 条件可以更有效地捕捉音频和文本之间的关系。在移除 FLAN-T5 嵌入后,表2中也观察到了类似的效果。

(e):我们的模型使用候选过滤方法来增强生成音频的质量,该方法涉及生成三段不同的音频,并根据 CLAP 评分选择最佳的一段进行最终评估。如果不使用 CLAP 进行候选过滤,FAD 性能会受到影响,KLCLAP 评分会略微下降。

我们的消融研究强调了联合微调和将 GPT 模型与 CLAPFLAN-T5 进行条件化的重要性,每个组件都为生成与文本描述相符的高保真音频提供了互补的优势。

6 结论

在这篇论文中,我们提出了 AudioLDM 2 用于音频生成,并在文本到音频、文本到音乐和文本到语音生成任务上实现了最先进或具有可比性的性能。作为一种通用的音频表示,我们提出的 语音语言(LOA) 可以实现潜在扩散模型的自监督预训练,为音频生成任务提供了坚实的基础。我们进一步通过进行上下文学习并将 AudioLDM 2 扩展到图像到音频生成中,展示了我们提出的方法的多功能性。AudioLDM 2 为从统一的视角进行音频生成的未来工作打开了大门。未来的工作将重点关注使 GPT 模型能够同时使用单一模型生成音频、音乐和语音的多任务学习。


参考

任务特定的归纳偏见(task-specific inductive biases):这是在模型设计时加入的一些假设或限制,目的是帮助模型更好地学习和解决特定类型的任务。

预定义的约束(predefined constraints):在模型训练之前就设定好的规则或条件,用来引导模型的学习方向。

音素phonemes是语言中最小的发音单位,它们是构成词汇并区分意义的声音元素。例如,在英语中,音素/p/和/b/分别在“pat”和“bat”中发音,区分了这两个词的意义。

**拟声词(onomatopoeia)**是指模仿自然界声音的词汇,比如“汪汪”模仿狗叫声,或者“喵喵”模仿猫叫声。在中文中,拟声词被称为“象声词”。这类词汇试图通过语言来模拟真实的声音,是一种语言表达的形式。

功能性磁共振成像(functional magnetic resonance imaging,简称fMRI)是一种神经影像学技术,通过测量神经元活动引发的血液动力学变化来观察大脑活动。它利用磁振造影技术,非侵入性地检测大脑中的血流和氧气消耗,从而推断出大脑的活动区域。由于fMRI具有较少的辐射暴露量,自1990年代以来,它在脑部功能定位领域占有重要地位

VAE潜在空间的变异性指的是在变分自编码器(VAE)中,潜在变量z的分布可能会有多大的变化。**在VAE中,我们希望潜在空间能够有一定的规律性,这样模型生成的数据才会有一致性和可预测性。如果潜在空间的变异性太大,那么模型生成的数据可能会变得随机和不可控。为了控制这种变异性,VAE的训练过程中会使用KL散度作为损失函数的一部分。**KL散度会衡量潜在变量z的实际分布与一个预设的标准分布(通常是高斯分布)之间的差异。**通过最小化这个差异,VAE的潜在空间就会被限制在一个较小的变异范围内,从而使得生成的数据更加稳定和高质量。简单来说,VAE潜在空间的变异性就是潜在变量分布的多样性和复杂性。控制这种变异性是VAE生成稳定和高质量数据的关键。

词汇

关键词

onomatopoeia 拟声词
functional magnetic resonance imaging 功能性磁共振成像
discriminative pretraining methods 区分性预训练方法
time steps 时间步长
mel bins 梅尔频段,梅尔滤波器
positive integer 正整数
forward pass 前向传播 The forward pass of the VAE can be formulated as V : X ↦ z ↦ X ^ \mathcal{V}:X \mapsto z \mapsto \hat{X} V:XzX^
discriminative loss 判别损失
KL divergence KL散度
prior distribution 先验分布
backward transition 反向转换
evidence lower bound (ELBO) 证据下界
closed-form solution 封闭形式解
target conditional diffusion distribution 目标条件分布
feed-forward network 前馈网络
text composition 文本补全
maxture of expert model 专家混合模型
thermal map 热图
inertial measurement units 惯性测量单元(IMUs)
corpora 语料库
high-fidelity audio 高保真音频

陌生词

commonalities 共同点
holistic 整体的,全面的
unified 统一
unified perspective 统一视角
introduces 介绍,引进
phonemes 音素
undertaken 进行
inductive biases, 归纳偏差
predefined constraints 预定义约束
prosody 韵律 model the prosody of speech
specialized 专门
scenarios 场景
specialization 专业化
complex auditory scenarios. 复杂听觉场景
tend to 倾向于 previous text-to-audio generation research tends to generate unintelligible speech
unintelligible 难以理解的,不知所云 previous text-to-audio generation research tends to generate unintelligible speech
conclusions 结论 conclusions about a specific design drawn from one domain may not necessarily transfer to another
drawn from 取自 conclusions about a specific design drawn from one domain may not necessarily transfer to another
transfer to 传送到 conclusions about a specific design drawn from one domain may not necessarily transfer to another
advancements 进步
substantial progress 实质性进展
trend 趋势
constructing 构建 This trend highlights the potential of constructing a unified audio generation framework.
versatile 多功能的
encompass 涵盖
nuances 细微差别
splash 稀里哗啦地溅落,飞溅
acoustic information 声学信息 In theory, the “language of audio” should be able to represent both fine-grained acoustic information (e.g., “what does the speaker say”) and coarse-grained semantic information (e.g., “what is that sound”).
fine-grained 细粒度
coarse-grained 粗粒度 In theory, the “language of audio” should be able to represent both fine-grained acoustic information (e.g., “what does the speaker say”) and coarse-grained semantic information (e.g., “what is that sound”).
scheme 方案
alleviating 缓解
accumulation 累加,累计
comparable performance 性能相当 AudioLDM 2 achieves comparable performance with the SoTA by significantly outperforming a strong baseline FastSpeech 2
peripheral functionalities 外围功能 Moreover, we explore some of the peripheral functionalities of AudioLDM 2, such as in-context learning for audio, music, and speech
substantial advancement 实质性进步
intelligible 可理解的
be formulated as 可以表述为 An audio generation process can be formulated as H : C ↦ x \mathcal{H}:C \mapsto x H:Cx
scarcity 缺乏
robust backbone 强大支撑 provide a robust backbone for the overall generation system.
accurately 准确地
encompassing 包含
manually 手动
is potentially better for 可能更适合 The AudioMAE feature is potentially better for generative tasks than other discriminative pretraining methods.
potentially 潜在的,可能的
be treated as 被视为 The mel spectrogram X is then treated as an image
serving as 充当 serving as the input for the AudioMAE encoder.
common factor 公共因子,能够整除两个或多个数或表达式而没有余数的数或表达式。 The patch size P is typically designed to be a common factor T and F .
facilitate 促进,帮助,使容易
variant 变体 which is the variant of the denoising diffusion probabilistic models (DDPM)
blend into 融入 noise schedule hyper-parameter$\beta _{t} \in [0,1] $determines how quickly the noise is blended into the data.
derive 获得,得到,推导出 If we marginalize the z 1... T z_{1...T} z1...T we can derive the lower bound of $log[Pr(z_0
deterioration 恶化 all three evaluation metrics exhibited a marked deterioration
order 顺序 As discussed in Section 2.1.1, the output of the AudioMAE encoder preserves both temporal and frequency orders.
treat…as… 将…视为… Thus we treat the generation of Y as a language modelling task
originally 最初,起初 GPT-2 is based on transformer architecture and was originally trained on a massive amount of text data using an unsupervised learning approach.
massive amount of 大量的 GPT-2 is based on transformer architecture and was originally trained on a massive amount of text data using an unsupervised learning approach.
likelihood 可能性、概率 the GPT-2 model$ M_\theta$ is trained to maximize the likelihood of a sequence
visual clues 视觉线索
resort 采取,采用
has issues in 存在问题 has issues in capturing the temporal information in the text data
downside of …的缺点 To compensate for this downside of the CLAP model
compensate 补偿,弥补 To compensate for this downside of the CLAP model,
enhanced version 增强版本
regarding 有关
readily 容易地,随手地 Except for the phoneme encoder, which does not have a readily available pre-trained weight
kept frozen 保持冻结 the parameter of all other pre-trained feature extraction models is kept frozen during the experiment.
validate 验证 We mainly focus on the text-to-audio generation task to validate the effectiveness of AudioLDM 2.
scalability 可扩展性
in terms of 按照
tendency 倾向
ambiguous 含糊不清的
vague 模糊的
either … or …. 要么…要么…
neverthless 尽管如此
stem from 源于 Nevertheless, the high performance of AudioLDM may also stem from the diverse audio data,
reveal 揭示了
fluctuations 波动
punctuation 标点
tone 语气,腔调
nuances 细微差别
which in turn 反过来
superior 更好的
underscore 强调
component 部件,成分
complementary 补充
robust foundation 坚实的基础
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luis_jie/article/details/137244984

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签