📍 无忆研习社 › 开源解码 › Meta开源「音频版PS魔棒」:一句话提取任意声音,做视频的都疯了

Meta开源「音频版PS魔棒」:一句话提取任意声音,做视频的都疯了

摘要:Meta SAM-Audio是音频处理的革命性AI模型,能像Photoshop魔棒工具一样,通过文本、视觉或时间提示,从混合音频中精准分离特定声音。它适用于视频后期、音乐制作、播客清理等场景,支持多模态交互,采用生成式方法提升音质。本文从原理到实战,详解其技术架构、安装步骤及使用技巧,助你快速掌握这一强大工具。
字号 100%
行距 2.05
当前可见 60% 的内容

Meta SAM-Audio 音频分割模型完全指南:AI音频处理的革命性突破

本文由「无忆研习社」原创整理,未经授权禁止转载。如需转载请联系站长获取授权。

写在前面

做过视频剪辑的朋友应该都有这样的经历——录制了一段户外采访,结果背景的汽车喇叭声把人声完全盖住了;辛辛苦苦录制的播客节目,邻居家的狗叫声贯穿全程;想要翻唱一首歌,却找不到干净的伴奏...

这些场景在以前,要么需要专业的音频工程师花费大量时间手动处理,要么就只能忍痛放弃素材。但现在,Meta(原Facebook)发布的 SAM-Audio 模型,彻底改变了这个局面。

作为一个在音视频处理领域摸爬滚打了好几年的老玩家,我第一次用 SAM-Audio 的时候确实被惊艳到了。这篇文章,「无忆研习社」将带你从零开始,彻底搞懂这个划时代的音频分割工具。不管你是完全没接触过 AI 的小白,还是想要深入了解技术细节的开发者,这篇文章都能让你有所收获。


一、什么是 SAM-Audio?一句话说清楚

简单来说,SAM-Audio 就是「音频版的 Photoshop 魔棒工具」。

还记得在 Photoshop 里,你用魔棒工具一点,就能把图片中的某个元素选中并抠出来吗?SAM-Audio 做的事情本质上是一样的,只不过它处理的对象从图像变成了声音。

你给它一段嘈杂的音频,告诉它「我想要里面的狗叫声」或者「把吉他声给我分离出来」,它就能精准地把你要的那部分声音提取出来,同时还会把剩下的背景音也给你分离好。

Meta 把这个技术称为「音频分割」(Audio Segmentation),而 SAM 的全称是 Segment Anything Model——也就是「分割一切」的意思。之前 Meta 已经发布了图像版和视频版的 SAM,在计算机视觉领域掀起了不小的波澜。现在,他们终于把这套魔法带到了音频领域。


二、SAM-Audio 能做什么?实际应用场景盘点

在深入技术细节之前,我们先来看看 SAM-Audio 到底能用在哪些地方。毕竟,再牛的技术如果没有实际用处,那也只是空中楼阁。

2.1 视频后期制作

这是目前最直接的应用场景。假设你是一个视频博主,外出拍摄了一段 Vlog,结果录制的时候没注意,背景有施工噪音。以前的做法是用 Adobe Audition 或者 Premiere 里的降噪功能硬扛,效果往往不尽如人意——要么噪音没去干净,要么人声也被损坏了。

用 SAM-Audio 就简单多了。你只需要输入「人声」作为提示词,它就能把说话的声音干净利落地分离出来。施工声、汽车声、风声,统统被扔进「残余音轨」里。

更厉害的是,SAM-Audio 支持「视觉提示」。什么意思呢?如果你的视频画面里有多个人在说话,你可以直接在画面中点击某个人,SAM-Audio 就会自动识别并分离出这个人的声音。这种交互方式比打字描述要直观得多。

2.2 音乐制作与混音

对于音乐人来说,SAM-Audio 简直是神器。

想象一下这样的场景:你听到一首老歌,里面的贝斯线特别好听,想拿来做采样。但是原曲是完整混音的,贝斯和鼓、吉他、人声混在一起。以前你只能去网上找分轨文件,找不到就只能放弃。

现在用 SAM-Audio,你直接输入「bass guitar」,它就能把贝斯声单独提取出来。虽然肯定比不上原始分轨文件那么干净,但对于采样和创意混音来说已经足够用了。

再比如,你想做一首歌的翻唱版本,需要纯伴奏。用 SAM-Audio 提取伴奏轨,配合自己的演唱,分分钟搞定。

