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

特征

🌍 中文支持普通话并测试了多个数据集:aidatatang_200zh、magicdata、aishell3、data_aishell等。

🤩 PyTorch为 pytorch 工作,在 1.9.0 版本中测试(最新于 2021 年 8 月),GPU Tesla T4 和 GTX 2060

🌍 Windows + Linux在 Windows 操作系统和 linux 操作系统中运行(甚至在 M1 MACOS 中)

🤩 通过重用预训练的编码器/声码器,只需新训练的合成器即可获得简单而令人敬畏的效果

🌍 网络服务器准备好通过远程调用为您提供结果

进行中的工作

  • GUI/客户端大升级与合并 [X] 初始化框架 ./mkgui (基于streamlit + fastapi)和 技术设计 [X] 增加 Voice Cloning and Conversion的演示页面 [X] 增加Voice Conversion的预处理preprocessing 和训练 training 页面 [ ] 增加其他的的预处理preprocessing 和训练 training 页面
  • 模型后端基于ESPnet2升级

1. 安装要求

按照原始存储库测试您是否已准备好所有环境。 运行工具箱(demo_toolbox.py)需要 Python 3.7 或更高版本 。

  • 安装 PyTorch。

如果在用 pip 方式安装的时候出现 ERROR: Could not find a version that satisfies the requirement torch==1.9.0+cu102 (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2) 这个错误可能是 python 版本过低,3.9 可以安装成功

  • 安装 ffmpeg。
  • 运行pip install -r requirements.txt 来安装剩余的必要包。
  • 安装 webrtcvad pip install webrtcvad-wheels

2. 准备预训练模型

考虑训练您自己专属的模型或者下载社区他人训练好的模型:

2.1 使用数据集自己训练encoder模型 (可选)

  • 进行音频和梅尔频谱图预处理: python encoder_preprocess.py <datasets_root> 使用-d {dataset} 指定数据集,支持 librispeech_other,voxceleb1,aidatatang_200zh,使用逗号分割处理多数据集。
  • 训练encoder: python encoder_train.py my_run <datasets_root>/SV2TTS/encoder

训练encoder使用了visdom。你可以加上-no_visdom禁用visdom,但是有可视化会更好。在单独的命令行/进程中运行"visdom"来启动visdom服务器。

2.2 使用数据集自己训练合成器模型(与2.3二选一)

  • 下载 数据集并解压:确保您可以访问 train 文件夹中的所有音频文件(如.wav)
  • 进行音频和梅尔频谱图预处理: python pre.py <datasets_root> -d {dataset} -n {number} 可传入参数:
  • -d {dataset} 指定数据集,支持 aidatatang_200zh, magicdata, aishell3, data_aishell, 不传默认为aidatatang_200zh
  • -n {number} 指定并行数,CPU 11770k + 32GB实测10没有问题

假如你下载的 aidatatang_200zh文件放在D盘,train文件路径为 D:\data\aidatatang_200zh\corpus\train , 你的datasets_root就是 D:\data\

  • 训练合成器: python synthesizer_train.py mandarin <datasets_root>/SV2TTS/synthesizer

  • 当您在训练文件夹 synthesizer/saved_models/ 中看到注意线显示和损失满足您的需要时,请转到启动程序一步。

2.3使用社区预先训练好的合成器(与2.2二选一)

当实在没有设备或者不想慢慢调试,可以使用社区贡献的模型(欢迎持续分享):

作者下载链接效果预览信息
作者百度网盘 请输入提取码 百度盘链接 4j5d75k steps 用3个开源数据集混合训练
作者百度网盘 请输入提取码 百度盘链接 提取码:om7f25k steps 用3个开源数据集混合训练, 切换到tag v0.0.1使用
@FawenYohttps://drive.google.com/file/d/1H-YGOUHpmqKxJ9FRc6vAjPuqQki24UbC/view?usp=sharing 百度盘链接 提取码:1024输入 输出200k steps 台湾口音需切换到tag v0.0.1使用
@miven百度网盘 请输入提取码 提取码:2021AI声音模仿,5秒钟克隆你的语音_哔哩哔哩_bilibili150k steps 注意:根据issue修复 并切换到tag v0.0.1使用

2.4训练声码器 (可选)

对效果影响不大,已经预置3款,如果希望自己训练可以参考以下命令。

  • 预处理数据: python vocoder_preprocess.py <datasets_root> -m <synthesizer_model_path>

<datasets_root>替换为你的数据集目录,<synthesizer_model_path>替换为一个你最好的synthesizer模型目录,例如 sythensizer\saved_models\xxx

  • 训练wavernn声码器: python vocoder_train.py <trainid> <datasets_root>

