声音克隆,精致细腻,人工智能AI打造国师“一镜到底”鬼畜视频,基于PaddleSpeech(Python3.10)

news2024/11/28 19:04:50

电影《满江红》上映之后,国师的一段采访视频火了,被无数段子手恶搞做成鬼畜视频,诚然,国师的这段采访文本相当经典,他生动地描述了一个牛逼吹完,大家都信了,结果发现自己没办法完成最后放弃,随后疯狂往回找补的过程。

最离谱的是,他这段采访用极其丰富的细节描述了一个没有发生且没有任何意义的事情,堪比单口相声,形成了一种荒诞的美感,毫无疑问,《满江红》最大的贡献就是这个采访素材了。

往这个文本里套内容并没有什么难度,小学生也可以,但配音是一个瓶颈,也就是说,普通人想染指鬼畜视频还是有一定门槛的,这个领域往往是专业配音演员的天下,但今时非比往日,人工智能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站),欢迎诸君品鉴和臻赏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【涨粉秘籍】如何快速涨粉并转化为铁粉。

如何快速涨粉并转化为铁粉。 前言在这一百天里&#xff0c;我在csdn获得了什么如何100天涨粉一万参加新星计划发布优质文章 什么是铁粉如何快速转化粉丝为铁粉多与读者互动鼓励读者也创作高质量的内容 后记 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &a…

工作读研两不误?同等学力申硕值不值得读?

根据教育部公布的最新数据&#xff1a; 今年全国考研报考人数达到474万人&#xff0c;相较去年增加17万人。 据中国青年报称据媒体报道&#xff0c; 2023年考研报名人数达到 474万人&#xff0c;而录取率不超过 20%&#xff0c;超过 300万考研学子注定落榜&#xff01; 一名女…

这所广东的211,录取平均分360+,复录比高达2.24!

一、学校及专业介绍 广东工业大学&#xff08;Guangdong University of Technology&#xff09;简称“广工”&#xff0c;位于广东省广州市&#xff0c;是广东省重点建设的省属重点大学、广东省“211工程”、首批广东省高水平大学、广东省高水平理工科大学、国家“111计划”“2…

python:并发编程(三)

前言 本文将和大家一起探讨进程、线程、协程的监控方式&#xff0c;方便我们将这些“虚的东西”具体化&#xff0c;也方便讲解诸如子进程这些概念。我相信&#xff0c;本章将会为后续学习提供非常有用的帮助。本章内容将基于win10系统&#xff0c;为大家展现一个具体化的进程、…

算法修炼之练气篇(Python版)——练气一层初期

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;算法修炼之练气篇&#xff08;C\C版&#xff09; &#x1f353;专栏&#xff1a;算法修炼之筑基篇&#xff08;C\C版&#xff09; ✨博主的其他文章&#xff1a;点击进入博主的主页​​​​​​ 前言&#xff1a;Pyth…

ChineseBERT使用指北

文章目录 ChineseBert 模型介绍开源代码使用方法未完待续 ChineseBert 模型介绍 论文地址&#xff1a;https://arxiv.org/pdf/2106.16038.pdf 代码地址&#xff1a;https://github.com/ShannonAI/ChineseBert bert是语义模型&#xff0c;因此无法解决形近字、音近字的问题。 …

C语言:写一个函数返回参数二进制中 1 的个数(三种思路)

题目&#xff1a; 链接&#xff1a;二进制中1的个数__牛客网 来源&#xff1a;牛客网 输入一个整数 n &#xff0c;输出该数32位二进制表示中1的个数。其中负数用补码表示。 示例&#xff1a; 输入 10 输出 2 说明 十进制中10的32位二进制表示为0000 0000 0000 0…

从零开始 Spring Boot 40:定时任务

从零开始 Spring Boot 40&#xff1a;定时任务 图源&#xff1a;简书 (jianshu.com) 定时任务是一种很常见的需求&#xff0c;比如我们可能需要应用定期去执行一些清理工作&#xff0c;再比如可能需要定期检查一些外部服务的可用性等。 fixedDelay 要在 Spring 中开启定时任…

深度学习笔记之Transformer(一)注意力机制基本介绍

