首页 > 其他分享 >SVC数据集准备及预处理

SVC数据集准备及预处理

时间:2024-06-07 15:45:48浏览次数:21  
标签:片段 响度 训练 -- 音频 SVC 切分 准备 预处理

    此文档主要为SVC数据集预处理的详细步骤。

  1. 音源准备
  1. 时长要求:训练音源需准备至少20min以上,最好是1-2小时的数据。注:由于歌曲中歌手并不会整首歌都在演唱,因此这里的时长说的是歌手实际演唱的时长,不包括前奏、间奏等无歌声的部分。
  2. 质量要求:训练音源尽量使用高保真及以上品质的音频。高质量音频会保留更多高低音域的数据,使得训练效果更好;低质量音频为了节省存储空间,会舍弃高低音域的部分数据。
  1. 人声分离(以下简称VR)
  1. 推荐使用在线网站EaseUs Vocal Remover进行人声分离,具体操作步骤就不赘述了
  2. 如有其他分离工具,也可使用,若能直接去掉和声就更好。
  1. 第一次切分(0~5s为短时片段、5~15s为正常片段、15+为超长片段)
  1. 切分使用audio-slicer-GUIaudio-slicer-CLI进行。其主要功能为根据设置的参数将歌声从VR后的wav中切出来。

audio-slicer使用RMS(根平均分数)来测量音频的安静度并检测沉默的部分。计算每帧的RMS值(帧长度设置为Hop Size),RMS值低于阈值的帧将被视为静默帧。

  1. 参数说明:

        Threshold(dB) -- 音量低于阈值的帧会被当做静默帧去掉,如果音源较为嘈杂,可以增加该值抑制噪声,默认为-40dB。通常VR之后,可能会带有和声,也可利用该参数来切掉和声。

        Minimum Length(ms) -- 每个音频切片的最小长度,单位为ms,默认值为5000。

        Minimum Interval(ms) -- 切分时每个静音片段的最小长度,单位为ms,默认值为300。若原音频中只包含非常短暂的停顿,建议将该值设小一些。该值越小,获得的切片数量越多。注意:该值必须小于Minimum Length,大于Hop Size。

        Hop Size(ms) -- 每个RMS帧的长度,单位为ms。增加这个值将提高切片的精度,但会减慢过程。默认为10。

        Maximum Silence Length(ms) -- 音频切片时的最大静默长度,单位为ms,默认为1000,简单理解为当静默超过该值时即为合适的切片时间点。需要根据需要调整此值。注意,该值并不以为切片后音频中的连续静默时长会有如此长度。算法会根据需要自动寻找合适的切片点(其可能的静默长度会<=该值)

        Output Directory -- 输出目录,即切分后的wav保存位置

  1. 参数设置完毕后,只需要点击Add Audio Files->选择所有需要切分的wav->start即可。等待完成后,进入Output Directory即可查看。
  1. 二次切分
  1. 在Output Directory中按照时长排序,将超长片段重新使用slicer进行二次切分。否则,超长片段在预处理或训练时,容易爆显存。
  2. 若二次切分后无变化的片段,可通过调整Maximum Slience Length、Minimum Interval等参数使其能切分成功。
  1. 数据清洗
  1. 二次切分后,Output Directory中就只有短时和正常片段。数据清洗流程较为枯燥繁琐,需要用自己的耳朵去判断哪些数据可用,哪些不可用,同时还需要将时长不足的片段拼接起来。
  2. 对二次切分后的片段按时长升序排列,圈出所有短时片段并逐一试听。非主声或无法判断声音归属的片段可直接删掉。对于主声中的气音、尾音等可能会被单独切成片段,需要保留并拼接到前后歌声中。
  3. 部分短时片段可能是和声,或和声接一点点主声,需要使用工具Glodwave进行裁剪(其他工具亦可,只是我习惯用这个)。对于本为一句歌词却被切分为多个短片段的,亦可使用该工具进行拼接,可视化的剪切、粘贴以及ctrl+s的保存相当方便。

  1. 短时片段清洗干净后,接下来对正常片段(即剩余的片段)逐一试听,视情况将短时片段贴到前后片段的头部或尾部,亦或几个连续短时片段合并为一个片段。
  2. 若试听正常片段时发现存在和声或较长静默片段,也可使用Goldwave对其进行手动切分以及再拼接。最终使得Output Directory中只存在正常片段且都经过了清洗。
  3. 对于翻唱模型来说,即便是占比非常小的错误数据也会导致模型质量的大幅下降,因此在清洗过程中需要细心、耐心并适时总结一些技巧。
  1. 响度匹配
  1. 规整好片段后,需要对数据集进行响度匹配。由于数据集由多首歌组成,不同歌之间音量听感是不一致的,因此响度匹配的目的即为让数据集整体达到一致的音量听感。
  2. SVC提供的脚本resample.py中虽然有这个功能,但其是按照固定的0dB来对数据集进行听感统一,这可能造成音质的损失,从而降低数据集质量。
  3. SVC作者提供了一个专门的响度匹配工具Loudness Matching Tool,若无其他选择时可以使用该工具进行操作。

  1. 参数说明:

        输入输出 -- 只需提供目录路径即可,工具会读取输入目录下的所有音频文件,并在处理完毕后放到输出目录中

        匹配方式 -- 选择响度匹配的算法,其中括弧中的单位用于指导“目标响度数值”的值的意义

        目标响度数值 -- 匹配时的标准,其意义由匹配方式中的算法及其单位定义

        输出设置 -- 设置输出格式,建议与输入音频一致

  1. 数据集中只保留匹配后的音频切片。
  1. 重采样
  1. 响度匹配后,需要执行resample.py对数据集进行规整。由于不使用SVC自带的响度匹配,因此需要带上参数--skip_loudnorm。

