[AI语音克隆] 5秒内克隆您的声音并生成任意语音内容

news2025/2/12 15:57:52

前言

随着人工智能技术的不断发展,语音克隆技术也得到了越来越多的关注和研究。目前,AI语音克隆技术已经可以实现让机器模拟出一个人的声音,甚至可以让机器模拟出一个人的语言习惯和表情。

然而,AI语音克隆技术仍然面临着许多难点和痛点。首先,现有的语音克隆技术仍然存在着语音质量不够高、语音还原度不够高等问题,难以达到真正的“以假乱真”效果。

针对这些难点和痛点,我们团队基于开源项目MockingBird提出了一种新的AI语音克隆方案MockingVoice,通过采用更加先进的语音合成技术和更加严格的隐私保护措施,实现了更高质量的语音克隆效果和更加安全可靠的使用体验。我们相信,这种新的AI语音克隆技术将有助于为人们带来更加智能、便捷、安全的语音交互体验,为人们的生活和工作带来更多可能性。

本篇文章,我们主要聚焦在MockingBird介绍及使用上,详细介绍如何借助现有的开源项目,实现声音克隆。

MockingBird开源项目介绍

在这里插入图片描述
MockingBird是一款先进的TTS(文本到语音)项目,使用深度学习模型生成高质量的合成语音。它由一组热衷于自然语言处理和语音技术的研究人员和工程师开发。
关键特点:对普通话的支持。
使用多个中文数据集进行训练,包括aidatatang_200zh、magicdata、aishell3、biaobei、MozillaCommonVoice和data_aishell,以确保生成的语音听起来自然流畅,可用于各种应用,包括语音助手、有声书和语言学习工具。
深度学习框架:Pytorch
使用PyTorch作为其主要深度学习框架,并已在2021年8月发布的最新版本PyTorch 1.9.0上进行了测试。它支持Tesla T4和GTX 2060 GPU,可以实现更快的训练和推理时间。
扩展性:易于使用和定制
提供了一个预训练的合成器,可立即使用,或者训练自己的合成器以生成符合您特定需求的语音。此外,您可以使用预训练的编码器和声码器,或使用实时的HiFi-GAN作为声码器来生成高质量的语音。
服务化:远程调用
Mocking Bird 支持Web服务,这意味着您可以轻松地将其部署在Web服务器上,并将其用于远程生成语音。这对于需要实时语音合成的应用程序或无法访问高端硬件的用户特别有用。

快速开始

一、环境安装

本文测试环境:Mac M1芯片 macos Monterey
Step 1 下载代码
下载git代码,https://github.com/babysor/MockingBird
Step 2 安装anaconda
可以从以下镜像站中:https://repo.anaconda.com/archive/ 找到适合你机器版本的镜像,下载安装。
安装完成后如图所示:
快速开始
一、环境安装
本文测试环境:Mac M1芯片 macos Monterey
Step 1 下载代码
下载git代码,https://github.com/babysor/MockingBird
Step 2 安装anaconda
可以从以下镜像站中:https://repo.anaconda.com/archive/ 找到适合你机器版本的镜像,下载安装。
安装完成后如图所示:
在这里插入图片描述
Step 3 构建虚拟python环境
注:由于原git项目代码中依赖了不同版本的第三方库,有些库对python版本还有要求,因此建议按照本文给的版本进行安装,目前在M1上是测试通过的。
运行命令:conda create -n mock_voice python=3.9
激活虚拟环境 mock_voice:conda activate mock_voice
Step 4 安装第三方依赖库
直接运行命令:pip install -r requirements.txt
基本上按照本文提供的git,下载安装没有问题。在安装过程中,如果遇到安装不了的,大家自行google。

二、下载预训练模型

这边我们可以直接下载社区开发者训练好的模型,直接拿来使用,下载地址如下:

下载链接信息
https://pan.baidu.com/s/1iONvRxmkI-t1nHqxKytY3g 百度盘链接 4j5d75k steps 用3个开源数据集混合训练
https://pan.baidu.com/s/1fMh9IlgKJlL2PIiRTYDUvw 百度盘链接 提取码:om7f25k steps 用3个开源数据集混合训练, 切换到tag v0.0.1使用
https://drive.google.com/file/d/1H-YGOUHpmqKxJ9FRc6vAjPuqQki24UbC/view?usp=sharing 百度盘链接 提取码:1024200k steps 台湾口音需切换到tag v0.0.1使用
https://pan.baidu.com/s/1PI-hM3sn5wbeChRryX-RCQ 提取码:2021150k steps 注意:根据issue修复 并切换到tag v0.0.1使用
我们下载第一个模型,将文件放置在地址:data/ckpt/synthesizer/pretrained-11-7-21_75k.pt

三、运行工具箱

