2.3 Processing the Training Dataset.
本小节主要介绍数据集处理。
Last updated
本小节主要介绍数据集处理。
Last updated
数据集是指一组数据样本,包含音频,文本等数据。数据集的质量指的是音频的质量和标注的正确率,数据集的大小指的是音频的长度。
数据集处理,主要分别几个主要步骤,音频处理,音频切割,音频降噪,音频打标以及音频校对,这里会使用一系列的工具进行处理,本小节比较关键,对于后续的生成模型推理质量起到的决定性的作用。
在声音处理方面有很多技巧需要注意,但是毕竟我们不是专业的人员,但是有些基础的概念的还是需要知道,首先就是就是响度,响度就是俗称的音量,常见的计数方式是dB,也就是分贝。生活中常见的分贝都为正数,比如60分贝是正常说话的声音。但dB作为一个对数单位他是不能直接拿来描述一个物理量的大小或多少的。在描述音频的音量时一般使用电平这个词,音频电平就是输入信号的电压大小,和人耳听见的分贝数是不同的。这部分比较晦涩难懂就不解释了,只要记住正常说话的电平要保持在-9dB~-6dB这个区间,在训练前用软件做下响度统一。
混响是后期反射声,你可以简单的理解为回声。你可能觉得正常录的声音能有什么回声,但实际上无论什么情况都会有混响,在前期时候我们需要处理混响。
这里的音质是对音频准确性、保真度或清晰度的评估,如果要自己录音的话最好买个单独的麦克风。再贵的耳机麦克风都不如一个独立麦克风。
还是人话:“噪音”。录音的时候让家里的狗别叫了,音响别放音乐了,爸妈别吵架了,风扇空调关掉,门窗关好。
还是人话:“说话完整”。每个字读完,中文还好但英文经常读一半,比如:fucking读成f——king。可能你说话会有口音那也不行,对于AI来说你说的话就是对牛弹琴。
这里我们使用剪映软件可以快速地统一响度,在剪映软件的设置选项之中,我们可以设置响度的大小
我这里取Youtube 响度标准-14LUFS 进行处理。
使用的方法与下面使用软件的方法一致,在实际操作过程之中,发现使用WebUI 对模型的下载时间处理很长,建议使用下面的软件的操作方法进行处理
客户端下载地址 : https://ultimatevocalremover.com/
使用UVR5 进行声音处理的话,比较好第一是没有bug ,第二是可以使用的模型更多,更加容易进行处理。
要下载的模型有:MDX-Net:model_bs_roformer_ep_317_sdr_12.9755、VR Architecture:UVR-De-Echo-Normal、UVR-De-Echo-Aggressive、UVR-De-Echo-Dereverb、UVR-DeNoise。
这些模型和架构通常用于音频处理任务,如音乐分离、去回声、去混响和降噪,帮助提高音频的清晰度和质量。不同的模式(如Normal、Aggressive)和功能(如De-Echo、DeNoise)可以针对不同的音频处理需求进行优化。
DeNoise: 表示去除音频中的噪声。
De-Echo-Dereverb: 表示去除音频中的回声和混响。
De-Echo: 表示去除音频中的回声。
MDX-Net: MDX-Net 是一种基于深度学习的音乐分离模型,能够将混合音轨分离成多个独立的音轨(如人声、鼓、贝斯等)。
下载完模型后开始处理音频,select input选择输入文件,select output选择输出文件夹,输出格式选WAV,记得点上GPU Conversion(使用GPU),首先选择MDX-Net类型使用Bs-Roformer-Viperx-1297(目前最好的提取人声的模型,又快又好)提取人声。处理完的音频(vocals)的是人声。然后把人声再输入去混响(下面三选一):VR Architecture:UVR-De-Echo-Normal(轻度混响)、UVR-De-Echo-Aggressive(重度混响)、UVR-De-Echo-Dereverb(变态混响),最后用UVR-DeNoise降噪一下。这套流程弄完会比自带的UVR5在人声提取方面好一点。
第一步:提取人声,如果没有其它的背景的音乐,这一背景音乐是可以直接跳过。
第二步:去混响,使用UVR-De-Echo-Aggressive(重度混响) 去混响。
第三步:然后使用UVR-DeNoise进行降噪处理得到降噪之后的音频文件
接下里我们需要切割音频文件的。为什么要进行切割是因为,后续我们要进行模型训练的时候的,如果文件过长在训练的时候会爆显存。
在进行音频切割之前,建议调整音频的音量的大小,把所有音频拖进音频软件(如au、剪映)调整音量,最大音量调整至-9dB到-6dB,过高的删除
首先输入原音频的文件夹路径(不要有中文),如果刚刚经过了UVR5处理那么就是uvr5_opt这个文件夹。然后建议可以调整的参数有min_length、min_interval和max_sil_kept单位都是ms。min_length根据显存大小调整,显存越小调越小。min_interval根据音频的平均间隔调整,如果音频太密集可以适当调低。max_sil_kept会影响句子的连贯性,不同音频不同调整,不会调的话保持默认。其他参数不建议调整。点击开启语音切割,马上就切割好了。默认输出路径在output/slicer_opt。当然也可以使用其他切分工具切分。
我们可以看下几个先关的设置的参数:
我们同时看下文件夹的相关的路径:
切分完后文件在output\slicer_opt。打开切分文件夹,排序方式选大小,将时长超过 显存数 秒的音频手动切分至 显存数 秒以下。例如目前我的是GPU类型: Tesla T4 CPU: 20核 内存: 80GB 显卡: 1卡 显存: 16GB,那么就要将超过16秒的音频手动切分至16s以下,音频时长太长的会爆显存。如果语音切割后还是一个文件,那是因为音频太密集了。可以调低min_interval,从300调到100基本能解决这问题。实在不行用au手动切分。
如果你觉得你的音频足够清晰可以跳过这步,降噪对音质的破坏挺大的,谨慎使用。
输入刚才切割完音频的文件夹,默认是output/slicer_opt文件夹。然后点击开启语音降噪。默认输出路径在output/denoise_opt。
为什么要打标:打标就是给每个音频配上文字,这样才能让AI学习到每个字该怎么读。这里的标指的是标注
如果你上一步切分了或者降噪了,那么已经自动帮你填充好路径了。然后选择达摩ASR或者fast whisper。达摩ASR只能用于识别汉语和粤语,效果也最好。fast whisper可以标注99种语言,是目前最好的英语和日语识别,模型尺寸选large V3,语种选auto自动。whisper可以选择精度,建议选float16,float16比float32快,int8速度几乎和float16一样。然后点开启离线批量ASR就好了,默认输出是output/asr_opt这个路径。ASR需要一些时间,看着控制台有没有报错就好了,如果有字幕的可以用字幕标注,准确多了。内嵌字幕或者外挂字幕都可以。
上一步打标完会自动填写list路径,你只需要点击开启打标webui
打开后就是SubFix,从左往右从上到下依次意思是:跳转页码、保存修改、合并音频、删除音频、上一页、下一页、分割音频、保存文件、反向选择。每一页修改完都要点一下保存修改(Submit Text),如果没保存就翻页那么会重置文本,在完成退出前要点保存文件(Save File),做任何其他操作前最好先点一下保存修改(Submit Text)。合并音频和分割音频不建议使用,精度非常差,一堆bug。删除音频先要点击要删除的音频右边的yes,再点删除音频(Delete Audio)。删除完后文件夹中的音频不会删除但标注已经删除了,不会加入训练集的。这个SubFix一堆bug,任何操作前都多点两下保存。
这样可以对目前的文字进行精修,同时也可以对标点符号等进行修改操作。
至此,我们的数据训练集已经完成,这一部分也是目前耗时最多的部分,但是“磨刀不误砍柴工”。