windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐

windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐

一、Spleeter 是什么?

Spleeter 是由法国音乐流媒体公司 Deezer 开发并开源的一款基于深度学习的音频分离工具。它能够将音乐中的不同音轨(如人声、鼓、贝斯、钢琴等)分离为独立的音频文件,适用于音乐制作、学术研究、音频处理等领域。

二、核心功能

  1. 多音轨分离
    • 2stems :分离为 人声(vocals)伴奏(accompaniment)
    • 4stems :分离为 人声贝斯其他
    • 5stems :分离为 人声贝斯钢琴其他
  2. 高效处理
    • 支持 CPU 和 GPU(需 TensorFlow GPU 版本)加速。
    • 单曲处理仅需数秒至数分钟(取决于硬件配置)。
  3. 开源免费
    • 代码和预训练模型完全开源(GitHub MIT 协议)。
    • 无需商业授权,适合个人和学术用途。

三、安装过程

github地址: https://github.com/deezer/spleeter/tree/master

复制代码
1.创建conda虚拟环境  python使用3.9
conda create -n spleeter python=3.9
conda activate spleeter

2.安装依赖ffmpeg和libsndfile
conda install ffmpeg libsndfile

3.安装最新版spleeter
pip install spleeter

4.下载测试文件
wget https://github.com/deezer/spleeter/raw/master/audio_example.mp3

5.执行
spleeter separate -p spleeter:2stems -o output audio_example.mp3
最后在命令执行路径下生成目录output/audio_example,内部有两个文件,人声音文件vocals.wav和背景音乐文件accompaniment.wav

各种模型下载:2stems、4stems、5stems

https://github.com/deezer/spleeter/releases

四、报错处理

报错处理一:找不到指定的模块mkl_intel_thread.2.dll
复制代码
(spleeter) C:\Users\81097864\Downloads>spleeter separate -p spleeter:2stems -o output audio_example.mp3
INTEL oneMKL ERROR: 找不到指定的模块。 mkl_intel_thread.2.dll.
Intel oneMKL FATAL ERROR: Cannot load mkl_intel_thread.2.dll.

numpy和mkl的版本不对,卸载后重新安装,安装方式:

解决:建议直接下载numpy-1.24.5+mkl-cp39-cp39-win_amd64.whl下载地址:

https://github.com/cgohlke/numpy-mkl-wheels/releases

复制代码
(spleeter) C:\Users\81097864\Downloads>pip install numpy-1.23.5+mkl-cp39-cp39-win_amd64.whl
报错处理二:github模型2stems.tar.gz下载失败
复制代码
(spleeter) C:\Users\81097864\Downloads>spleeter separate -p spleeter:2stems -o output audio_example.mp3
INFO:spleeter:Downloading model archive https://github.com/deezer/spleeter/releases/download/v1.4.0/2stems.tar.gz
Traceback (most recent call last):
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpx\_transports\default.py", line 61, in map_httpcore_exceptions
    yield
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpx\_transports\default.py", line 106, in __iter__
    for part in self._httpcore_stream:
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_sync\connection_pool.py", line 57, in __iter__
    for chunk in self.stream:
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_bytestreams.py", line 56, in __iter__
    for chunk in self._iterator:
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_sync\http2.py", line 435, in body_iter
    event = self.connection.wait_for_event(self.stream_id, timeout)
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_sync\http2.py", line 242, in wait_for_event
    self.receive_events(timeout)
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_sync\http2.py", line 249, in receive_events
    data = self.socket.read(self.READ_NUM_BYTES, timeout)
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_backends\sync.py", line 61, in read
    return self.sock.recv(n)
  File "d:\Miniconda3\envs\spleeter\lib\contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "d:\Miniconda3\envs\spleeter\lib\site-packages\httpcore\_exceptions.py", line 12, in map_exceptions
    raise to_exc(exc) from None
httpcore.ReadTimeout: The read operation timed out

The above exception was the direct cause of the following exception:

2stems.tar.gz模型文件下载失败。可以手动下载https://github.com/deezer/spleeter/releases/download/v1.4.0/2stems.tar.gz后,解压到`spleeter separate`命令执行所在的路径下。