<trainid>替换为你想要的标识,同一标识再次训练时会延续原模型

  • 训练hifigan声码器: python vocoder_train.py <trainid> <datasets_root> hifigan

<trainid>替换为你想要的标识,同一标识再次训练时会延续原模型

  • 训练fregan声码器: python vocoder_train.py <trainid> <datasets_root> --config config.json fregan

<trainid>替换为你想要的标识,同一标识再次训练时会延续原模型

  • 将GAN声码器的训练切换为多GPU模式:修改GAN文件夹下.json文件中的"num_gpus"参数

3. 启动程序或工具箱

您可以尝试使用以下命令:

3.1 启动Web程序(v2):

python web.py 运行成功后在浏览器打开地址, 默认为 http://localhost:8080

  • 仅支持手动新录音(16khz), 不支持超过4MB的录音,最佳长度在5~15秒

3.2 启动工具箱:

python demo_toolbox.py -d <datasets_root>

请指定一个可用的数据集文件路径,如果有支持的数据集则会自动加载供调试,也同时会作为手动录制音频的存储目录。

4. 番外:语音转换Voice Conversion(PPG based)

想像柯南拿着变声器然后发出毛利小五郎的声音吗?本项目现基于PPG-VC,引入额外两个模块(PPG extractor + PPG2Mel), 可以实现变声功能。(文档不全,尤其是训练部分,正在努力补充中)

4.0 准备环境

  • 确保项目以上环境已经安装ok,运行pip install espnet 来安装剩余的必要包。
  • 下载以下模型 链接:百度网盘 请输入提取码 提取码:gh41
    • 24K采样率专用的vocoder(hifigan)到 vocoder\saved_models\xxx
    • 预训练的ppg特征encoder(ppg_extractor)到 ppg_extractor\saved_models\xxx
    • 预训练的PPG2Mel到 ppg2mel\saved_models\xxx

4.1 使用数据集自己训练PPG2Mel模型 (可选)

  • 下载aidatatang_200zh数据集并解压:确保您可以访问 train 文件夹中的所有音频文件(如.wav)
  • 进行音频和梅尔频谱图预处理: python pre4ppg.py <datasets_root> -d {dataset} -n {number} 可传入参数:
  • -d {dataset} 指定数据集,支持 aidatatang_200zh, 不传默认为aidatatang_200zh
  • -n {number} 指定并行数,CPU 11700k在8的情况下,需要运行12到18小时!待优化

假如你下载的 aidatatang_200zh文件放在D盘,train文件路径为 D:\data\aidatatang_200zh\corpus\train , 你的datasets_root就是 D:\data\

  • 训练合成器, 注意在上一步先下载好ppg2mel.yaml, 修改里面的地址指向预训练好的文件夹: python ppg2mel_train.py --config .\ppg2mel\saved_models\ppg2mel.yaml --oneshotvc
  • 如果想要继续上一次的训练,可以通过--load .\ppg2mel\saved_models\<old_pt_file> 参数指定一个预训练模型文件。

4.2 启动工具箱VC模式

您可以尝试使用以下命令: python demo_toolbox.py -vc -d <datasets_root>

请指定一个可用的数据集文件路径,如果有支持的数据集则会自动加载供调试,也同时会作为手动录制音频的存储目录。

引用及论文

该库一开始从仅支持英语的Real-Time-Voice-Cloning 分叉出来的,鸣谢作者。

网址指定标题实现源码
1803.09017GlobalStyleToken(合成器)风格令牌:端到端语音合成中的无监督风格建模、控制和转移本代码库
2010.05646HiFi-GAN(声码器)用于高效和高保真语音合成的生成对抗网络本代码库
2106.02297Fre-GAN(声码器)Fre-GAN:对抗频率一致的音频合成本代码库
1806.04558SV2TTS将学习从说话人验证转移到多说话人文本到语音合成本代码库
1802.08435WaveRNN(声码器)高效的神经音频合成fatchord/WaveRNN
1703.10135Tacotron(合成器)Tacotron:走向端到端语音合成fatchord/WaveRNN
1710.10467GE2E(编码器)说话人验证的广义端到端损失本代码库

常见问题(FQ&A)

1.数据集在哪里下载?

数据集OpenSLR地址其他源 (Google Drive, Baidu网盘等)
helptang_200zh开放式单反谷歌云端硬盘
魔术数据开放式单反谷歌云端硬盘(开发集)
爱壳3开放式单反谷歌云端硬盘
data_aishell开放式单反

解压 aidatatang_200zh 后,还需将 aidatatang_200zh\corpus\train下的文件全选解压缩