深度学习笔记之Transformer——注意力机制基本介绍 引言回顾&#xff1a; Seq2seq \text{Seq2seq} Seq2seq模型中的注意力机制注意力机制的简单描述注意力机制的机器学习范例&#xff1a; Nadaraya-Watson \text{Nadaraya-Watson} Nadaraya-Watson核回归 Nadaraya-Watson \text…

编程必备:JAVA多线程详解

目录 前言 1.入门多线程 1.1. 线程、进程、多线程、线程池 1.2.并发、串行、并行 1.3. 线程的实现方式 1.3.1. 继承 Thread 类 1.3.2. 实现 Runnable 接口 1.3.3. 使用 Callable 和 Future 1.3.4. 使用线程池 1.4.线程的状态 1.5. 线程常用方法 1.5.1 sleep() 1.4…

验证码识别系统Python,基于CNN卷积神经网络算法

一、介绍 验证码识别系统&#xff0c;使用Python作为主要开发语言&#xff0c;基于深度学习TensorFlow框架&#xff0c;搭建卷积神经网络算法。并通过对数据集进行训练&#xff0c;最后得到一个识别精度较高的模型。并基于Django框架&#xff0c;开发网页端操作平台&#xff0…

基于Java网上花店系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

Prompt 范式产业实践分享!基于飞桨 UIE-X 和 Intel OpenVINO 实现跨模态文档信息抽取

近期 Prompt 范式备受关注&#xff0c;实际上&#xff0c;其思想在产业界已经有了一些成功的应用案例。中科院软件所和百度共同提出了大一统诸多任务的通用信息抽取技术 UIE&#xff08;Universal Information Extraction&#xff09;。截至目前&#xff0c;UIE 系列模型已发布…

【JavaEE】网络原理——传输层协议:UDP和TCP

目录 1、简单了解应用层协议 2、传输层UDP协议 3、传输层TCP协议 3.1、TCP报文介绍 3.2、TCP实现可靠传输的核心机制 3.2.1、确认应答 3.2.2、超时重传 3.3、连接管理 &#xff08;三次挥手&#xff0c;四次握手&#xff09; 3.3.1、建立连接&#xff08;三次握手&a…

Java-API简析_java.lang.Enum<E extends Enum<E>>类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131212897 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

接口自动化测试丨如何实现多套环境的自动化测试?

在敏捷迭代的项目中&#xff0c;通常会将后台服务部署到多套测试环境。那么在进行接口自动化测试时&#xff0c;则需要将服务器的域名进行配置。使用一套接口测试脚本&#xff0c;通过切换域名地址配置&#xff0c;实现多套环境的自动化测试。 实战练习 分别准备两套测试环境…

Redis的单线程模型和标准Reactor线程模型的关系

文章目录 Redis到底是不是单线程&#xff1f;标准Reactor线程模型单reactor单线程单reactor多线程多reactor多线程 redis6.0 之前的单线程模型redis6.0 之后的单线程模型为什么redis最初选择的单线程网络模型&#xff1f;为什么redis6.0 io读写要用多线程&#xff1f; Redis 6.…

索尼RSV视频修复方法论视频文件修复时样本文件的三同

索尼RSV类的文件修复案例有很多&#xff0c;程序操作也很简单没什么可说的&#xff0c;这次这个索尼ILCE-7SM3的案例就是为了让大家更好的认识视频修复中我称之为“三同“的重要性&#xff0c;想要恢复的效果好必须要把准备工作做到位。 故障文件:45.1G RSV文件 故障现象: 索…

软件渗透测试是什么?软件产品哪种情况下需要做渗透测试?

随着互联网的普及&#xff0c;软件的开发方越来越多&#xff0c;但是随之而来的也是信息安全方面的问题。在软件开发过程中&#xff0c;安全问题一定要被重视&#xff0c;因为漏洞和安全问题一旦被黑客利用&#xff0c;会给公司和用户带来巨大的损失。为了避免这种情况的发生&a…

语音工牌在运营商智慧装维场景,有何应用价值?

客户精细化运营时代&#xff0c;如何做好客户服务体验&#xff0c;提升品牌美誉度和好感度&#xff0c;是众多企业开始思考的问题。 在运营商行业&#xff0c;上门装维和营业厅服务场景是企业与客户直接互动最多的地方。这个过程的服务质量直接影响到客户成交率、客户投诉率和…