• 【转】spleeter分离伴奏和人声



    近日,Deezer开源了一个名为Spleeter项目,该项目利用深度学习对音乐曲目进行源分离。它使用Keras和TensorFlow构建,Spleeter可以帮助音乐信息检索(MIR)领域的研究机构,充分利用最先进的源分离算法的强大功能,它以基于Tensorflow的Python库的形式出现,包含针对2、4和5个词干分隔的预训练模型。

    什么是源分离?

    音乐录音通常是几个单独乐器音轨的组合(主音,鼓,贝斯,钢琴等)。
    音乐源分离的任务是:给定混合音我们是否可以恢复这些分离的音轨(有时称为tems)
    在这里插入图片描述
    这个任务的应用范围非常广泛:比如混音、上混音、主动聆听、教育目的,还可以预处理其他任务,例如转录。
    通过多种乐器的混合,像Spleeter这样的源分离引擎会输出一组单独的音轨或词干。
    有趣的是,我们的大脑非常擅长分离乐器。只需专注于该曲目中的一种乐器,您就可以与其他乐器完全区别开来,并且听到它。但这并不是真正的分离,您仍然可以听到所有其他部分。
    在许多情况下,可能无法准确恢复已混合在一起的各个音轨。因此,面临的挑战是尽可能地逼近它们,也就是说,在不造成太多失真的情况下,尽可能地接近原作。
    多年来,来自世界各地的数十个杰出研究团队探索了许多策略。
    近来,取得了突破性的进步,这主要归功于机器学习方法的进步。
    为了跟踪最新进展,人们一直在国际评估活动中比较他们的算法。所以我们知道Spleeter的性能与提出的最佳算法相匹配。
    此外,Spleeter非常快。如果您运行的是GPU版本,则预期分离速度比实时速度快100倍,这使其成为处理大型数据集的理想选择。

    数据集
    mushdb

    使用手册

    命令描述
    train 训练源分离模型,您需要一个单独的轨道数据集才能使用它
    evaluate 在musDB 测试集中进行预训练的模型评估

    要获得有关separate 命令可用的不同选项的帮助 ,请键入:

    spleeter separate -h
    

      

    使用2stems模型

    您可以使用默认的2个词干 (人声/伴奏)预训练模型直接分离音频文件, 如下所示:

    spleeter separate -i audio_example.mp3 -o audio_output
    

      

    -i 选项用于提供音频文件名列表。
    -o 是提供输出路径在哪里写分离的wav文件。
    由于该命令将下载预先训练的模型,因此在第一次运行时可能会花费一些时间。如果一切顺利,则应该获得一个audio_output/audio_example 包含两个文件的文件夹 : accompaniment.wav 和 vocals.wav。

    使用4stems模型

    您还可以使用预先训练的4个主音色 (人声/贝斯/鼓/其他)模型:
    该 -p 选项用于提供模型设​​置。它可以是Spleeter 嵌入式设置标识符2 ,也可以是 JSON 文件配置的路径 如:在这里插入图片描述
    这一次,它会生成四个文件: vocals.wav, drums.wav, bass.wav 和 other.wav。
    目前,可以使用以下嵌入式配置:

    spleeter:2stems
    spleeter:4stems
    spleeter:5stems
    

      

    使用5stems模型

    最后,开箱即用的还有经过预训练的 5个 主音(人声/贝斯/鼓/钢琴/其他)模型:

    spleeter separate -i audio_example.mp3 -o audio_output -p spleeter:5stems

    这将产生五个文件: vocals.wav, drums.wav, bass.wav, piano.wav 和 other.wav

    批量处理

    separate 每次调用模型时,该命令都会构建模型,并在首次下载时进行下载。如果您处理单个音频文件(尤其是简短的音频文件),则与单独进行分离过程相比,此过程可能会很长。如果要分离多个文件,则建议通过一次调用进行所有分离 separate:

    spleeter separate 
         -i <path/to/audio1.mp3> <path/to/audio2.wav> <path/to/audio3.ogg> 
         -o audio_output
    spleeter separate -i E:Sabinetekspleeter-masterDanceMonkey.mp3 -p spleeter:2stems -o output

    训练模型

    为了训练自己的模型,您需要:

    • 分离文件的数据集,例如mushdb
    • 数据集必须在CSV 文件中描述 : 一个用于训练 ,一个用于 验证(用于生成训练数据)。
    • JSON配置文件,收集所需的培训和路径的所有参数 的CSV 文件。

    评估模型

    为了评估模型,您需要mushdb数据集。例如,您可以通过这种方式评估提供的4个词干预训练模型:

    spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output
    

      

    为了使用多通道维纳滤波执行分离,您需要添加 --mwf 选项(以获取报告的结果):

    spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output --mwf

    使用Docker映像

    我们提供的图像是为了将Spleeter 与 Docker一起使用 ( GPU 和 CPU 图像)。您首先需要安装 Docker,例如 Docker Community Edition

    建立影像

    您可以使用docker build 命令从克隆的存储库构建映像 :

    git clone https://github.com/deezer/spleeter 
    cd spleeter 
    #构建CPU映像。
    docker build -f docker / cpu.Dockerfile -t spleeter:cpu。
    #构建GPU映像。
    docker build -f docker / gpu.Dockerfile -t spleeter:gpu。
    

      

    运行容器

    内置图像入口点是 Spleeter的 主要命令 spleeter。因此,您可以 separate 使用docker run3命令运行此先前构建的映像来运行该 命令,并使用已安装的目录进行输出写入:

    # Run with CPU :
    docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output
    # Or with GPU if available :
    nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output
    

      

    要通过GPU运行命令 ,应使用 nvidia-docker 命令而不是 docker command。此替代命令允许容器 从主机访问 Nvidia 驱动程序和 GPU设备。

    这将分离作为输入提供的音频文件(此处 audio_example.mp3 嵌入在生成的图像中),并将分离的文件 vocals.wav 和 accompaniment.wav 您的计算机放在已安装的输出文件夹中 output/audio_example。

    要使用自己的音频文件,您需要在运行图像时创建容器音量,我们也建议您创建一个用于存储下载的模型的音量。这样可以避免 Spleeter 每次运行映像时都下载模型文件。

    为此,我们首先创建一些环境变量:

    export AUDIO_IN='/path/to/directory/with/audio/file'
    export AUDIO_OUT='/path/to/write/separated/source/into'
    export MODEL_DIRECTORY='/path/to/model/storage'

    然后我们可以separate 通过container 运行 命令:

    # Run with CPU :
    docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output
    # Or with GPU if available :
    nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output
    

      

    non️至于非docker用法,我们建议您一次调用Spleeter 映像执行多个文件的分离

    您可以使用 train 命令(您应该主要在GPU上使用 它,因为它在计算上非常昂贵)以及 使用musevalevaluate 对musDB测试数据集4 进行评估的 命令

    # Model training.
    nvidia-docker run -v </path/to/musdb>:/musdb spleeter:gpu train -p configs/musdb_config.json -d /musdb
    # Model evaluation.
    nvidia-docker run -v $(pwd)/eval_output:/eval_output -v </path/to/musdb>:/musdb spleeter:gpu evaluate -p spleeter:4stems --mus_dir /musdb -o /eval_output

    您需要请求访问权限并从此处下载
    在GPU上,分离过程应该非常快(在musdb测试集上应该少于90s),但是执行 museval 需要更多的时间(几个小时)

    windows下配置spleeter及测试

    1.下载压缩包到本地并解压
    github
    2. 安装ffmpeg(windows版)
    win64版本ffmpeg
    将依赖ffmpeg(.exe文件)放入spleeter目录下
    这里有直接下载好的
    3.安装spleeter

    pip install spleeter

    4.运行程序

    spleeter separate -i E:Sabinetekspleeter-masterDanceMonkey.mp3 -p spleeter:2stems -o output
    

      

    在这里插入图片描述
    6.看效果
    背景声:
    背景
    分离的声音:
    在这里插入图片描述

    点此试听音乐效果

    from:https://blog.csdn.net/weixin_42788078/article/details/102956046

    from:https://blog.csdn.net/weixin_44253169/article/details/111152524

  • 相关阅读:
    手机处理器之雄霸天下
    android Bitmap总结
    所谓编程
    Android在Eclipse下编译String.xml出现Multiple substitutions specified in nonpositional format 错误
    关于“求余”运算的一些小感想
    QWrap简介之:Helper规范
    QWrap简介之:瘦主干
    QWrap简介之:HelperH 针对helper的Helper
    QWrap代码规范化经历
    QWrap简介之:设计主线
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/14272597.html
Copyright © 2020-2023  润新知