简体中文 · English
▶ 在浏览器中直接使用(基于 WebAssembly,纯本地计算,音频不会上传至服务器)
Purivox 是一款面向舞台与现场录音的伴奏/垫音消除(Vocal Isolation)工具,提供桌面端与浏览器端两种运行形态,基于 Python、PySide6 及 PySide6-Fluent-Widgets 构建。核心的参考消音功能遵循统一的处理流程:输入一段舞台/现场录音,并提供对应的歌曲参考音源。
- 单音源模式:自动对齐并消除该歌曲成分。当音源与录音时长基本一致时,支持全时长全局倍速与时钟漂移校正;若仅覆盖录音局部,则在匹配区间内分段处理。
- 多音源模式:自动在长录音中定位各歌曲所在时间范围,并对各匹配片段分别执行消除。输入音源文件的顺序不影响定位结果。
参考对消仅处理能被参考音源解释的重放音频成分,因此会保留音源中不存在的现场人声、讲话、观众互动与环境杂音。消除效果取决于参考音源的准确性;若录音存在严重削波、大混响、与音源编曲版本不一致或音源选择有误,处理质量会有所下降。
如需不依赖参考音源的两轨纯伴奏/人声分离,建议使用 Ultimate Vocal Remover 等基于神经网络的深度学习工具;Purivox 专注于基于参考信号的相干对消。
- 现代界面:基于 Fluent Design 构建,支持浅色、深色及跟随系统主题。
- 多语言支持:支持简体中文、繁体中文、英语、日语和韩语即时切换。
- 高精度 DSP:集成全局倍速估计与保音高拉伸(WSOLA)、粗时延对齐、局部时钟漂移跟踪及复数相干传递估计。
- 智能时间线:支持多音源识别、重复片段聚类与交互式时间线编辑。
- 高效内存管理:长音频流式分块处理(
BLOCK_FRAMES)、协作式任务取消及原子化写入保障。 - 真实规格输出:导出音频严格沿用输入文件的采样率与对应位深,不进行无实际频谱增益的升采样。
- 结果审查:内置轻量播放器支持即时试听与音频统计信息查看。
- 版本更新检查:支持在设置页手动检查 GitHub Release 更新并查看更新日志。
- 崩溃诊断:按日期轮转本地日志,未捕获异常提供结构化日志查看与一键提交 Issue 入口。
- 快捷键支持:
Ctrl+O打开文件、Ctrl+Return开始处理、F5识别歌曲、Esc取消、Ctrl+P播放/暂停试听。 - 链接获取音源:支持通过 YouTube / YouTube Music 链接解析并下载参考音源,具备本地去重缓存。
- 声学分轨(Stem Split):无需参考音源的无损信号分轨,支持依据声道布局分离中置、伴奏、M/S 及互补分频分轨。
- 架构同构:图形界面、命令行与 WebAssembly 浏览器端共享相同的核心算法管线。
若无需本地安装,可直接访问 WebAssembly 浏览器版。浏览器端复用相同的计算管线,由于受浏览器标签页堆内存上限约束,更适合处理中短音频,详见浏览器版(WebAssembly)说明。
可直接前往 Release 发布页 下载预编译安装包:
- Windows:
Purivox.exe - Linux:
.deb、.rpm或自解压包purivox-linux-x86_64.tar.gz - macOS:
purivox-macos-arm64.tar.gz(Apple Silicon)或purivox-macos-x86_64.tar.gz(Intel)
发布包均附带 SHA256SUMS 校验文件。macOS 版本首次打开时,若提示未签名,请在“访达”中右键点击 Purivox.app 并选择“打开”。
从源码运行需使用 uv 包管理器。项目通过 .python-version 锁定 Python 版本并在项目目录内维护隔离环境:
uv sync --locked启动桌面图形界面:
uv run --locked purivox- 进入“垫音消除”页面,选择待处理的舞台/现场录音文件。
- 添加可能出现在录音中的歌曲参考音源。单份音源直接针对该曲消除,多份音源将在录音中自动定位。
- 存在多份音源时,点击“识别歌曲”,查看识别出的完整歌曲、短片段、未匹配区间及置信度。
- 检查时间线,可双击调整录音时间或音源范围,或取消勾选不需处理的片段。
- 在“导出内容”中指定输出音轨:仅消音结果(现场人声)、仅垫音(Backing),或两者同时导出。垫音轨基于估计的传递函数从原始音源重新渲染生成,在保留音源原始品质的同时反映现场重放的频响与电平。
- 调整消除强度后开始处理。若试听发现人声变薄或出现过度抑制的抽吸感,可调低强度或核对参考音源版本。
提示:请尽量选用与现场重放一致的母带版本。编曲变动、升降调、重新剪辑均会导致对消效果下降。未匹配区间将保持现场原音复制,不会被自动截断。
- 进入“声学分轨”页面,选择单个音频文件(此功能无需参考音源)。
- 根据需要设置低频分频点(默认 150 Hz)。高低频分轨采用互补结构,两者线性相加可精确还原原始输入。
- 点击开始分轨。输出音轨数量根据输入声道数自适应确定:多声道输出 8 条,立体声输出 6 条,单声道输出 3 条。
- 分轨完成后可直接在列表中查看各轨声道数与峰值电平,并打开目标文件夹。
立体声中置与伴奏提取采用基于声像分布的自适应算法,能够较好地适应偏心主唱与混响声场,并保留居中的底鼓与贝斯。详细说明见声学分轨。
在录音选择栏与音源列表中均提供「获取」按钮:
- 支持直接粘贴 YouTube 或 YouTube Music 播放链接,或输入关键词搜索 YouTube 视频。
- 下载任务会自动记录在「已下载」列表中,重复链接将直接复用缓存。
- 链接附带播放列表参数时,仅提取当前单曲,不拉取整个播放列表。
- 在列表中选择所需音频后点击「使用所选」,即自动填入对应输入框。
若系统安装有 FFmpeg,下载音频将转换为标准 WAV;未安装时保留原始容器文件,由解码回退流程读取。下载文件存放于应用数据目录的 downloads/ 路径下。
uv run --locked purivox --version
uv run --locked purivox --help
uv run --locked purivox mr --help执行标准参考对消:
uv run --locked purivox mr "现场录音.wav" "歌曲音源.wav" "现场人声.wav"指定消除强度、分析窗口并开启自动对齐:
uv run --locked purivox mr "现场录音.wav" "歌曲音源.wav" "现场人声.wav" \
--strength 75 --sigma 8 --align常用参数说明:
| 参数 | 可选值 | 说明 |
|---|---|---|
--strength |
0~100 |
垫音消除强度,默认 75 |
--sigma |
1、3、8、16 |
统计窗口秒数,默认 3(GUI 固定使用 3) |
--align / --no-align |
开 / 关 | 是否执行自动时延与漂移对齐,默认开启 |
--tracks |
vocal、backing、both |
导出内容,默认 vocal(仅消音结果) |
--lang |
zh_cn、zh_tw、en_us、ja_jp、ko_kr |
控制台进度信息语言 |
uv run --locked purivox split "录音.flac" # 默认输出至 录音_stems/
uv run --locked purivox split "录音.flac" "分轨目录" --crossover 180| 参数 | 可选值 | 说明 |
|---|---|---|
output_dir |
目录路径 | 输出目录,默认为输入文件同级的 <文件名>_stems |
--crossover |
频率 (Hz) | 低频分频点,默认 150(GUI 范围 40–400 Hz) |
--lang |
语言标识 | 进度信息语言 |
uv run --locked purivox fetch "https://www.youtube.com/watch?v=..." # 直接下载
uv run --locked purivox fetch "关键词" --limit 5 # 搜索候选
uv run --locked purivox fetch "关键词" --pick 2 # 下载指定序号项
uv run --locked purivox fetch --list # 列出本地下载缓存| 参数 | 可选值 | 说明 |
|---|---|---|
--out |
目录路径 | 保存目录,默认存放于应用数据目录下的 downloads/ |
--limit |
整数 | 搜索结果数量上限,默认 10 |
--pick |
整数 | 下载搜索列表中的指定条目(从 1 开始);不指定则仅展示结果 |
--list |
开关 | 列出已下载缓存列表 |
下载成功后将在标准输出打印生成的文件绝对路径,可直接与 purivox mr 配合使用。
- 格式支持:WAV、FLAC、OGG 等常见无损及压缩格式由 libsndfile 原生支持;系统支持的其他媒体格式尝试通过 Qt Multimedia 接口解码。
- 采样率与规格:参考对消全程在现场音频的原始采样率下处理,输出文件严格保持输入采样率与对应格式位深(8-bit / 16-bit PCM 输出 16-bit;24-bit / 32-bit PCM、浮点及有损格式输出 24-bit PCM),不进行虚假的升采样。
- 文件保护:输出文件不可覆盖任一输入源文件。写出流程采用临时文件加原子替换(
os.replace),避免任务中断损坏原文件或输出残留半成品。 - 任务取消:支持通过
Ctrl+C(CLI)或界面按钮协作式中止任务。
算法设计、数据流架构与开发指南参见 docs/:
- Vocal-Extractor:频域人声消除思路参考。
- Ultimate Vocal Remover GUI:无参考音源场景的深度学习分离基准工具。
本项目采用 AGPL-3.0-or-later 许可证开源发布。使用的 PySide6-Fluent-Widgets 遵循 GPLv3,商业使用请遵循上游许可条款。