python-audio-separator
python-audio-separator 是一款功能强大的开源音频处理工具,旨在通过命令行或 Python 代码轻松将混合音频分离为独立的音轨(如人声、伴奏、鼓点、贝斯等)。它有效解决了音乐制作、视频剪辑及卡拉 OK 场景中难以提取特定声音元素的痛点,让用户能快速获取纯净的人声或伴奏文件,甚至进行降噪和去除混响等专业处理。
这款工具非常适合开发者集成到自己的项目中,也适合研究人员测试不同分离模型,同时其便捷的命令行操作让普通用户无需深厚编程背景也能上手使用。其核心亮点在于集成了 UVR(Ultimate Vocal Remover)社区中多种顶尖的预训练模型,包括 MDX-Net、VR Arch、Demucs 及最新的 MDXC 架构,确保了业界领先的分离质量。此外,python-audio-separator 具备出色的兼容性,不仅支持 NVIDIA GPU 加速和 Google Colab 云端运行,还专门优化了苹果 Silicon 芯片(M1/M2 等)的 CoreML 加速,即使在无独立显卡的设备上也能高效运转。无论是想制作伴奏的音乐爱好者,还是需要批量处理音频的开发团队,它都是一个灵活且可靠的选择。
使用场景
一家小型音乐工作室需要为独立歌手快速制作伴奏带和分轨素材,以用于短视频推广和现场排练。
没有 python-audio-separator 时
- 工程师必须手动配置复杂的深度学习环境,反复调试 UVR 图形界面依赖,耗时数小时才能运行一次分离任务。
- 处理批量歌曲时缺乏自动化脚本支持,只能人工逐个导入文件并点击按钮,效率极低且容易出错。
- 想要提取特定乐器(如仅保留鼓点或贝斯)时,受限于固定功能,难以灵活调用不同的预训练模型进行精细处理。
- 在服务器端部署时,由于缺少轻量级的 CLI 或 Python 库支持,难以将音频分离功能集成到现有的自动化工作流中。
使用 python-audio-separator 后
- 通过简单的 pip 安装或直接调用命令行,几分钟内即可利用 MDX-Net 等先进模型完成人声与伴奏的高质量分离。
- 编写几行 Python 代码即可实现文件夹级别的批量处理,自动遍历上百首歌曲并输出分轨文件,释放了大量人力。
- 灵活指定不同模型参数,轻松从混合音源中单独提取鼓、贝斯、钢琴等特定乐器茎干,满足多样化的创作需求。
- 无缝集成到后端服务或 Docker 容器中,支持 GPU 加速,让音频处理成为自动化内容生产流水线中的标准一环。
python-audio-separator 将原本繁琐的音频分离过程转化为简单可靠的代码指令,极大降低了音乐技术应用的门槛并提升了生产效率。
运行环境要求
- Linux
- macOS
- Windows (通过 Docker 或 Pip)
- 可选
- 若需加速,推荐 NVIDIA GPU (支持 CUDA 11.8 或 12.2)
- Apple Silicon (M1 及更新版本) 支持 CoreML 加速
- 未说明具体显存大小要求
未说明