2.<datasets_root>是什麼意思?

假如数据集路径为 D:\data\aidatatang_200zh,那么 <datasets_root>就是 D:\data

3.训练模型显存不足

训练合成器时:将 synthesizer/hparams.py中的batch_size参数调小

//调整前
tts_schedule = [(2,  1e-3,  20_000,  12),   # Progressive training schedule(2,  5e-4,  40_000,  12),   # (r, lr, step, batch_size)(2,  2e-4,  80_000,  12),   #(2,  1e-4, 160_000,  12),   # r = reduction factor (# of mel frames(2,  3e-5, 320_000,  12),   #     synthesized for each decoder iteration)(2,  1e-5, 640_000,  12)],  # lr = learning rate
//调整后
tts_schedule = [(2,  1e-3,  20_000,  8),   # Progressive training schedule(2,  5e-4,  40_000,  8),   # (r, lr, step, batch_size)(2,  2e-4,  80_000,  8),   #(2,  1e-4, 160_000,  8),   # r = reduction factor (# of mel frames(2,  3e-5, 320_000,  8),   #     synthesized for each decoder iteration)(2,  1e-5, 640_000,  8)],  # lr = learning rate

声码器-预处理数据集时:将 synthesizer/hparams.py中的batch_size参数调小

//调整前
### Data Preprocessingmax_mel_frames = 900,rescale = True,rescaling_max = 0.9,synthesis_batch_size = 16,                  # For vocoder preprocessing and inference.
//调整后
### Data Preprocessingmax_mel_frames = 900,rescale = True,rescaling_max = 0.9,synthesis_batch_size = 8,                  # For vocoder preprocessing and inference.

声码器-训练声码器时:将 vocoder/wavernn/hparams.py中的batch_size参数调小

//调整前
# Training
voc_batch_size = 100
voc_lr = 1e-4
voc_gen_at_checkpoint = 5
voc_pad = 2//调整后
# Training
voc_batch_size = 6
voc_lr = 1e-4
voc_gen_at_checkpoint = 5
voc_pad =2

4.碰到RuntimeError: Error(s) in loading state_dict for Tacotron: size mismatch for encoder.embedding.weight: copying a param with shape torch.Size([70, 512]) from checkpoint, the shape in current model is torch.Size([75, 512]).

请参照 issue #37

5.如何改善CPU、GPU占用率?

视情况调整batch_size参数来改善

6.发生 页面文件太小,无法完成操作

请参考这篇文章,将虚拟内存更改为100G(102400),例如:文件放置D盘就更改D盘的虚拟内存

7.什么时候算训练完成?

首先一定要出现注意力模型,其次是loss足够低,取决于硬件设备和数据集。拿本人的供参考,我的注意力是在 18k 步之后出现的,并且在 50k 步之后损失变得低于 0.4 

 

 快速入门(新手)

快速开始 (新手友好版)

本快速开始教程是以Windows为例的,假设不做任何训练(节省几小时甚至几天时间),假设你对python等开发环境也不熟悉,也可能没有支持CUDA的GPU

安装

如果已经确认安装过,请忽略该步骤

  • 拉取本代码库

  • 安装Anacodna, Python 3.8 或更高,参考中文教程,在Anaconda中创建并切换到独立虚拟环境后,进行以下步骤。

  • 安装 PyTorch, 直接官网下载。如果GPU不支持CUDA,请默认选择。

验证本步骤是否成功:在系统任意路径下运行python,进入交互式编程界面后输入 import torch;, 回车, torch.cuda.is_available(), 回车。如果都是成功的话,可以进行下一步。

  • 安装 ffmpeg。 1)下载 选择点击打开链接Windows对应的版本下载 2)解压 ffmpeg-xxxx.zip 文件到指定目录; 3)将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中; 4)进入 cmd,输入 ffmpeg -version,可验证当前系统是否识别 ffmpeg 以及查看 ffmpeg 的版本

  • 运行pip install -r requirements.txt 来安装剩余的必要包。

确保本步骤不报错

  • 安装 webrtcvad 用 pip install webrtcvad-wheels。

确保本步骤不报错

下载社区训练好的模型

在以下选择中下载模型

作者下载链接效果预览
@miven百度网盘 请输入提取码 提取码:2021AI声音模仿,5秒钟克隆你的语音_哔哩哔哩_bilibili

该模型与最新代码有兼容性问题 请查阅 用这里的模型跑出现这个RuntimeError: Error(s) in loading state_dict for Tacotron: size mismatch for encoder.embedding.weight: copying a param with shape torch.Size([70, 512]) from checkpoint, the shape in current model is torch.Size([75, 512]). · Issue #37 · babysor/MockingBird · GitHub 解决