Step 1 使用Audacity录音
如果我们使用MockingBird自带的工具箱进行录音的话,最终克隆出来的声音往往效果不好。我们需要借助专业工具来录制自己的声音,并对声音进行去噪处理。
下载软件:Audacity https://www.audacityteam.org/ 并安装

在这里插入图片描述
打开audacity,点击声音录制,并对录制完的声音进行降噪处理。
在这里插入图片描述
最后将录制的声音personal_test.wav导出到本地。

Step 2 运行工具箱
输入命令 python demo_toolbox.py
此时会加载出一个界面
在这里插入图片描述
Step 3 加载录音
在这里插入图片描述
Step 4 Synthesize only
输入你想要测试的中文文本,并点击按钮Synthesize only
Step 5 Vocode only
点击按钮Vocode only
在这里插入图片描述
最后将生成的声音进行播放。

分析及总结

录制声音时长

最好将要克隆的音频长度限定在3-8秒之间。这与许多人的想法不同,他们认为输入语音越长,音色被捕捉的准确性就越高。然而,由于模型特性,提取音色特征的容量是有限的。对于比较长的音频,模型只会映射到一个相对较小的模型中,这并没有提高准确性。在训练过程中,通常喂入110秒的语音,因此长音频中的一些不寻常的停顿可能导致推理过于发散。因此,建议输入音频的最佳长度为3~8秒,而不是越长越好。

输入音频去除明显背景声/底噪

尽管经过一些优化,特别是在引入GST之后,最新的代码库可以在说话人编码器部分提取并分离一部分噪音特征,减少噪音的影响,因此即使存在一些底噪,也可以正常地进行克隆合成。但是,原始模型仍然容易因底噪而失去音色的提取。为了获得更好的克隆效果,我们建议使用专业的音频工具或者像使用开源工具Audacity这样的工具对输入音频进行预处理,去除明显的噪音。这样可以大大提高克隆效果。

输入音频确保只有一个人声

经过实测,当输入的音频包含超过一个人的声音时,克隆出来的声音会变得难以辨认(有时甚至像幽灵声音),而且往往无法正常生成符合质量要求的音频,并且容易出现丢字现象。

输入音频的说话声最好是平调

在克隆的过程中,歌声和激动的声音往往难以获得准确的音色特征。因此,为了获得更好的效果,建议输入音频中的说话声是正常的语调。

边合成(synthesize)边看mel spectrogram

合成过程中会加入一定的随机值,因此可以尝试只进行合成(synthesize)操作,查看合成推理输出的Mel频谱图,直到获得满意的结果后再进行vocoder输出。下面是一个比较好的Mel频谱图供参考:
在这里插入图片描述

展望未来

本文我们主要讲述了如何使用预训练好的模型进行声音克隆的方法,那么如何自己构造数据集自己训练模型,或者说基于大模型进行微调从而达到更好的声音克隆效果呢,期待我们下次再见👋。

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

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

相关文章

BB84协议:量子秘钥分发

文章目录 为什么需要量子密钥分发通讯工具基本通讯 BB84协议为什么这样做能防止通讯被窃听?在传统信道上的窃听在量子信道上的窃听 内容来源: 为什么需要量子密钥分发 BB84协议是一种“密钥分发协议”,所以从功能上来讲,它要实现的目标与之…

618大促 | 解析平台、商家和消费者必须面对的三大风险

目录 618年中大促的三大风险 商家乐此不疲的“刷单炒信” 消费者无计可施的“薅羊毛” 平台恨之入骨的“恶意爬虫” 618三类欺诈风险的特点 618电商平台的业务安全防控之道 618大促再次开启,各平台及商家的促销大战如火如荼。 2023年618,京东推出…

