电影《满江红》上映之后,国师的一段采访视频火了,被无数段子手恶搞做成鬼畜视频,固然,国师的这段采访文本相当经典,他生动地描绘了一个牛逼吹完,咱们都信了,成果发现自己没办法完成最终放弃,随后疯狂往回找补的过程。
最离谱的是,他这段采访用极其丰富的细节描绘了一个没有发生且没有任何含义的工作,堪比单口相声,形成了一种荒诞的美感,毫无疑问,《满江红》最大的贡献便是这个采访资料了。
往这个文本里套内容并没有什么难度,小学生也能够,但配音是一个瓶颈,也便是说,普通人想插手鬼畜视频还是有一定门槛的,这个范畴往往是专业配音演员的全国,但今时非比往日,人工智能AI技能能够让咱们根据PaddleSpeech克隆出精致细腻的国师原声,普通人也能够玩转搞笑配音。
数据集预备和清洗
咱们的意图是克隆国师的声响,那么就必须要有国师的声响样本,这里的声响样本和运用so-vits-svc4.0克隆歌声一样,需求相对“洁净”的资料,所谓洁净,即没有布景杂音和空白片段的音频资料,也能够运用国师采访的原视频音轨。
需求留意的是,原视频中女记者的提问音轨需求删除掉,否则会影响模型的推理作用。
随后,将练习集数据进行切分,主要是为了避免爆显存问题,能够手动切为长度在5秒到15秒的音轨切片,也能够运用三方库进行切分:
git clone https://github.com/openvpi/audio-slicer.git
随后编写脚本:
import librosa # Optional. Use any library you like to read audio files.
import soundfile # Optional. Use any library you like to write audio files.
from slicer2 import Slicer
audio, sr = librosa.load('国师采访.wav', sr=None, mono=False) # Load an audio file with librosa.
slicer = Slicer(
sr=sr,
threshold=-40,
min_length=5000,
min_interval=300,
hop_size=10,
max_sil_kept=500
)
chunks = slicer.slice(audio)
for i, chunk in enumerate(chunks):
if len(chunk.shape) > 1:
chunk = chunk.T # Swap axes if the audio is stereo.
soundfile.write(f'master_voice/{i}.wav', chunk, sr) # Save sliced audio files with soundfile.
留意这里min_length的单位是毫秒。
因为原始视频并未有布景音乐,所以分拆之前咱们不必拆分前景音和布景音,假如你的资料有布景音乐,能够考虑运用spleeter来进行别离,详细请参照:人工智能AI库Spleeter免费人声和布景音乐别离实践(Python3.10),这里不再赘述。
假如对原视频的存在的杂音不太满意,能够经过noisereduce库进行降噪处理:
from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = wavfile.read("1.wav")
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("1_reduced_noise.wav", rate, reduced_noise)
练习集数量最好不要低于20个,虽然音频练习更适合小样本,但数量不够也会影响模型质量。
最终咱们就得到了一组数据集:
D:\work\speech\master_voice>dir
驱动器 D 中的卷是 新加卷
卷的序列号是 9824-5798
D:\work\speech\master_voice 的目录
2023/06/13 17:05 <DIR> .
2023/06/13 20:42 <DIR> ..
2023/06/13 16:42 909,880 01.wav
2023/06/13 16:43 2,125,880 02.wav
2023/06/13 16:44 1,908,280 03.wav
2023/06/13 16:45 2,113,080 04.wav
2023/06/13 16:47 2,714,680 05.wav
2023/06/13 16:48 1,857,080 06.wav
2023/06/13 16:49 1,729,080 07.wav
2023/06/13 16:50 2,241,080 08.wav
2023/06/13 16:50 1,959,480 09.wav
2023/06/13 16:51 1,921,080 10.wav
2023/06/13 16:52 1,921,080 11.wav
2023/06/13 16:52 1,677,880 12.wav
2023/06/13 17:00 1,754,680 13.wav
2023/06/13 17:01 2,202,680 14.wav
2023/06/13 17:01 2,023,480 15.wav
2023/06/13 17:02 1,793,080 16.wav
2023/06/13 17:03 2,586,680 17.wav
2023/06/13 17:04 2,189,880 18.wav
2023/06/13 17:04 2,573,880 19.wav
2023/06/13 17:05 2,010,680 20.wav
20 个文件 40,213,600 字节
2 个目录 399,953,739,776 可用字节
当然,假如懒得预备练习集,也能够下载我切分好的,咱们丰俭由己,各取所需:
链接:https://pan.baidu.com/s/1t5hE1LLktIPoyF70_GsH0Q?pwd=3dc6
提取码:3dc6
至此,数据集就预备好了。
云端练习和推理
数据集预备好了,咱们就能够进行练习了,在此之前,需求装备PaddlePaddle框架,但这一次,咱们挑选在云端直接进行练习,假如想要本地部署,请移步:声响好听,颜值能打,根据PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10)。
首先进入Paddle的云端项目地址:
https://aistudio.baidu.com/aistudio/projectdetail/6384839
随后点击发动环境,留意这里尽量挑选显存大一点的算力环境:
这里的机器有点类似Google的colab,原则上免费,经过耗费算力卡来进行运用。
成功发动环境之后,需求装置依赖:
# 装置实验所需环境
!bash env.sh
!pip install typeguard==2.13
因为机器是共享的,一旦环境关闭,再次进入还需求再次进行装置操作。
装置好paddle依赖后,在左边找到文件 untitled.streamlit.py ,双击文件敞开,随后点击web按钮,进入web页面。
接着在web页面中,点击Browse files按钮,将之前切分好的数据集上传到服务器内部。
接着点击检验数据按钮,进行数据集的校验。
最终输入模型的称号以及练习轮数,然后点击练习即可:
以TeslaV100为例子,20个文件的数据集200轮练习大约只需求五分钟就能够练习结束。
模型默认保存在项意图checkpoints目录中,文件称号为master。
点击导出模型即可覆盖老的模型:
最终便是线上推理:
这里预制了三种声码器【PWGan】【WaveRnn】【HifiGan】, 三种声码器作用和生成时间有比较大的差距,这里推荐折中的PWGan声码器,因为毕竟是线上环境,每停留一个小时都会耗费算力点数。
组成结束后,就能够拿到国师的克隆语音了。
结语
线上环境装备起来相对简略,但要记住,完成克隆语音任务后,需求及时关闭环境,避免算力点数的非必要耗费,最终奉上国师的音色克隆模型,与君共觞:
链接:https://pan.baidu.com/s/1nKOPlI7P_u_a5UGdHX76fA?pwd=ygqp
提取码:ygqp
克隆音色版本的国师鬼畜视频现已上传到Youtube(B站),欢迎诸君品鉴和臻赏。