我的命令执行路径如下:

复制代码
(spleeter) C:\Users\81097864\Downloads>spleeter separate -p spleeter:2stems -o output audio_example.mp3

模型位置: 命令执行路径/pretrained_models/2stems

五、Windows用户注意

命令spleeter在 Windows可能上无法正常工作。这是一个已知问题,我们希望很快修复。在命令行中替换spleeter separatepython -m spleeter separate,应该可以正常工作。

六、指定模型文件路径

通过环境变量MODEL_PATH指定模型文件所在位置,2stems、4stems、5stems这些模型文件夹都是MODEL_PATH的子目录

复制代码
# 指定模型文件所在位置
(spleeter) D:\big-model>set MODEL_PATH=D:\big-model\spleeter-model

# 其他参数 
#--verbose:打印日志 
#-c : 指定输出文件格式
#-o : 指定结果文件目录
#-f :  指定结果文件名称
(spleeter) D:\big-model>spleeter separate --verbose -p spleeter:2stems -c mp3 -o D:\big-model\audio -f {filename}_{instrument}.{codec} D:\big-model\audio_example.mp3
INFO:tensorflow:Using config: {'_model_dir': 'D:\\big-model\\spleeter-model\\2stems', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': gpu_options {
  per_process_gpu_memory_fraction: 0.7
}
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
WARNING:tensorflow:From d:\Miniconda3\envs\spleeter\lib\site-packages\spleeter\separator.py:146: calling DatasetV2.from_generator (from tensorflow.python.data.ops.dataset_ops) with output_types is deprecated and will be removed in a future version.
Instructions for updating:
Use output_signature instead
WARNING:tensorflow:From d:\Miniconda3\envs\spleeter\lib\site-packages\spleeter\separator.py:146: calling DatasetV2.from_generator (from tensorflow.python.data.ops.dataset_ops) with output_shapes is deprecated and will be removed in a future version.
Instructions for updating:
Use output_signature instead
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Apply unet for vocals_spectrogram
WARNING:tensorflow:From d:\Miniconda3\envs\spleeter\lib\site-packages\keras\layers\normalization\batch_normalization.py:514: _colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
INFO:tensorflow:Apply unet for accompaniment_spectrogram
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from D:\big-model\spleeter-model\2stems\model
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:spleeter:File D:\big-model\audio\audio_example_accompaniment.mp3 written succesfully
INFO:spleeter:File D:\big-model\audio\audio_example_vocals.mp3 written succesfully

(spleeter) D:\big-model>
相关推荐
软萌萌的125 分钟前
Python零基础从入门到精通详细教程-数据类型
开发语言·windows·python
东北赵四31 分钟前
关于Java泛型的知识点及其相关面试题
java·windows·python
星核0penstarry1 小时前
从 Dialog-RSN-1 看语音 Agent 走向:企业如何评估音频原生模型与 API 服务
人工智能·音视频·音频·api
明如正午2 小时前
【python】Python + OpenCV 实现视频关键帧提取与智能去重
python·opencv·音视频
邱邱玩编程2 小时前
环境变量速切脚本【Windows】
windows
呆呆敲代码的小Y3 小时前
5 分钟上手 OpenMontage:把 AI 编程助手变成视频工作室
人工智能·aigc·音视频·ai视频生成·claude code·openmontage
奈斯先生Vector3 小时前
大模型 Agentic Workflow 架构解构:异构 API 调度与 Token 路由的多模态系统设计
开发语言·前端·架构·prompt·aigc·音视频
海带紫菜菠萝汤3 小时前
FFmpeg.wasm 实践:在浏览器中运行 FFmpeg 的能力边界与性能瓶颈
前端·javascript·ffmpeg·音视频·wasm
甜甜小酒窝3 小时前
通过Canvas在网页中将后端发来的一帧帧图片渲染成“视频”的实现过程
音视频
upgrador4 小时前
桌面应用开发:Electron 与 NSIS 的关系、打包流程及 Windows 本地构建实战
javascript·windows·electron