2.3 播客与语音内容制作

播客制作者应该深有体会:录音环境很难做到完全安静。空调声、键盘声、外面的车流声,这些看似不起眼的噪音,在最终成品里会非常刺耳。

SAM-Audio 可以帮你把这些背景噪音一次性清理干净。而且它的智能之处在于,它不是简单的「降噪」,而是真正理解什么是「人声」、什么是「噪音」,所以处理结果更加自然,不会出现那种「水下说话」的失真感。

2.4 影视配音与声音设计

专业的影视后期团队经常需要处理「同期声」——也就是拍摄现场录制的原始音频。同期声通常混杂着各种环境音,需要后期进行精细处理。

SAM-Audio 可以帮助声音设计师快速分离出需要的声音元素。比如一个街道场景,你可能需要把人物对话、汽车声、路人脚步声分别提取出来,然后根据画面需要重新混音。这种工作以前需要耗费大量人力和时间,现在效率大幅提升。

2.5 听力辅助与无障碍应用

这是一个容易被忽视但非常有意义的应用方向。Meta 已经宣布与美国助听器制造商 Starkey 合作,探索 SAM-Audio 在听力辅助领域的应用可能性。

想象一下,未来的智能助听器可以实时运行 SAM-Audio,帮助听障人士在嘈杂环境中更清晰地听到想听的声音——比如在聚会上只听一个人的声音,或者在马路上过滤掉车流噪音只保留人声提醒。这将极大改善听障人士的生活质量。


三、SAM-Audio 的三种交互方式详解

SAM-Audio 最让人眼前一亮的设计,是它支持三种不同的「提示」方式来指定你想要分离的声音。这种多模态的交互设计,让不同场景下的用户都能找到最适合自己的使用方式。

3.1 文本提示(Text Prompting)

这是最直观的方式。你直接用自然语言描述想要提取的声音,SAM-Audio 就会按照你的描述去工作。

举几个例子:

  • 「狗叫声」(dog barking)
  • 「女声演唱」(female singing voice)
  • 「钢琴演奏」(piano playing)
  • 「说话的男人」(a man speaking)
  • 「汽车引擎声」(car engine)

需要注意的是,根据 Meta 的技术文档,SAM-Audio 对「名词短语/动词短语」形式的提示词效果最好。比如「狗叫声」就比「有一只狗在叫」效果更好。这是因为模型在训练时,大量使用了这种简洁的描述形式。

文本提示的优势是简单直接,缺点是有时候很难用语言准确描述某种声音。比如「第三个人说话的声音」这种描述,模型可能就不太能理解。

3.2 视觉提示(Visual Prompting)

这是 SAM-Audio 相比其他音频分离工具的杀手锏功能。

当你处理的是视频文件(而不是纯音频)时,你可以直接在视频画面中点击或框选你想要分离声音的对象。比如:

  • 画面中有一个乐队在演奏,你点击吉他手,SAM-Audio 就会分离出吉他声
  • 几个人在聊天,你框选其中一个人,就能分离出这个人的声音
  • 视频里有只猫在叫,你点击那只猫,猫叫声就被单独提取出来

这种方式特别适合复杂场景。当你很难用语言描述清楚「我到底要哪个声音」的时候,直接用手指点一下就搞定了。

技术上,这是通过 SAM-Audio 底层的「视觉-音频感知编码器」(PE-AV) 实现的。这个编码器能够理解画面中的物体和声音之间的语义关联——它知道画面里那个移动的嘴巴对应的是说话声,画面里振动的吉他弦对应的是吉他声。

3.3 时间跨度提示(Span Prompting)

这是 SAM-Audio 首创的一种提示方式,在业界属于独家技术。

有时候你要分离的声音在整个音频中反复出现,而且你可能不太好用语言描述它是什么声音。这时候,你可以在时间轴上标记一个「包含目标声音」的时间段,SAM-Audio 就会识别这个时间段里有什么特殊的声音,然后在整个音频中把所有这种声音都找出来并分离。

举个实际例子:你录制了一个小时的会议音频,中间有一个参会者偶尔会咳嗽,你想把所有咳嗽声都去掉。你不需要听完整个音频把每次咳嗽都标记出来,只需要找到一次咳嗽,标记那几秒钟,SAM-Audio 就会自动识别并处理所有类似的咳嗽声。

这种方式特别适合处理长音频中的重复性噪音。

3.4 组合使用