python resample.py --skip_loudnorm

  1. 注意:resample.py会将重采样后的数据拷贝到dataset/44k之下,并形成对应的目录格式,因此即便原数据集已经是44100kHz、单声道,也建议执行一次该脚本。
  1. 自动划分训练集、验证集,以及配置文件生成
  1. 使用如下命令生成:

python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug

  1. 上述命令中,speech_encoder可选的有如下集中:
vec768l12
vec256l9
hubertsoft
whisper-ppg
whisper-ppg-large
cnhubertlarge
dphubert
  1. --vol_aug则表示开启响度嵌入,开启后在推理时会匹配输入源响度;去掉该参数则推理时会完全使用模型的响度。

     体感就是,开启后推理出来的翻唱歌声与原歌声音量差不多,关闭时翻唱歌声则取决于模型训练时数据集的整体音量。

  1. 配置文件修改
  1. 配置文件生成后,可按需进行调整,其中主模型配置文件为SVC/config/config.json,扩散模型配置文件为SVC/config/diffusion.yaml。
  2. 主模型配置文件

config.json

  • vocoder_name: 选择一种声码器,默认为nsf-hifigan
  • log_interval:多少步输出一次日志,默认为 200
  • eval_interval:多少步进行一次验证并保存一次模型,默认为 800
  • epochs:训练总轮数,默认为 10000,达到此轮数后将自动停止训练
  • learning_rate:学习率,建议保持默认值不要改
  • batch_size:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
  • all_in_mem:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 远大于 数据集体积时可以启用
  • keep_ckpts:训练时保留最后几个模型,0为保留所有,默认只保留最后3
  1. 扩散模型配置文件

diffusion.yaml

  • cache_all_data:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 远大于 数据集体积时可以启用
  • duration:训练时音频切片时长,可根据显存大小调整,注意,该值必须小于训练集内音频的最短时间!
  • batch_size:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
  • timesteps : 扩散模型总步数,默认为 1000。完整的高斯扩散一共 1000 步
  • k_step_max : 训练时可仅训练 k_step_max 步扩散以节约训练时间,注意,该值必须小于timesteps,0 为训练整个扩散模型,注意,如果不训练整个扩散模型将无法使用仅扩散模型推理!
  1. 生成F0预测器
  1. 前面步骤完全完成后,即可开始预处理的最后一步。生成预测器,生成的文件将会和dataset/44k/中的数据集放在一起。
  2. 使用以下命令

python preprocess_hubert_f0.py --f0_predictor rmvpe --use_diff

  1. 这里f0_predictor推荐只用rmvpe即可,--use_diff为开启扩散训练。
  2. 此处命令执行需要花费一点时间,若出错爆显存,则需排查数据集是否存在时长较长的片段,需要进行部分重切分重拼接等操作。然后再从第六步重新来一遍。