下载完成后,确保 xxx.pt 格式的文件放在代码库的 synthesizer\saved_models文件夹下,saved_models如不存在请新建

运行demo_toolbox

在代码库路径下,运行 python demo_toolbox.py -d .\samples 尝试使用工具箱, 由于没有下载任何数据集,这里的功能比较简单:

  1. 确保界面左边中间的 synthesizer 选择了上一步中 xxx.pt 文件对应的模型。
  2. 点击Record录入你的5秒语音
  3. 输入任意文字
  4. 点击 Synthesizer and vocode 等待效果输出

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想知道如何文字转语音真人发声?这3款工具轻松实现

我们在生活中有很多时候都会遇到需要将文字转语音的情况&#xff0c;例如为自己录制的vlog配音、自制有声小说、朗读某一新闻等等。但是却有许多小伙伴不知道如何实现这些操作&#xff0c;也或者是找不到合适的软件&#xff0c;毕竟现在市面上的工具鱼龙混杂&#xff0c;要找到…

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

手把手教你用JAVA实现“声音复刻”功能&#xff08;复刻你的声音&#xff09;标贝科技 前言 什么是声音复刻&#xff1f; 使用少量的用户声音&#xff0c;短时间内快速为用户量身打造个人定制音色 一、内容太长不愿意看&#xff0c;直接使用系列 声音复刻分为两步 &#xff…

使用20分钟语音数据进行语音复刻

最近做了一些tts方面的工作&#xff0c;其中一项就是音色克隆&#xff0c;调研了许多开源项目&#xff0c;经过对比发现百度的开源项目paddlespeech的效果还不错&#xff0c;项目的活跃度也很高&#xff0c;比较适合初学者或者感兴趣的同学入门。 一、语音克隆模型介绍 目前主…

一种不太聪明的电话语音识别方案

现如今ASR(语音识别技术)发展到什么阶段我不清楚&#xff0c;但识别率肯定是达不到100%的&#xff0c;识别率跟你所采用的识别模型&#xff0c;声音样本丰富程度&#xff0c;和语音文件的音质有关。 如果普通话标准&#xff0c;且语音文件质量可以的情况下&#xff0c;主流的几…

Android 集成科大讯飞语音并实现语音识别

前言&#xff1a;此博客内容有&#xff0c;集成讯飞语音sdk&#xff0c;实现了语音唤醒&#xff0c;在线语音识别&#xff0c;离线语音识别&#xff0c;更新本地离线语音词典 集成讯飞语音SDK 注册账号下载SDK 百度搜索科大讯飞&#xff0c;打开网站&#xff0c;没有账号的根…

语音合成 GAN Vocoders 总览

Loss 函数简称与全称的对应关系 Short NameFull Nameadvadversial lossFMFeature MatchingMSDMulti-Scale Discriminatormr-STFTMulti-resolution STFT lossfmr-STFTfull band Multi-resolution STFT losssmr-STFTsub band Multi-resolution STFT lossMelMel-Spectrogram Loss…

Photon01_Photon Voice 实现远程语音聊天功能

不废话&#xff0c;直接上步骤&#xff01; 第一步&#xff1a; 给预制体Player添加三个组件&#xff0c;参数设置如图所示&#xff1a; 第二步&#xff1a; 创建空物体Voice&#xff0c;给空物体添加两个组件&#xff0c;参数设置如图所示&#xff1a; 第三步&#xff1a; …

Android开发基于科大讯飞实现语音识别

简介 通过使用科大讯飞的API开发Android APP实现语音识别 下载相应SDK 访问https://www.xfyun.cn/?jumplogin进行注册&#xff0c;然后创建一个应用并进行相应SDK下载 添加相应的包 打开刚刚下载的SDK&#xff0c;找到libs&#xff0c;将两个jar包复制到Android工程里 …

手语翻译系统系列之使用旭日X3派实时识别播报手语

一、准备工作 硬件部分&#xff1a;旭日X3派&#xff0c;USB免驱摄像头&#xff0c;电源适配器&#xff0c;烧录Ubuntu系统的SD卡&#xff0c;USB扬声器&#xff0c;显示屏&#xff08;或者VNC/SSH远程连接&#xff09; 软件部分&#xff1a;Thonny IDE集成开发环境 首先&…

android 打字 语音,手机聊天神器不用手写打字 说话秒变文字 允许一点家乡口音 老年人爸妈必备语音输入法...