最强大的是,这三种提示方式可以组合使用。

比如,你可以先用文本提示说「钢琴演奏」,然后再用视觉提示点击画面中的钢琴家,这样就能更精准地定位到你想要的那个钢琴声(而不是其他钢琴)。

或者,你用时间跨度标记了某个声音出现的位置,再用文本补充说明「这是敲门声」,模型就能更准确地理解你的意图。

根据 Meta 的评测数据,多模态组合提示的效果,普遍优于单一模态提示。所以在实际使用中,建议大家多尝试组合方式。


四、技术架构深度解析

看完了应用场景和使用方式,我们来深入了解一下 SAM-Audio 的技术架构。这部分内容稍微偏技术一些,但我会尽量用通俗的语言来解释。就算你不是程序员,理解这些内容也能帮助你更好地使用这个工具。

4.1 核心架构:扩散变换器 + 流匹配

SAM-Audio 的核心是一个叫做「扩散变换器」(Diffusion Transformer,简称 DiT)的神经网络架构,使用「流匹配」(Flow Matching)技术进行训练。

这两个概念可能有点抽象,我来打个比方:

想象你有一杯混浊的水(混合音频),你想从中分离出一种特定的颗粒(目标声音)。传统的方法是用各种过滤器一层层筛选(这就是传统的频谱掩码方法)。

SAM-Audio 的做法不一样。它更像是一个「音频重建器」——它先把混合音频「打散」成一团噪声(这就是扩散过程),然后根据你的提示词,重新「生成」出你想要的那部分声音(这就是逆扩散过程)。

这种生成式的方法有一个巨大的优势:它产生的音频更加干净、自然,不会有传统方法常见的「音频伪影」(artifact)问题。

4.2 DAC-VAE 潜在空间

SAM-Audio 不是直接在原始音频波形上工作,而是先把音频编码到一个叫做「DAC-VAE」的潜在空间里。

你可以把这个过程想象成「压缩」。就像 JPEG 图片压缩一样,DAC-VAE 把复杂的音频波形压缩成一个更紧凑的表示形式。这样做的好处是:

  1. 计算效率大幅提高(处理速度更快)
  2. 模型可以学习到更高层次的音频特征(不只是波形细节)

具体来说,SAM-Audio 把音频编码成每秒 25 帧、每帧 128 维的特征序列。处理完成后,再用解码器把特征还原成音频波形。

4.3 PE-AV:视觉-音频感知编码器

前面提到 SAM-Audio 支持视觉提示,背后的功臣就是 PE-AV(Perception Encoder Audio-Visual)。

PE-AV 是 Meta 专门为 SAM-Audio 开发的一个跨模态编码器,它在超过 1 亿对音视频数据上进行训练,学会了理解「画面」和「声音」之间的对应关系。

比如它知道:

  • 画面中嘴巴在动的人,对应的是说话声
  • 画面中手指在弹奏的吉他,对应的是吉他声
  • 画面中尾巴在摇的狗,可能正在叫

这种跨模态理解能力,是 SAM-Audio 能够支持视觉提示的基础。

PE-AV 使用了 10 种不同的对比学习目标进行训练,确保它能够在各种场景下都准确理解音视频的对应关系。

4.4 模型规模与性能

SAM-Audio 提供了三种不同规模的模型:

模型版本

参数量

适用场景

SAM-Audio-Base

5 亿

对速度要求高,质量要求一般

SAM-Audio-Large

10 亿

平衡速度和质量

SAM-Audio-Huge

30 亿

追求最高质量

有趣的是,无论哪个版本,SAM-Audio 的处理速度都比实时播放更快。Meta 公布的数据显示,实时因子(RTF)大约是 0.7,也就是说处理 10 秒的音频只需要 7 秒左右。

这个性能对于实际应用来说非常重要。想象一下如果处理 5 分钟的音频需要 1 小时,那再好的效果也没有实用价值。SAM-Audio 在这方面做得相当不错。

4.5 双输出设计

SAM-Audio 采用了「双输出」设计,也就是说它不只是提取你想要的声音,同时还会把「剩下的」声音也给你。

输出包括两个音轨:

  1. Target(目标):你指定要分离的声音
  2. Residual(残余):混合音频中除了目标之外的所有其他声音

这个设计非常实用。很多时候,你不只是想要某个声音,也想保留背景音做其他用途。比如从访谈视频中分离出人声后,背景音乐轨道可以单独用来做其他场景的配乐。


