语音篇之音效生成模型
在遇到不同序列,就拿最常见的多模态来举例子吧,常用的特征融合手段就是交叉attention,那就是要设计谁作为query?谁作为key和value?一般来说目标序列作为query,而参考源作为key和value,但是具体的kqv的获得还是非常灵活的,比如本篇这里将视频和音频一起混合作为了q,而不是仅仅用音频作为q,在日常工作中,如果想折腾模型结构,这里是可以有一定操作空间的。
前言
语音界的技术最近也是在快速迭代发展,从ASR到TTS都在全面进步。
而且卷到了各个垂类比如音乐生成(有时间介绍一篇)等等,而今天我们要看的是另外一个有趣的垂类:视频音效生成模型即V2A或者TV2A。注意不是文本模态的TTS哦~
具体来说要介绍的是由腾讯混元团队研发的HunyuanVideo-Foley,下面我们来听几个demo:
1-1
2-1
4-1
5-1
更多的demo,大家可以去官网进行查看。
可以看到效果还是不错的,可以用在自媒体配音等场景,玩玩应该还可以。
下面我们来看下技术是如何实现的?
论文链接:https://arxiv.org/pdf/2508.16930
github地址:https://szczesnys.github.io/hunyuanvideo-foley/
方法
(1) 挑战
想要实现好的效果,最少面临三个挑战:
(a)第一个就是缺少数据,目前业界没有一个高质量的文本视频-音效pair数据集,比如现有的VGGSound质量较低,还有一些质量稍微高点的数据但是又缺少视频模态(即退化为普通的文本转语音)
(b)第二个就是效果上存在模态失衡,即音效往往过度关注拟合文本指令而忽略一些视频本身的语义。举个例子来讲:当面对一个同时有人群、海鸥和海浪的视频且prompt此时是让生成海浪声音的时候,模型往往只生成海浪的声音,而忽略其他音频元素(脚步声和海鸥叫声),这就导致生成的音效沉浸感不足,也即忽略了视频本身的语义,而更多的是仅仅关注文本。
(c)第三个就是低保真,现有模型生成的音效基本上很难达到专家或者电影要求的水平,比如存在噪音和一致性低等问题。
(2) 解决方案
(a)TV2A Data Pipeline
针对数据缺失问题,作者搭建了一套数据Pipeline来获得了一个100k量级的高质量数据集,具体如下:
从上图可以看到,作者首先是过滤掉没有音频的视频,然后使用场景检测算法scene detection对原始视频进行分段(分成8秒的间隔)。然后分析这些片段也即silence detection,把拥有超过80%静音阈值的片段丢弃(换句话说就是没啥音效的视频都丢弃掉)。
同时考虑到网上大量的视频存在高压缩和质量低的情况,作者进一步对视频进行了带宽检测bandwidth detection,即仅保留有效采样率超过32kHz的样本。
同时如果原视频使用的是不合格设备拍摄的,那通常会出现大量背景噪音和环境干扰,进而使其音效质量不是电影级别的,为此作者使用了AudioBox aesthetic Toolkit进行音频质量评估,而且使用信噪比SNR测量作为补充指标。利用这些参数,作者根据经验设计了一个标准来筛选并仅保留高质量的音频片段。
还有另一个挑战是确保音视频对齐,这包括语义对齐和时间对齐。作者利用ImageBind和 AV-align分别解决语义对齐和时间对齐问题。
在完成上述筛选过程后,作者进一步使用语音-音乐检测模型speech-music和音频分类模型audio classification对视频片段进行打tag注释,这些注释为每个片段提供了分类标签,从而能够有效地管理类别分布,确保在训练数据集中呈现均衡的表示。
最后使用GenAU模型为每个片段生成音频字幕,其能够提供音频内容的简洁描述也即文本指令数据的准备。
(b)TV2A Framework
有了数据后,接下来我们来看看模型结构,这里作者主要是经过各种精心设计,想要解决上面说的模态失衡问题,如下:
在看一个模型架构的时候主要看其模态表征+模态交互。
- b.1 表征
从上面可以看到关于视觉帧的表征主要用的是pre-trained SigLIP2,文本表征用的是clip text encoder,音频用的是DAC-VAE。
图中还有一个encoder就是Synchronization visual encoder,Synchronization模型是给定音频和视频流后预测它们之间的时间偏移的,这个后面会用来作为条件来确保整个模型能够感知时间一致性(这对于视频的音效生成非常重要,不然会给人不同步的感觉)
- b.2 Dual-Phase Attentions
另外从上图看有Multimodal transformer block和Unimodel transformer block,其中前者就是多模态交互模块,后者是单模态(语音)模块,那么最有设计点的就是前者,其详细结构如图的右半部分。
其出发点是这样的:不同模态要求的对齐粒度是不一样的,比如音频和视频的对齐粒度要是帧级别的(时间精确度要求非常细),而音频和文本的对齐粒度则是全局语义粒度的。为了处理这种不同粒度的差异,作者采用了所谓Dual-Phase Attentions方法。
具体来说就是音频和视觉先通过interleaved RoPE模块(后面讲)concatenated成一个统一的序列,然后进行self attention,然后再分成双流(音频和视频),再然后通过 Synchformer(时间一致性作为条件,后面讲)对各自进行时间一致性的精确控制。
最后再把两者concatenated作为query来和文本encoder的结果(作为key和value)来做cross-attention。
我们先理一下这里的逻辑:我们先从cross-attention来看,cross-attention一般来说是让两个不同的序列(或者数据来源)之间建立关注关系,它允许一个序列(query)去关注另一个序列(Key和Value)从而实现信息的融合。对标transformer经典图的话query所在的分支就是decoder即目标序列,而key和value所在的分支就是encoder即一般是参考源比如待翻译的句子。(更详细的理解大家可以看https://blog.csdn.net/shizheng_Li/article/details/146213459)
那么对应到这里理解的话:音频和视频先是经过一系列操作融合(为了前面说的帧级别的细粒度对齐),最终得到一个query,然后和文本模态做交叉attention,如果按照标准transformer结构视角来看这里的交叉attention的话:整个音频和视频交互的那一坨就是decoder(就是目标所在的序列即当前是语音要生成),文本就是encoder。
我们再理一下这里的逻辑:一般来说语音生成架构应该是语音单独作为一个模态进行decoer即作为query,视频和文本统一encoder表征作为key和value。但是这里却将视频揉杂到query,理由就是音频和视频要做帧粒度的对齐,而不是简单的全局对齐(而和文本是粗粒度的全局),而要做到帧对齐就是要在时间上严格对齐即两者先进行了单独self-attention,进行了充分的对齐,具体来说作者又进行了一个Interleaved RoPE设计来确保帧对齐。
接下来我们就来看Interleaved RoPE,不过到此为止,大家应该能先明白了为啥作者是这么组合三种模态来当query,key,value的。
再强调一点就是:从图中可以看到每个Multimodal transformer block的输入和输出都是双流的即一个视频流一个音频流,一直这么堆叠几个块。但是Unimodel transformer block是单流的,其输入输出都只有音频,其中Unimodel transfor第一个块的输入只用Multimodal transformer最后一个块的音频输出流。
关于Interleaved RoPE也很简单,下面公式就很直观:
x就是音频表征,Fv就是视角表征,Fav就是最终的联合表征也即concatenated,可以看到Fav1其实就是x1,Fav2就是Fv1,Fav3就是x2,Fav4就是Fv2,Fav5就是x3,Fav6就是Fv3,…。其实就是将音频和视角按照时间线依次对应一一排列即可。
接下来再说说Synchronization Features即图中最左边sync feature这里,其主要是通过Synchronization visual encoder提取视频-音频时间一致性特征,然后和当前流时间特征一起加和后作为条件来通过门结构控制模型融合,而且通过图中可以看到其不但作为条件控制多摸Multimodal transformer block,还控制单模Unimodel transformer block,毕竟确保视频音效在时间上一致性是非常重要的。
关于模型架构,我们看图还有最后一块就是REPA LOSS,这个也很好理解了,其中ATST就是音频经过原始pre-train的表征,然后让其去和中间层DiT layers做相似度计算loss,目标就是让两者越来越相似,进而提供更有效的语义和声学指导,从而增强语义对齐和生成音频的质量。
(c)实验
数据和模型架构都讲完了,下面来简单看几个实验结果吧,感兴趣的同学可以去原论文看更多的结果。
我们这里就简单贴一个模型架构的消融实验
为了体现Dual-Phase Attentions的有效性,作者用另外两种架构作为baseline来对比,一个是采取self-attention进行文本-音频-视频三流模态对齐,另外一个是用cross-attention分别对齐音频文本和音频视频模式。

可以看到Dual-Phase Attentions(相当于同时联合了self-attention和cross-attention)最好。
总结
在遇到不同序列,就拿最常见的多模态来举例子吧,常用的特征融合手段就是交叉attention,那就是要设计谁作为query?谁作为key和value?
一般来说目标序列作为query,而参考源作为key和value,但是具体的kqv的获得还是非常灵活的,比如本篇这里将视频和音频一起混合作为了q,而不是仅仅用音频作为q,在日常工作中,如果想折腾模型结构,这里是可以有一定操作空间的。换句话说现在做大模型的,如果纯做文本LLM,模型架构上基本没啥工作了,大部分工作都是做数据,但是做多模态的算法工程师其实还是可以做做模型架构的事。
关注
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)