快速开始
摘要: 通过命令行或作为您自己的 Python 项目中的依赖项,轻松使用音频音轨分离功能。该工具基于 @Anjok07 和 @aufr33 在 UVR 中提供的强大 MDX-Net、VR Arch、Demucs 和 MDXC 模型。
音频分离器是一个 Python 包,允许您使用 @Anjok07 训练的模型,将音频文件分离成多个音轨,这些模型专为 Ultimate Vocal Remover 设计。
这个包最简单(也是最常见的)用法是将音频文件分离成伴奏和人声两个音轨,这对于制作卡拉 OK 视频非常有用!不过,UVR 中提供的模型还可以将音频分离成更多音轨,例如鼓、贝斯、钢琴和吉他等,同时还能执行降噪或去除回声/混响等其他音频处理任务。
目录
- 🎶 音频分离器 🎶
特性
- 将音频分离成多个音轨,例如伴奏和人声。
- 支持所有常见音频格式(WAV、MP3、FLAC、M4A 等)。
- 可以使用 PTH 或 ONNX 格式的预训练模型进行推理。
- 提供 CLI 支持,便于在脚本中使用和批量处理。
- 提供 Python API,方便集成到其他项目中。
安装 🛠️
🐳 Docker
如果您可以使用 Docker,则无需实际安装任何东西——Docker Hub 上已发布适用于 GPU(CUDA)和 CPU 推理的镜像,支持 amd64 和 arm64 平台。
您可能希望挂载一个包含待分离文件的目录,并将其用作输出目录。
例如,如果当前目录下有一个名为 input.wav 的文件,您可以按如下方式运行 audio-separator(更多详情请参阅 使用部分):
docker run -it -v `pwd`:/workdir beveradb/audio-separator input.wav
如果您使用的是带有 GPU 的机器,则应使用 GPU 特定的镜像,并将 GPU 设备传递给容器,如下所示:
docker run -it --gpus all -v `pwd`:/workdir beveradb/audio-separator:gpu input.wav
如果未检测到 GPU,请确保您的 Docker 运行时环境正确地透传了 GPU——网上有许多指南可以帮助您完成此操作,例如 这篇教程。
🎮 带有 CUDA 的 Nvidia GPU 或 🧪 Google Colab
支持的 CUDA 版本: 11.8 和 12.2
💬 如果配置成功,运行 audio-separator --env_info 时应会看到以下日志消息:
ONNXruntime 已启用 CUDAExecutionProvider,可实现加速
Conda:
conda install pytorch=*=*cuda* onnxruntime=*=*cuda* audio-separator -c pytorch -c conda-forge
Pip:
pip install "audio-separator[gpu]"
Docker:
beveradb/audio-separator:gpu
Apple Silicon, macOS Sonoma+ 使用 M1 或更高版本 CPU(CoreML 加速)
💬 如果配置成功,运行 audio-separator --env_info 时应会看到以下日志消息:
ONNXruntime 已启用 CoreMLExecutionProvider,可实现加速
Pip:
pip install "audio-separator[cpu]"
🐢 无硬件加速,仅使用 CPU
Conda:
conda install audio-separator -c pytorch -c conda-forge
Pip:
pip install "audio-separator[cpu]"
Docker:
beveradb/audio-separator
🎥 FFmpeg 依赖
💬 要测试 audio-separator 是否已成功配置为使用 FFmpeg,请运行 audio-separator --env_info。日志中应显示 FFmpeg installed。
如果您使用 conda 或 docker 安装了 audio-separator,那么您的环境中应该已经具备 FFmpeg。
您可能需要单独安装 FFmpeg。在大多数平台上,安装都非常简单,例如:
🐧 Debian/Ubuntu:
apt-get update; apt-get install -y ffmpeg
macOS:
brew update; brew install ffmpeg
使用 Pip 进行 GPU / CUDA 特定的安装步骤
理论上,为了让 audio-separator 在 GPU 上运行,您只需按照上述方式使用 [gpu] 附加组件进行安装即可。
然而,有时同时让 PyTorch 和 ONNX Runtime 支持 CUDA 可能会有些棘手,因此未必能够顺利运行。
您可能需要直接重新安装这两个包,让 pip 自动为您计算适合您平台的正确版本,例如:
pip uninstall torch onnxruntimepip cache purgepip install --force-reinstall torch torchvision torchaudiopip install --force-reinstall onnxruntime-gpu
我通常建议使用此处向导推荐的命令,为您的环境安装最新版本的 PyTorch: https://pytorch.org/get-started/locally/
可能需要多个 CUDA 库版本
根据您的 CUDA 版本和环境,您可能需要安装特定版本的 CUDA 库,以便 ONNX Runtime 能够使用您的 GPU。
🧪 例如,Google Colab 现在默认使用 CUDA 12,但 ONNX Runtime 仍然需要 CUDA 11 的库才能正常工作。
如果您在运行 audio-separator 时看到错误信息 Failed to load library 或 cannot open shared object file,这很可能是问题所在。
您可以将 CUDA 11 的库与 CUDA 12 一起安装,方法如下:
apt update; apt install nvidia-cuda-toolkit
如果您在 Google Colab 或其他环境中运行时遇到以下消息:
[E:onnxruntime:Default, provider_bridge_ort.cc:1862 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1539 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : 加载库 libonnxruntime_providers_cuda.so 失败,错误为:libcudnn_adv.so.9: 无法打开共享对象文件:没有这样的文件或目录
[W:onnxruntime:Default, onnxruntime_pybind_state.cc:993 CreateExecutionProviderInstance] 创建 CUDAExecutionProvider 失败。需要 cuDNN 9.* 和 CUDA 12.*。请按照 GPU 要求页面(https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements)中的说明安装所有依赖项,确保它们位于 PATH 中,并且您的 GPU 是受支持的。
您可以通过运行以下命令来解决这个问题:
python -m pip install ort-nightly-gpu --index-url=https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ort-cuda-12-nightly/pypi/simple/
注:如果有人知道如何使这一过程更加简洁,从而让我们能够在不为每种硬件加速需求单独安装依赖的情况下支持不同平台的特定依赖,请告知我们或提交一个 PR!
使用方法 🚀
命令行界面 (CLI)
您可以通过命令行使用 Audio Separator,例如:
audio-separator /path/to/your/input/audio.wav --model_filename model_bs_roformer_ep_317_sdr_12.9755.ckpt
此命令将下载指定的模型文件,处理输入音频 audio.wav,并在当前目录下生成两个新文件,分别包含人声和伴奏。
注意: 您无需自行下载任何文件——audio-separator 会自动为您完成!
要查看支持的模型列表,请运行 audio-separator --list_models。
模型列表输出中列出的任何文件(包括文件扩展名)都可以通过 model_filename 参数指定(例如 --model_filename UVR_MDXNET_KARA_2.onnx),它将在首次使用时自动下载到 --model_file_dir 目录(默认为 /tmp/audio-separator-models/)。
列出并筛选可用模型
你可以使用 --list_models(或 -l)标志查看所有可用模型:
audio-separator --list_models
输出会显示一个表格,包含以下列:
- 模型文件名:用于
--model_filename的文件名 - 架构:模型架构(MDX、MDXC、Demucs 等)
- 输出音轨(SDR):该模型可以分离的音轨,以及在有数据时提供的信噪比分数
- 友好名称:描述模型的人类可读名称
筛选模型
你可以使用 --list_filter 按音轨类型筛选和排序模型列表。例如,要查找可以分离鼓声的模型:
audio-separator -l --list_filter=drums
示例输出:
-----------------------------------------------------------------------------------------------------------------------------------
Model Filename Arch Output Stems (SDR) Friendly Name
-----------------------------------------------------------------------------------------------------------------------------------
htdemucs_ft.yaml Demucs vocals (10.8), drums (10.1), bass (11.9), other Demucs v4: htdemucs_ft
hdemucs_mmi.yaml Demucs vocals (10.3), drums (9.7), bass (12.0), other Demucs v4: hdemucs_mmi
htdemucs.yaml Demucs vocals (10.0), drums (9.4), bass (11.3), other Demucs v4: htdemucs
htdemucs_6s.yaml Demucs vocals (9.7), drums (8.5), bass (10.0), guitar, piano, other Demucs v4: htdemucs_6s
限制结果数量
你可以使用 --list_limit 来限制显示的结果数量。这对于查找特定音轨的最佳模型非常有用。例如,要查看前 5 名人声分离模型:
audio-separator -l --list_filter=vocals --list_limit=5
示例输出:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Model Filename Arch Output Stems (SDR) Friendly Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------
model_bs_roformer_ep_317_sdr_12.9755.ckpt MDXC vocals* (12.9), instrumental (17.0) Roformer Model: BS-Roformer-Viperx-1297
model_bs_roformer_ep_368_sdr_12.9628.ckpt MDXC vocals* (12.9), instrumental (17.0) Roformer Model: BS-Roformer-Viperx-1296
vocals_mel_band_roformer.ckpt MDXC vocals* (12.6), other Roformer Model: MelBand Roformer | Vocals by Kimberley Jensen
melband_roformer_big_beta4.ckpt MDXC vocals* (12.5), other Roformer Model: MelBand Roformer Kim | Big Beta 4 FT by unwa
mel_band_roformer_kim_ft_unwa.ckpt MDXC vocals* (12.4), other Roformer Model: MelBand Roformer Kim | FT by unwa
JSON 输出
对于程序化使用,你可以将模型列表以 JSON 格式输出:
audio-separator -l --list_format=json
处理大文件
对于非常长的音频文件(超过 1 小时),你可能会遇到内存不足的错误。--chunk_duration 选项会自动将大文件分割成较小的块,分别处理后再合并结果:
# 将 8 小时的播客按 10 分钟为单位处理
audio-separator long_podcast.wav --chunk_duration 600
# 根据可用内存调整分块大小
audio-separator very_long_audio.wav --chunk_duration 300 # 5 分钟为单位
工作原理
- 分割:输入文件被分割成固定时长的块(例如 10 分钟)
- 处理:每个块单独处理,从而降低峰值内存使用量
- 合并:结果通过简单的拼接方式重新合并在一起
分块功能支持所有类型的模型:
- 2 音轨模型(如 MDX):人声 + 伴奏
- 4 音轨模型(如 Demucs):鼓、贝斯、其他、人声
- 6 音轨模型(如 Demucs 6s):贝斯、鼓、其他、人声、吉他、钢琴
优点
- 防止 OOM 错误:可以处理任意长度的文件而不会耗尽内存
- 内存使用可控:无论文件多长,内存使用都保持在一定范围内
- 无质量损失:每个块都使用选定的模型完整处理
- 多音轨支持:无缝支持 2、4 和 6 音轨模型
建议
- 文件大于 1 小时:使用
--chunk_duration 600(10 分钟) - 内存有限的系统:使用更小的分块(300–600 秒)
- 内存充足时:可能根本不需要分块
关于音频质量的说明
分块之间是直接拼接的,没有交叉淡化处理,这在极少数情况下可能会导致分块边界处出现轻微的伪影。不过,在大多数情况下,这些伪影并不明显。这种简单的拼接方式能够在解决内存问题的同时,尽量减少处理时间。
组合多个模型
你可以组合多个模型的结果来提高分离质量。这将依次运行每个模型,然后使用指定的算法合并它们的输出。
CLI 使用方法
使用 -m 指定主模型,用 --extra_models 指定额外的模型。你还可以通过 --ensemble_algorithm 指定集成算法。
# 使用默认的 'avg_wave' 算法组合两个模型
audio-separator audio.wav -m model1.ckpt --extra_models model2.onnx
# 使用特定算法组合多个模型
audio-separator audio.wav -m model1.ckpt --extra_models model2.onnx model3.ckpt --ensemble_algorithm max_fft
# 使用自定义权重(必须与模型数量一致)
audio-separator audio.wav -m model1.ckpt --extra_models model2.onnx --ensemble_weights 2.0 1.0
Python API 使用方法
from audio_separator.separator import Separator
# 初始化 Separator 类并设置自定义参数
separator = Separator(
output_dir='output',
ensemble_algorithm='avg_wave'
)
# 要组合的模型列表
# 注意:如果这些模型不存在,将会自动下载
models = [
'UVR-MDX-NET-Inst_HQ_3.onnx',
'UVR_MDXNET_KARA_2.onnx'
]
# 指定多个模型进行集成
separator.load_model(model_filename=models)
# 执行分离
output_files = separator.separate('audio.wav')
支持的集成算法
avg_wave:波形加权平均(默认)median_wave:波形中位数min_wave:波形最小值max_wave:波形最大值avg_fft:频谱图加权平均median_fft:频谱图中位数min_fft:频谱图最小值max_fft:频谱图最大值uvr_max_spec:基于 UVR 的最大频谱图集成uvr_min_spec:基于 UVR 的最小频谱图集成ensemble_wav:基于 UVR 的噪声最小块集成
集成预设
除了手动指定模型和算法外,你还可以使用社区测试过的精选组合预设:
audio-separator audio.wav -m model1.ckpt --extra_models model2.onnx --ensemble_algorithm uvr_max_spec
列出可用的预设
audio-separator --list_presets
使用一个预设(模型和算法会自动配置)
audio-separator audio.wav --ensemble_preset vocal_balanced
覆盖预设的算法
audio-separator audio.wav --ensemble_preset vocal_balanced --ensemble_algorithm max_fft
**Python API:**
```python
separator = Separator(output_dir='output', ensemble_preset='vocal_balanced')
separator.load_model() # 自动使用预设中的模型
output_files = separator.separate('audio.wav')
可用的预设:
| 预设 | 使用场景 | 模型 | 算法 |
|---|---|---|---|
instrumental_clean |
最干净的纯音乐,人声串音最少 | 2 | uvr_max_spec |
instrumental_full |
最大限度保留乐器音色 | 2 | uvr_max_spec |
instrumental_balanced |
噪音与音色饱满度的良好平衡 | 2 | uvr_max_spec |
instrumental_low_resource |
速度快、显存占用低 | 2 | avg_fft |
vocal_balanced |
整体人声质量最佳 | 2 | avg_fft |
vocal_clean |
乐器串音最小 | 2 | min_fft |
vocal_full |
最大化捕捉人声 | 2 | max_fft |
vocal_rvc |
针对RVC/AI训练优化 | 2 | avg_wave |
karaoke |
主唱去除 | 3 | avg_wave |
预设定义在 audio_separator/ensemble_presets.json 文件中——欢迎通过PR贡献!
完整命令行界面选项
用法:audio-separator [-h] [-v] [-d] [-e] [-l] [--log_level LOG_LEVEL] [--list_filter LIST_FILTER] [--list_limit LIST_LIMIT] [--list_format {pretty,json}] [-m MODEL_FILENAME] [--output_format OUTPUT_FORMAT]
[--output_bitrate OUTPUT_BITRATE] [--output_dir OUTPUT_DIR] [--model_file_dir MODEL_FILE_DIR] [--download_model_only] [--invert_spect] [--normalization NORMALIZATION]
[--amplification AMPLIFICATION] [--single_stem SINGLE_STEM] [--sample_rate SAMPLE_RATE] [--use_soundfile] [--use_autocast] [--custom_output_names CUSTOM_OUTPUT_NAMES]
[--mdx_segment_size MDX_SEGMENT_SIZE] [--mdx_overlap MDX_OVERLAP] [--mdx_batch_size MDX_BATCH_SIZE] [--mdx_hop_length MDX_HOP_LENGTH] [--mdx_enable_denoise] [--vr_batch_size VR_BATCH_SIZE]
[--vr_window_size VR_WINDOW_SIZE] [--vr_aggression VR_AGGRESSION] [--vr_enable_tta] [--vr_high_end_process] [--vr_enable_post_process]
[--vr_post_process_threshold VR_POST_PROCESS_THRESHOLD] [--demucs_segment_size DEMUCS_SEGMENT_SIZE] [--demucs_shifts DEMUCS_SHIFTS] [--demucs_overlap DEMUCS_OVERLAP]
[--demucs_segments_enabled DEMUCS_SEGMENTS_ENABLED] [--mdxc_segment_size MDXC_SEGMENT_SIZE] [--mdxc_override_model_segment_size] [--mdxc_overlap MDXC_OVERLAP]
[--mdxc_batch_size MDXC_BATCH_SIZE] [--mdxc_pitch_shift MDXC_PITCH_SHIFT]
[audio_files ...]
将音频文件分离成不同的音轨。
位置参数:
audio_files 要分离的音频文件路径或目录,支持任何常见格式。
选项:
-h, --help 显示此帮助信息并退出。
信息与调试:
-v, --version 显示程序版本号并退出。
-d, --debug 启用调试日志记录,等同于 --log_level=debug。
-e, --env_info 打印环境信息并退出。
-l, --list_models 列出所有支持的模型并退出。可使用 --list_filter 对列表进行筛选/排序,使用 --list_limit 限制显示结果的数量。
--log_level LOG_LEVEL 日志级别,例如 info、debug、warning(默认为 info)。
--list_filter LIST_FILTER 根据名称、文件名或特定音轨(如人声、伴奏、鼓等)筛选和排序模型列表。
--list_limit LIST_LIMIT 限制显示的模型数量。
--list_format {pretty,json} 列表输出格式:'pretty' 用于格式化输出,'json' 用于原始 JSON 输出。
分离输入输出参数:
-m MODEL_FILENAME, --model_filename MODEL_FILENAME 用于分离的模型文件名(默认:model_bs_roformer_ep_317_sdr_12.9755.yaml)。示例:-m 2_HP-UVR.pth
--output_format OUTPUT_FORMAT 分离后文件的输出格式,支持任何常见格式(默认:FLAC)。示例:--output_format=MP3
--output_bitrate OUTPUT_BITRATE 分离后文件的输出比特率,支持任何 ffmpeg 兼容的比特率(默认:无)。示例:--output_bitrate=320k
--output_dir OUTPUT_DIR 输出文件保存目录(默认:当前目录)。示例:--output_dir=/app/separated
--model_file_dir MODEL_FILE_DIR 模型文件存储目录(默认:/tmp/audio-separator-models/)。示例:--model_file_dir=/app/models
--download_model_only 仅下载单个模型文件,不执行分离操作。
常用分离参数:
--invert_spect 使用频谱图反转次要音轨(默认:否)。示例:--invert_spect
--normalization NORMALIZATION 输入和输出音频的最大峰值振幅归一化值(默认:0.9)。示例:--normalization=0.7
--amplification AMPLIFICATION 输入和输出音频的最小峰值振幅放大值(默认:0.0)。示例:--amplification=0.4
--single_stem SINGLE_STEM 只输出单一音轨,例如伴奏、人声、鼓、贝斯、吉他、钢琴或其他。示例:--single_stem=伴奏
--sample_rate SAMPLE_RATE 修改输出音频的采样率(默认:44100)。示例:--sample_rate=44100
--use_soundfile 使用 soundfile 库写入音频输出(默认:否)。示例:--use_soundfile
--use_autocast 使用 PyTorch 的 autocast 加速推理(默认:否)。请勿在 CPU 上使用。示例:--use_autocast
--custom_output_names CUSTOM_OUTPUT_NAMES 以 JSON 格式自定义所有输出文件的名称(默认:无)。示例:--custom_output_names='{"Vocals": "vocals_output", "Drums": "drums_output"}'
MDX 架构参数:
--mdx_segment_size MDX_SEGMENT_SIZE 值越大,资源消耗越多,但可能获得更好的效果(默认值:256)。示例:--mdx_segment_size=256
--mdx_overlap MDX_OVERLAP 预测窗口之间的重叠程度,范围为0.001至0.999。数值越高越好,但速度越慢(默认值:0.25)。示例:--mdx_overlap=0.25
--mdx_batch_size MDX_BATCH_SIZE 值越大,占用的内存越多,但处理速度可能会稍快(默认值:1)。示例:--mdx_batch_size=4
--mdx_hop_length MDX_HOP_LENGTH 在神经网络中通常称为步幅,只有在了解其作用时才应更改(默认值:1024)。示例:--mdx_hop_length=1024
--mdx_enable_denoise 在分离过程中启用去噪功能(默认值:False)。示例:--mdx_enable_denoise
VR 架构参数:
--vr_batch_size VR_BATCH_SIZE 每次处理的批次数量。数值越高,占用的内存越多,处理速度也会稍快(默认值:1)。示例:--vr_batch_size=16
--vr_window_size VR_WINDOW_SIZE 平衡质量和速度。1024表示速度快但质量较低,320则速度较慢但质量较高。(默认值:512)。示例:--vr_window_size=320
--vr_aggression VR_AGGRESSION 主要音轨提取的强度,范围为-100至100。通常人声和伴奏设置为5(默认值:5)。示例:--vr_aggression=2
--vr_enable_tta 启用测试时增强;虽然速度较慢,但可以提高质量(默认值:False)。示例:--vr_enable_tta
--vr_high_end_process 镜像输出中缺失的频率范围(默认值:False)。示例:--vr_high_end_process
--vr_enable_post_process 识别人声输出中的残留伪影;对某些歌曲可能改善分离效果(默认值:False)。示例:--vr_enable_post_process
--vr_post_process_threshold VR_POST_PROCESS_THRESHOLD 后处理功能的阈值:0.1至0.3(默认值:0.2)。示例:--vr_post_process_threshold=0.1
Demucs 架构参数:
--demucs_segment_size DEMUCS_SEGMENT_SIZE 音频被分割成的片段大小,范围为1至100。数值越高,速度越慢,但质量越好(默认值:默认值)。示例:--demucs_segment_size=256
--demucs_shifts DEMUCS_SHIFTS 使用随机偏移进行预测的次数,数值越高,速度越慢,但质量越好(默认值:2)。示例:--demucs_shifts=4
--demucs_overlap DEMUCS_OVERLAP 预测窗口之间的重叠程度,范围为0.001至0.999。数值越高,速度越慢,但质量越好(默认值:0.25)。示例:--demucs_overlap=0.25
--demucs_segments_enabled DEMUCS_SEGMENTS_ENABLED 启用分段处理功能(默认值:True)。示例:--demucs_segments_enabled=False
MDXC 架构参数:
--mdxc_segment_size MDXC_SEGMENT_SIZE 值越大,资源消耗越多,但可能获得更好的结果(默认值:256)。示例:--mdxc_segment_size=256
--mdxc_override_model_segment_size 覆盖模型的默认片段大小,而不使用模型的默认值。示例:--mdxc_override_model_segment_size
--mdxc_overlap MDXC_OVERLAP 预测窗口之间的重叠量,范围为2至50。数值越高越好,但速度越慢(默认值:8)。示例:--mdxc_overlap=8
--mdxc_batch_size MDXC_BATCH_SIZE 值越大,占用的内存越多,但处理速度可能会稍快(默认值:1)。示例:--mdxc_batch_size=4
--mdxc_pitch_shift MDXC_PITCH_SHIFT 在处理过程中将音频音高移动若干半音。这可能改善低沉或高亢人声的输出。(默认值:0)。示例:--mdxc_pitch_shift=2
作为 Python 项目的依赖项
您可以在自己的 Python 项目中使用 Audio Separator。以下是一个使用默认双音轨(伴奏和人声)模型的最小示例:
from audio_separator.separator import Separator
# 初始化 Separator 类(可选配置属性如下)
separator = Separator()
# 加载机器学习模型(未指定时,默认加载 'model_mel_band_roformer_ep_3005_sdr_11.4360.ckpt')
separator.load_model()
# 对特定音频文件执行分离操作,无需重新加载模型
output_files = separator.separate('audio1.wav')
print(f"分离完成!输出文件:{' '.join(output_files)}")
批量处理与多模型处理
您可以一次性处理多个文件,而无需重新加载模型,从而节省时间和内存。
仅在选择或更换模型时才需要加载模型。示例如下:
from audio_separator.separator import Separator
# 初始化 Separator 类(可选配置属性如下)
separator = Separator()
# 加载一个模型
separator.load_model(model_filename='model_bs_roformer_ep_317_sdr_12.9755.ckpt')
# 分离多个音频文件,无需重新加载模型
output_files = separator.separate(['audio1.wav', 'audio2.wav', 'audio3.wav'])
# 加载另一个模型
separator.load_model(model_filename='UVR_MDXNET_KARA_2.onnx')
# 使用新模型再次分离相同的文件
output_files = separator.separate(['audio1.wav', 'audio2.wav', 'audio3.wav'])
您也可以指定包含音频文件的文件夹路径,而不是逐一列出每个文件的完整路径:
from audio_separator.separator import Separator
# 初始化 Separator 类(可选配置属性如下)
separator = Separator()
# 加载一个模型
separator.load_model(model_filename='model_bs_roformer_ep_317_sdr_12.9755.ckpt')
# 分离位于文件夹中的所有音频文件
output_files = separator.separate('path/to/audio_directory')
重命名音轨
您可以通过指定所需名称来重命名输出文件。例如:
output_names = {
"Vocals": "vocals_output",
"Instrumental": "instrumental_output",
}
output_files = separator.separate('audio1.wav', output_names)
在这种情况下,输出文件名将是:vocals_output.wav 和 instrumental_output.wav。
您还可以单独重命名特定的音轨:
- 要重命名人声音轨:
output_names = { "Vocals": "vocals_output", } output_files = separator.separate('audio1.wav', output_names)输出文件将被命名为:
vocals_output.wav和audio1_(Instrumental)_model_mel_band_roformer_ep_3005_sdr_11.wav - 要重命名伴奏音轨:
output_names = { "Instrumental": "instrumental_output", } output_files = separator.separate('audio1.wav', output_names)输出文件将被命名为:
audio1_(Vocals)_model_mel_band_roformer_ep_3005_sdr_11.wav和instrumental_output.wav - Demucs 模型的音轨列表:
- htdemucs_6s.yaml
output_names = { "Vocals": "vocals_output", "Drums": "drums_output", "Bass": "bass_output", "Other": "other_output", "Guitar": "guitar_output", "Piano": "piano_output", } - 其他 Demucs 模型
output_names = { "Vocals": "vocals_output", "Drums": "drums_output", "Bass": "bass_output", "Other": "other_output", }
- htdemucs_6s.yaml
Separator 类的参数
log_level:(可选)日志级别,例如 INFO、DEBUG、WARNING。默认值:logging.INFOlog_formatter:(可选)日志格式。默认值:None,回退到 '%(asctime)s - %(levelname)s - %(module)s - %(message)s'model_file_dir:(可选)用于缓存模型文件的目录。默认值:/tmp/audio-separator-models/output_dir:(可选)分离后的文件将保存的目录。如果未指定,则使用当前目录。output_format:(可选)用于编码输出文件的格式,任何常见格式(WAV、MP3、FLAC、M4A 等)。默认值:WAVnormalization_threshold:(可选)输出音频的振幅将被乘以的倍数。默认值:0.9amplification_threshold:(可选)波形将被放大的最小振幅水平。如果音频的峰值振幅低于此阈值,波形将被缩放以达到该水平。默认值:0.0output_single_stem:(可选)仅输出单个音轨,例如“Instrumental”和“Vocals”。默认值:Noneinvert_using_spec:(可选)使用频谱图进行反转的标志。默认值:Falsesample_rate:(可选)设置输出音频的采样率。默认值:44100use_soundfile:(可选)使用 soundfile 进行输出写入,可以解决 OOM 问题,尤其是在较长的音频上。use_autocast:(可选)使用 PyTorch autocast 进行更快的推理的标志。请勿在 CPU 推理时使用。默认值:Falsemdx_params:(可选)MDX 架构特定属性及默认值。默认值:{"hop_length": 1024, "segment_size": 256, "overlap": 0.25, "batch_size": 1, "enable_denoise": False}vr_params:(可选)VR 架构特定属性及默认值。默认值:{"batch_size": 1, "window_size": 512, "aggression": 5, "enable_tta": False, "enable_post_process": False, "post_process_threshold": 0.2, "high_end_process": False}demucs_params:(可选)Demucs 架构特定属性及默认值。默认值:{"segment_size": "Default", "shifts": 2, "overlap": 0.25, "segments_enabled": True}(注:segment_size的“Default”使用模型内部默认值,通常旧版 Demucs 模型为 40,而 Demucs v4/htdemucs 为 10)mdxc_params:(可选)MDXC 架构特定属性及默认值。默认值:{"segment_size": 256, "override_model_segment_size": False, "batch_size": 1, "overlap": 8, "pitch_shift": 0}ensemble_algorithm:(可选)用于集成多个模型的算法。默认值:'avg_wave'ensemble_weights:(可选)集成中每个模型的权重。默认值:None(等权重)ensemble_preset:(可选)命名的集成预设(例如'vocal_balanced'、'karaoke')。会自动设置模型、算法和权重。使用Separator(info_only=True).list_ensemble_presets()查看所有预设。默认值:None
远程 API 使用 🌐
Audio Separator 包含一个远程 API 客户端,允许您连接到已部署的 Audio Separator API 服务,从而无需在本地运行模型即可执行音频分离。该 API 使用异步处理和作业轮询,以高效处理分离任务。
要在 modal.com 上将 Audio Separator 部署为 API 并用于远程处理,请参阅此处的详细文档:audio_separator/remote/README.md。
要求 📋
Python >= 3.10
库:torch、onnx、onnxruntime、numpy、librosa、requests、six、tqdm、pydub
本地开发
该项目使用 Poetry 进行依赖管理和打包。请按照以下步骤设置本地开发环境:
先决条件
- 确保您的机器上已安装 Python 3.10 或更高版本。
- 安装 Conda(推荐 Miniforge:Miniforge GitHub)来管理您的 Python 虚拟环境。
克隆仓库
将仓库克隆到您的本地机器:
git clone https://github.com/YOUR_USERNAME/audio-separator.git
cd audio-separator
如果您已 fork 了该仓库,请将 YOUR_USERNAME 替换为您自己的 GitHub 用户名;如果您拥有权限,则使用主仓库 URL。
创建并激活 Conda 环境
使用以下命令创建并激活 Conda 环境:
conda env create
conda activate audio-separator-dev
安装依赖项
进入 Conda 环境后,运行以下命令安装项目依赖项:
poetry install
根据您是使用 GPU 还是 CPU 运行,安装额外的依赖项。
poetry install --extras "cpu"
或
poetry install --extras "gpu"
或
poetry install --extras "dml"
在本地运行命令行界面
您可以在虚拟环境中直接运行 CLI 命令。例如:
audio-separator path/to/your/audio-file.wav
退出虚拟环境
完成开发工作后,只需输入以下命令即可退出虚拟环境:
conda deactivate
构建软件包
要构建用于分发的软件包,请使用以下命令:
poetry build
这将在 dist 目录中生成分发包——但目前只有 @beveradb 能够将其发布到 PyPI。
贡献 🤝
非常欢迎各位贡献!请先 fork 本仓库,然后提交包含您更改的 pull request,我会尽快审查、合并并发布!
- 本项目是 100% 开源的,任何人都可以自由使用和修改。
- 如果维护本仓库的工作量对我来说变得过大,我可能会寻求志愿者共同承担维护工作,不过这种情况不太可能发生。
- MDX-Net 分离模型的开发与支持属于主 UVR 项目,本仓库只是为这些模型提供一个 CLI/Python 封装,以便更方便地以编程方式运行它们。因此,如果您希望尝试改进这些模型本身,请参与 UVR 项目,并在其中寻找相关指导!
许可证 📄
本项目采用 MIT 许可证。
- 请注意: 如果您选择将本项目集成到其他项目中,并且使用默认模型或作为 UVR 项目一部分训练的任何其他模型,请务必遵守 MIT 许可证的要求,向 UVR 及其开发者致谢!
致谢 🙏
- Anjok07 - Ultimate Vocal Remover GUI 的作者,本仓库中的几乎所有代码都源自该GUI!本项目的任何成就都应归功于他。感谢!
- DilanBoskan - 您在本项目初期所做的贡献对 UVR 的成功至关重要。感谢!
- Kuielab & Woosung Choi - 开发了最初的 MDX-Net AI 代码。
- KimberleyJSN - 为 MDX-Net 和 Demucs 的训练脚本实现提供了建议和支持。感谢!
- Hv - 帮助将分块处理功能集成到 MDX-Net AI 代码中。感谢!
- zhzhongshi - 帮助在
audio-separator中添加对 MDXC 模型的支持。感谢!
联系方式 💌
如有任何问题或反馈,请提交 issue,或直接联系 @beveradb(Andrew Beveridge,邮箱:andrew@beveridge.uk)。
版本历史
v0.44.12026/03/25v0.44.02026/03/25v0.43.12026/03/23v0.43.02026/03/23v0.42.12026/03/17v0.42.02026/03/16v0.41.12026/01/24v0.41.02026/01/16v0.40.02025/11/30v0.39.12025/10/15v0.39.02025/09/28v0.38.12025/09/28v0.38.02025/09/28v0.37.12025/09/24v0.37.02025/09/24v0.36.12025/08/15v0.36.02025/08/15v0.35.22025/07/26v0.35.12025/07/26v0.35.02025/07/14常见问题
相似工具推荐
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
codex
Codex 是 OpenAI 推出的一款轻量级编程智能体,专为在终端环境中高效运行而设计。它允许开发者直接在命令行界面与 AI 交互,完成代码生成、调试、重构及项目维护等任务,无需频繁切换至浏览器或集成开发环境,从而显著提升了编码流程的连贯性与专注度。 这款工具主要解决了传统 AI 辅助编程中上下文割裂的问题。通过将智能体本地化运行,Codex 能够更紧密地结合当前工作目录的文件结构,提供更具针对性的代码建议,同时支持以自然语言指令驱动复杂的开发操作,让“对话即编码”成为现实。 Codex 非常适合习惯使用命令行的软件工程师、全栈开发者以及技术研究人员。对于追求极致效率、偏好键盘操作胜过图形界面的极客用户而言,它更是理想的结对编程伙伴。 其独特亮点在于灵活的部署方式:既可作为全局命令行工具通过 npm 或 Homebrew 一键安装,也能无缝对接现有的 ChatGPT 订阅计划(如 Plus 或 Pro),直接复用账户权益。此外,它还提供了从纯文本终端到桌面应用的多形态体验,并支持基于 API 密钥的深度定制,充分满足不同场景下的开发需求。
gstack
gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置,旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战,gstack 提供了一套标准化解决方案,帮助开发者实现堪比二十人团队的高效产出。 这套配置特别适合希望提升交付效率的创始人、技术负责人,以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具,涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令(如 `/review` 进行代码审查、`/qa` 执行测试、`/plan-ceo-review` 规划功能),即可自动化处理从需求分析到部署上线的全链路任务。 所有操作基于 Markdown 和斜杠命令,无需复杂配置,完全免费且遵循 MIT 协议。gstack 不仅是一套工具集,更是一种现代化的软件工厂实践,让单人开发者也能拥有严谨的工程流程。