标签:片段,响度,训练,--,音频,SVC,切分,准备,预处理
From: https://www.cnblogs.com/Eban/p/18237297

相关文章

  • 第24讲:预处理详解
    文章目录1.预定义符号2.#define定义常量3.#define定义宏1.预定义符号C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。__FILE__//进⾏编译的源⽂件__LINE__//⽂件当前的⾏号__DATE__//⽂件被编译的⽇期__TIME__//⽂件被编译的......
  • 有关于JavaSSM项目的前期框架准备
    一、项目准备的工具及框架使用工具:idea创建工程:maven工程使用框架:ssm(spring+springmvc+mybatis)服务器:tomcat二、项目前期内容1、pom.xml导入所依赖的jar包(这里附上代码)<dependencies><!--扫入spring相关依赖--><dependency><group......
  • C语言关于预处理的基础介绍
    一:预定义符号    在c语言中有一些预定义的符号,这些符号已经定义好了,用户不需要再次定义只需要使用即可。 __FILE__:显示当前进行编译的源文件__LINE__:显示当前代码行号__DATE__:显示当前文件被编译的日期__TMIE__:显示当前文件被编译的时间__STDC__:查看当前编译......
  • 【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)
    尚庭公寓SpringBoot+Vue项目实战】项目初始化准备(二)文章目录尚庭公寓SpringBoot+Vue项目实战】项目初始化准备(二)1、导入数据库2、创建工程3、项目初始配置3.1、SpringBoot依赖配置3.2、创建application.yml文件3.3、创建SpringBoot启动类4、MyBatisPlus配置4.1......
  • 基于修改iOS内核绕过iOS 基于svc 0x80的ptrace反调试
    yuzhouheike62天 看到一个帖子:[原创]绕过iOS基于svc0x80的ptrace反调试24.跟着操作了下.这篇文章的核心思想来源于[原创]iOS内核修改之过某音等PT_DENY_ATTACH反动态ptrace调试我的设备是:iphone7iOS14.1,DarwinKernelVersion20.0.0:WedSep3003:24:41......
  • 【Python机器学习】无监督学习——不同类型的预处理
    之前学习过,一些算法(比如神经网络和SVM)对数据缩放非常敏感。因此,通常的做法是对特征进行调节,使数据更适合于这些算法。通常来说,这是对数据的一种简单的按照特征的缩放和移动。举例:importmglearn.plotsimportmatplotlib.pyplotaspltmglearn.plots.plot_scaling()plt.sh......
  • SpringBoot启动流程分析之准备应用上下文refreshContext()(八)
    SpringBoot启动流程分析之准备应用上下文refreshContext()(八)文章目录SpringBoot启动流程分析之准备应用上下文refreshContext()(八)1、准备刷新1.1、子类prepareRefresh()方法1.2父类prepareRefresh()方法2、通知子类刷新内部bean工厂3、准备bean工厂4、允许上下文子类对b......
  • 【Python数据预处理系列】精通Pandas:数据清洗中的字符串分割技巧(例子:如何将籍贯列中的
    本文将深入探讨Pandas库在数据清洗中的应用,特别是字符串分割技巧。在数据分析的预处理步骤中,有效地处理和准备原始数据是至关重要的一步。我们将通过具体示例,展示如何使用Pandas中的.str.split()函数来对数据集中的字符串进行分割,进而提取所需信息。本文例子讲解如何将......
  • 高考前家长需要做哪些准备?
    高考前,家长作为孩子的重要支持者,需要做好多方面的准备,以确保孩子能够在一个良好的环境中迎接考试。以下是一些详细的准备事项:1.心理准备家长应认识到高考对孩子的重要性,但也要避免给孩子过多的压力。保持平常心态,不过度强调高考的结果,让孩子感受到家庭的温暖和支持。家长自......
  • AutoCAD不响应,等待资源监视器中的svchost.exe进程
    问题:启动AutoCAD时,没有软件响应。如果打开“任务管理器—性能—打开资源监视器”,则显示acad.exe进程等待svchost.exe继续。解决方案:请尝试以下步骤作为解决方法:重命名AdDownloaderCore.dll文件,该文件位于以下目录:C:\ProgramFiles\Autodesk\AutoCAD201x。尝试运行Au......