>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

如何使用纯文本从音轨中提取任意声音

AudioGhost Banner

Demo Python License

如果你曾经需要从播客中去除狗叫声,或者从老旧音轨中提取人声,那你可能用过标准的音轨分离器。通常,它们只能将音轨精确分成四个stem:人声、贝斯、鼓和其他。偏离这个范围——比如隔离特定的掌声或玻璃碰撞声——传统的神经网络就力不从心了。

最近,Meta 发布了 SAM-Audio 模型,它能根据文本描述分离音轨。问题是原始仓库需要大量 VRAM,并非每台机器都能运行。audioghost-ai 项目正是为了解决这一问题:作者删除了架构中不必要的部分,将 VRAM 需求削减了近一半,并将其打包成可直接使用的 Web 应用。

这个项目能做什么

AudioGhost 的核心思想是用自然语言给模型下达指令。你上传一个音频或视频文件,在输入框中输入描述 drumscrowd noisea dog barking,然后选择操作:提取该声音,或者反过来,从音轨中移除它。

界面立即提供内置的音轨混音器。你可以直接在浏览器中试听原始音轨、隔离后的声音和残留音轨,实时比较结果。视频流目前还没有进行视觉分析——服务只是从视频中提取音轨——但作者计划集成 SAM 2,以便在画面中点击物体。

如何将模型压缩到 4 GB VRAM

原始 SAM-Audio 被设计为通用的多模态工作主力。正因如此,视频编码器和文本排序器始终驻留在内存中,即使你只是想清理一个 MP3 文件。

AudioGhost 使用了 Meta 原始仓库讨论中提出的 Lite Mode。以下是他们节省资源的方法:

  • 移除视觉编码器和视觉排序器,节省约 4 GB VRAM
  • 禁用文本排序器和跨度预测器,再节省 3–4 GB
  • 默认切换到 bfloat16 精度进行计算
  • 将长音轨分割成 25 秒的片段

因此,基础模型可以在 RTX 3070 或 RTX 4060 等消费级 GPU 上运行,内存为 8 GB。如果在 float32 中启用高质量模式,需求会跃升至 13 GB,但对于大多数日常任务,基础模式已经足够。在速度方面,在测试的 RTX 4090 上推理可实现相对于实时音频的十倍加速。

架构与技术栈

开发者没有用奇特的工具把项目复杂化。架构非常简洁:

┌─────────────────────────────────────────────────┐
                   Frontend                       
             (Next.js + Tailwind v4)             
└──────────────────────┬──────────────────────────┘
                       
┌──────────────────────▼──────────────────────────┐
               Backend API                        
            (FastAPI + Python)                    
└──────────────────────┬──────────────────────────┘
                       
                       
┌─────────────────────────────────────────────────┐
              Task Queue                          
          (Celery + Redis)                        
└──────────────────────┬──────────────────────────┘
                       
                       
┌─────────────────────────────────────────────────┐
           SAM Audio Lite                         
    (Memory-optimized Meta SAM-Audio)            
└─────────────────────────────────────────────────┘

前端使用 Next.js 和 Tailwind v4 构建。后端运行在 FastAPI 上,繁重的音频分离任务通过 Celery 和 Redis 卸载到队列中。这使得界面在处理长文件时仍能保持响应。

快速启动

对于 Windows,仓库中包含现成的 bat 脚本,可自动设置 Conda 环境、拉取 Redis 并安装依赖。

如果你在 Linux 上手动构建或通过终端操作:

# Создаем окружение
conda create -n audioghost python=3.11 -y
conda activate audioghost

# Ставим PyTorch с поддержкой CUDA 12.6 и FFmpeg
pip install torch==2.9.0+cu126 torchvision==0.24.0+cu126 torchaudio==2.9.0+cu126 --index-url https://download.pytorch.org/whl/cu126
conda install -c conda-forge ffmpeg -y

# Ставим SAM Audio и зависимости бэкенда
pip install git+https://github.com/facebookresearch/sam-audio.git
cd backend && pip install -r requirements.txt

# Ставим фронтенд
cd ../frontend && npm install

启动前,你需要注册一个 HuggingFace 账号。该模型 sam-audio-large 受基础协议限制,因此你需要在模型页面申请访问权限并生成令牌,然后通过服务的 Web 界面输入。

使用感受与适用人群

该项目在 GitHub 上约有 470 颗星,处于 MVP v1.0 状态,所以你可能会遇到一些粗糙的边缘。例如,在 Windows 上构建 TorchCodec 时有时会出现 FFmpeg 二进制文件问题,而且模型可能难以处理过于抽象的文本描述。

尽管如此,这是少数能将 Meta 的重型研究模型转化为可用的本地服务的开源实现之一。如果你编辑视频、清理音轨,或在本地 GPU 上实验声音设计,这个项目绝对值得克隆到本地文件夹。

相关项目