时代在进步&#xff0c;如今智能手机已风靡街头巷尾。不过老年人对于新生事物的接受能力较差&#xff0c;手机上网沟通交流成为他们“可望而不可及”的奢望&#xff0c;以往老年人对手机的使用仅局限于按键通话这么简单&#xff0c;是不太会用微信、QQ等沟通方式打字聊天的&…

AI读心术

近期&#xff0c;德克萨斯大学奥斯汀分校的神经科学家们展开了一场「AI」实验&#xff0c;利用人工智能聊天机器人ChatGPT&#xff0c;将大脑活动转化为文字信息。 参与实验的志愿者&#xff0c;在进行长达20小时的「训练」后&#xff0c;成功被「AI」识别出正在进行的活动。按…

chatgpt赋能python:Python反转句子——让你的程序搞定转化难题

Python反转句子——让你的程序搞定转化难题 Python作为一门优秀的编程语言&#xff0c;拥有强大的数据处理能力&#xff0c;常被用于数据清洗、数据分析、统计计算等领域。本文将介绍Python反转句子的实现方法&#xff0c;并讨论其在实际应用中的运用场景。 什么是Python反转…

chatgpt赋能python:Python提取名词:利用NLP技术进行文本分析的高效方法

Python提取名词&#xff1a;利用NLP技术进行文本分析的高效方法 当我们需要对大量文本数据进行分析时&#xff0c;提取其中的名词信息是一个很有用的技巧。 Python提供了各种工具和库来进行NLP自然语言处理&#xff0c;帮助我们快速地实现文本分析。 本文将讨论如何使用Python…

生成式人工智能时代:研究机构与工业机构的角色之争

来源&#xff1a;Illustration by IconScout Store from IconScout 作者&#xff1a;刘鹏飞 微软创始人比尔盖茨说人生中让他印象深刻的两次技术革命演示&#xff0c;一次是现在操作系统的先驱“图形用户界面”&#xff0c;另一个就是以ChatGPT为代表的生成式人工智能技术。 一…

chatgpt赋能python:Python有什么好玩的项目

Python 有什么好玩的项目 Python 是一种多用途的编程语言&#xff0c;被广泛应用于网站开发、数据分析、机器学习以及科学计算等领域。但是除了这些实用的场景&#xff0c;Python 也有很多有趣的项目。在这篇文章中&#xff0c;我将介绍几个有趣的 Python 项目&#xff0c;带你…

用 AI 生成漂亮小姐姐(一)——Stable Diffusion 小白搭建教程

最近 AIGC、ChatGPT 等话题持续发酵,热门程度不亚于之前的 “元宇宙”。抖音、小红书到处都是机器对话、AI 绘图的视频。我看见别人生成的漂亮小姐姐图片眼馋得不行,终于按捺不住自己的好奇心,也尝试一下搭建。本文只是简单记录一下搭建过程。 △ 别人生成的漂亮小姐姐 我使…

如何用 GPT-4 帮你写游戏(以24点游戏举例)

目录 给我一个24点游戏 游戏规则 GPT给的代码 ​改进 再改进 最近呢掀起了一阵GPT-4的热潮&#xff0c;很多人都想用GPT-4&#xff0c;这里呢我就打一个广告&#xff08;嘿嘿&#xff09;&#xff0c;如果不知道国内如何使用GPT的&#xff0c;可以看看这个博客&#xff1a;G…

发送Email、接收Email

邮件软件称为MUA&#xff1a;Mail User Agent&#xff0c;意思是给用户服务的邮件代理&#xff1b; 邮件服务器则称为MTA&#xff1a;Mail Transfer Agent&#xff0c;意思是邮件中转的代理&#xff1b; 最终到达的邮件服务器称为MDA&#xff1a;Mail Delivery Agent&#xff0…

Android studio通过lame生成把pcm转成MP3的so库以及音频的录制和播放附源码

1.先新建C项目 2. 在cpp目录下创建目录map3lame(名字随便起) &#xff0c;接下来要用到 3.下载lame 地址lame 最新版本是3.100&#xff0c;解压完成后如下图 把libmp3lame目录中的所有.c和.h文件(注意其他类型的文件和目录不需要)都复制到项目中新建的map3lame目录中&#xff…

香港金曲奖分析(1983-2017 by SIRMAN)

以前的金曲奖就是华语音乐的代表&#xff0c;特别是80、90年代&#xff0c;谭张争霸&#xff0c;四大天王等&#xff0c;虽然近来影响力已不如之前&#xff0c;但让我们来看看1983-2017的获奖名单。数据来源于百度百科“十大劲歌金曲颁奖典礼”&#xff0c;由于名单较多&#x…