五、与竞品对比:SAM-Audio 强在哪里

市面上做音频分离的工具其实不少,比如:

  • Spleeter(Deezer 开源)
  • Demucs(Meta 之前的项目)
  • LALAL.AI(商业软件)
  • UVR(Ultimate Vocal Remover)

那 SAM-Audio 相比这些工具有什么优势呢?

5.1 统一模型 vs 专用模型

大多数现有工具都是「专用模型」——人声分离有人声分离的模型,音乐分轨有音乐分轨的模型。你要处理不同类型的音频,就需要切换不同的工具。

SAM-Audio 是「统一模型」。同一个模型,通过不同的提示词,就能处理人声、音乐、环境音、音效等各种类型的音频分离任务。这大大简化了工作流程。

5.2 多模态提示 vs 纯文本/无提示

传统工具要么完全不支持自定义(比如 Spleeter 只能分离固定的几种音轨),要么只支持文本提示。

SAM-Audio 支持文本、视觉、时间跨度三种提示方式,而且可以组合使用。这种灵活性是其他工具不具备的。

5.3 生成式方法 vs 判别式方法

大多数传统工具使用「频谱掩码」的方法——计算一个掩码矩阵,然后把原始频谱乘以这个掩码,得到分离后的音频。这种方法容易产生音频伪影,尤其是在复杂混音场景下。

SAM-Audio 使用生成式方法,直接「生成」目标音频。虽然计算量更大,但音频质量更高,伪影更少。

5.4 开源 vs 闭源

相比 LALAL.AI 这样的商业闭源产品,SAM-Audio 完全开源。代码在 GitHub 上公开,模型权重可以免费下载。这意味着你可以:

  • 在本地运行,不用担心数据隐私
  • 根据自己的需求进行定制和微调
  • 在自己的产品中集成使用

5.5 目前的局限性

当然,SAM-Audio 也不是万能的。Meta 在技术文档中坦诚指出了几个局限:

  1. 不支持音频作为提示:你不能给它听一个声音样本,让它在混合音频中找类似的声音。目前只支持文本、视觉和时间跨度三种提示。
  2. 无法完全分离高度相似的声音:比如从合唱中分离出单个歌手的声音,或者从交响乐中分离出单个乐器的声音。这类任务目前效果还不够好。
  3. 需要提示词才能工作:SAM-Audio 不能自动分析一段音频然后告诉你里面有什么声音。它需要你先指定要分离什么。

这些局限在未来的版本中可能会得到改善,但目前使用时需要注意。


六、环境搭建与安装教程

说了这么多理论,是时候动手实践了。这一部分,「无忆研习社」会手把手教你如何在本地搭建 SAM-Audio 的运行环境。

6.1 硬件要求

首先说说硬件要求。SAM-Audio 是一个大模型,对硬件有一定要求:

最低配置:

  • GPU:NVIDIA 显卡,显存 8GB 以上
  • 内存:16GB 以上
  • 硬盘:50GB 可用空间(用于存放模型权重)

推荐配置:

  • GPU:NVIDIA RTX 3080 或更高,显存 12GB 以上
  • 内存:32GB 以上
  • 硬盘:SSD,100GB 可用空间

如果你只是想体验一下 SAM-Audio,没有高配显卡也没关系。Meta 提供了在线 Demo,你可以直接在浏览器中试用:

https://ai.meta.com/samaudio/

6.2 软件环境准备

SAM-Audio 基于 Python 开发,需要以下软件环境:

  • Python 3.10 或更高版本
  • PyTorch 2.3.1 或更高版本
  • CUDA 11.8 或更高版本(如果使用 NVIDIA GPU)

建议使用 Conda 来管理 Python 环境,避免依赖冲突。

6.3 详细安装步骤

第一步:创建虚拟环境

打开终端(Windows 用户打开 Anaconda Prompt),执行:

# 创建一个名为 sam-audio 的虚拟环境,Python 版本 3.10
conda create -n sam-audio python=3.10

# 激活虚拟环境
conda activate sam-audio

第二步:安装 PyTorch

根据你的 CUDA 版本,从 PyTorch 官网获取对应的安装命令。以 CUDA 12.4 为例:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

如果你不确定自己的 CUDA 版本,可以执行 nvidia-smi 查看。

第三步:安装 SAM-Audio

pip install git+https://github.com/facebookresearch/sam-audio.git