【状态估计】用于非标量系统估计的最优卡尔曼滤波(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

leetcode数据结构题解(Java实现,第一天和第二天)

文章目录 第一天217. 存在重复元素53.最大子数组和 第二天1. 两数之和88. 合并两个有序数组 第一天 217. 存在重复元素 题解思路:首先题目需要的是判断数组中是否存在相同的数字,存在返回true,不存在就返回false。 那么显然可以这样做,先进行…

内网IM即时通讯软件WorkPlus,快速连接工作的沟通利器

在当今信息高度发达的时代,企业内部沟通的重要性不言而喻。随着企业团队的扩大和分布式办公的兴起,即时通讯软件成为了一种必不可少的工具。通过即时通讯软件,团队成员可以实时交流和协作,快速解决问题,加快决策过程。…

Echarts的地图实现拖拽缩放同步功能(解决多层geo缩放、拖动卡顿问题)

项目场景: 大屏项目显示云南省3D的地图,可拖拽缩放、地图打点、点击图标弹框等等功能 问题描述 多图层拖拽时会上下层会分离,延迟卡顿 原因分析: 1、拖拽时不同图层的中心坐标没有保持一致, 2、卡顿是数据更新动画时…

玩业余无线电时,突然听到有人呼救,该怎么办?

不管是在玩业余无线电还是在其他活动当中,突然遇到有人求救,都是一件非常重要的事情,因为救援行动的效率快慢和是否及时,都有可能影响到别人的生命安全。 下面是河南宝蓝小编给出的一些思考和建议,希望对大家会有一些帮…

软件测试-测试用例

目录 测试用例的四个要素 测试用例设计方法 基于需求进行测试用例的设计 等价类 边界值 判定表 正交表 通过allpirs画正交表 场景设计法 错误猜测法 面试题 如何模拟弱网 接口如何测试 zip命令测试 测试用例万能公式 水杯测试用例 微信发朋友圈 测试用例的四个…

Java实现的五子棋游戏 ~java.awtjava.swing

文章目录 Java实现的五子棋游戏1.实现效果2.实现源码2.1运行主函数main.java2.2 棋盘布局Chessboard.java3.Algorithm算法 点击下载链接:Java实现的五子棋游戏源码下载 Java实现的五子棋游戏 作业要求: (1)课题代号: …

老Mac电脑安装macOS Ventura实战

前提说明:此实战适用于老旧Mac电脑(2015年之前的,无法在系统设置中升级macOS Ventura系统的电脑)安装macOS Ventura系统! 软件:OpenCore-Patcher-GUI.app.zip 工具:16G U盘、或者移动硬盘&a…

Spring MVC拦截器Interceptor使用(判断用户登录)

文章目录 一 概念二 3步使用三 HandlerInterceptor接口四 代码实现 一 概念 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验…

superset链接本地数据库

打开图中 选择database 先解释SQLlite的格式 如下 SQLALCHEMY_DATABASE_URI mysql://username:password127.0.0.1:3306/gmall_report’ 请将 username 和 password 替换为实际的 MySQL 数据库的用户名和密码。 mysql则为如下

我有过密接的9个博士

我有过密接的9个博士 是我人生中留下的印迹和谈资 其中一个是中科大少年班的学神 趣讲大白话:多点谈资 【趣讲信息科技196期】 **************************** 我密接过的哪些博士们: 1、科大少年班刘雪峰博士。1998年,创智公司(当…

Banana Pi BPI-R3 Mini:2.5GbE 嵌入式路由器板,MTK7986方案

香蕉派 BPI-R3 Mini Banana Pi BPI-R3 Mini 是一款功能强大的 SBC 路由器板,专为需要高速网络功能的个人和企业而设计。这款路由器是广受欢迎的 Banana Pi R3 路由器板的小兄弟,配备了先进的功能,旨在提供可靠的性能,是需要可靠网…

元宇宙游戏:新瓶换新酒

当你打游戏时,你在打什么? 抛出这个问题,便也抛出了游戏背后的组成——设计、技术、应用。 在元宇宙产业链中最有感知度的,是场景和内容,作为现实世界的模拟与延伸,游戏和社交领域是最先具备实现基础的元…

存储基础知识及相关术语

存储基础知识 前置:存储基本概念 我们现在处于信息时代,每天都在和电脑、手、平板机打交道。我们的工作和生活,已经完全离不开视频、音乐、图片、文本、表格这样的数据文件。 而所有这些数据文件,都需要通过电子设备进行保存&…

Windows控制关机锁屏

原文链接 设置永不关机 新建一个vbs文件,内容如下: Set WshShell WScript.CreateObject("WScript.Shell") do WScript.sleep 60000 WshShell.SendKeys "{ScrollLock}" loop该程序的作用相当于每隔一分钟(60000毫秒&a…

了解MVC、MVP、MVVM模式

前言 在Android开发中,当你梳理完需求后,你要做的并不是马上写下你的第一行代码,而是需先设计好整个项目的技术框架今天,我将全面介绍Android开发中主流的技术框架MVC、MVP 与 MVVM模式,并实例讲解MVP模式&#xff0c…

Android启动优化实践

作者:95分技术 启动优化是Android优化老生常谈的问题了。众所周知,android的启动是指用户从点击 icon 到看到首帧可交互的流程。 而启动流程 粗略的可以分为以下几个阶段 fork创建出一个新的进程创建初始化Application类、创建四大组件等 走Applicatio…

uni-app配置Vant Weapp

uni-app配置vant-------浏览器运行环境下不兼容 1.创建uni-app项目2.创建wxcomponents目录3. 安装vant需要的模块包3.1找一个空文件cmd 进入执行3.1.1通过 npm 安装3.1.2通过 npm 安装 3.2.1获取dist文件 4.将dist内容复制到wxcomponents目录下5.1 使用vant5.1使用button按钮5.…