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>
相关推荐
LiLiYuan.11 分钟前
关于Stream
java·开发语言·windows·python
limingade7 小时前
手机SIM卡打电话时识别对方按下的DTMF按键(二)
智能手机·语音识别·dtmf识别·dtmf解码器·sim卡通话识别dtmf·手机通话识别dtmf·手机通话语音拦截
美狐美颜sdk11 小时前
什么是美颜SDK?美颜SDK安卓与iOS端开发指南
android·人工智能·ios·音视频·美颜sdk·直播美颜sdk
EasyDSS11 小时前
AI视频智能分析网关打造社区/工厂/校园/仓库智慧消防实现精准化安全管控
人工智能·音视频
xu_wenming13 小时前
嵌入式MCU语音识别算法及实现方案
单片机·算法·语音识别
DisonTangor13 小时前
Baichuan-Omni-1.5:支持文本、图像、视频和音频输入以及文本和音频输出的开源全模式基础模型
音视频
马剑威(威哥爱编程)17 小时前
HarmonyOS 5.0 低时延音视频开发
华为·音视频·harmonyos
18你磊哥17 小时前
Java泛型深度解析与电商场景应用
java·开发语言·windows
木子李一18 小时前
Vue 实现 Hls、Flv 协议视频播放
前端·vue.js·音视频
科技小E19 小时前
EasyRTC嵌入式音视频通信SDK技术,助力工业制造多场景实时监控与音视频通信
人工智能·音视频