这个命令会自动从 GitHub 下载代码并安装所有依赖。

第四步:获取模型权重

SAM-Audio 的模型权重托管在 Hugging Face 上,需要先申请访问权限:

  1. 访问 https://huggingface.co/facebook/sam-audio-large
  2. 点击「Access repository」按钮
  3. 同意使用条款
  4. 等待审批(通常几分钟到几小时)

获得权限后,在终端登录 Hugging Face:

huggingface-cli login

按提示输入你的 Access Token(可以在 Hugging Face 账户设置中生成)。

第五步:验证安装

创建一个测试脚本 test_sam_audio.py:

import torch
from sam_audio import SAMAudio, SAMAudioProcessor

# 检查 CUDA 是否可用
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"CUDA version: {torch.version.cuda}")

# 尝试加载模型
print("Loading model...")
model = SAMAudio.from_pretrained("facebook/sam-audio-large")
processor = SAMAudioProcessor.from_pretrained("facebook/sam-audio-large")
print("Model loaded successfully!")

运行这个脚本,如果没有报错,说明安装成功。

6.4 常见安装问题排查

问题 1:CUDA_HOME 环境变量未设置

如果看到类似 OSError: CUDA_HOME environment variable is not set 的错误,需要手动设置环境变量:

Windows:

set CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4

Linux/Mac:

export CUDA_HOME=/usr/local/cuda-12.4

问题 2:显存不足

如果运行时报 CUDA out of memory 错误,可以尝试:

  • 使用更小的模型(sam-audio-base 而不是 large)
  • 处理更短的音频片段
  • 关闭其他占用显存的程序

问题 3:下载速度慢

国内用户下载 Hugging Face 上的模型可能比较慢,可以设置镜像:

export HF_ENDPOINT=https://hf-mirror.com

或者手动下载模型文件后放到本地缓存目录。


七、实战代码详解

环境搭建好了,接下来「无忆研习社」带你写几个实际的使用案例。

7.1 基础用法:文本提示分离

这是最简单的用法,用自然语言描述你想要分离的声音:

import torch
import torchaudio
from sam_audio import SAMAudio, SAMAudioProcessor

# 1. 加载模型和处理器
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = SAMAudio.from_pretrained("facebook/sam-audio-large")
processor = SAMAudioProcessor.from_pretrained("facebook/sam-audio-large")
model = model.eval().to(device)

# 2. 准备输入
audio_file = "混合音频.wav" # 你的音频文件路径
description = "dog barking" # 描述你想要分离的声音

# 3. 处理音频
batch = processor(
audios=[audio_file],
descriptions=[description]
).to(device)

# 4. 执行分离
with torch.inference_mode():
result = model.separate(batch, predict_spans=True)

# 5. 保存结果
sample_rate = processor.audio_sampling_rate
torchaudio.save("目标声音.wav", result.target.cpu(), sample_rate)
torchaudio.save("背景声音.wav", result.residual.cpu(), sample_rate)

print("分离完成!")

这段代码的核心流程是:

  1. 加载预训练模型
  2. 用 processor 处理输入音频和描述文本
  3. 调用 model.separate() 执行分离
  4. 保存输出的目标音轨和残余音轨

7.2 进阶用法:视觉提示分离

如果你处理的是视频文件,可以使用视觉提示来指定分离目标:

import torch
import numpy as np
from sam_audio import SAMAudio, SAMAudioProcessor
from torchcodec.decoders import VideoDeco
🔒
该内容仅对更高等级社区用户开放
请谨慎解锁时效性强且发布日期较早的文章
单篇解锁后若未显示全文请刷新页面
您当前:游客 · 可见 60% 内容 · 升级至 注册用户 可见 70%
👀
游客
可见 60%
✓ 当前
注册用户
注册用户
可见 70%
社区精英
社区精英
可见 100%
社区守护
社区守护
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥9.9
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布0 篇
文章总数1107 篇
昨日发布1 篇
本月发布31 篇
建站时间456 天
🔍 搜索
站长微语

联系站长

QQ:2805463528
AIGC 技术社区
致力于解码 AI前沿技术 与经验分享
纯粹的技术应用社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长QQ二维码
AI交流群
AI交流群
仍在路上

那些寒夜里追赶过的方向

那些冷眼下没放弃的理想

一篇一篇写到现在

仍在路上

"不羁放纵爱自由"

—— 致敬 Beyond
持续创作中 莫潇羽 · 无忆研习社
▲