Python 3.10下的Bark高质量语音克隆,多语言支持
该项目提供了一种在Python 3.10环境下,利用Bark进行高质量语音克隆的方法,并兼容多种语言的HuBERT模型和定制量化器模型。通过Huggingface模型页面、音频Web UI和在线交互式笔记本,用户可以获取代码实例和实现语音克隆。项目还包括语音输入要求和训练指南,帮助开发者实现语音克隆功能。
这段代码在 Python 3.10 上运行,我没有在其他版本上测试过。某些较老版本可能会有问题。
现在可以实现了。
对于开发者:
对于所有人:
确保你的语音输入中没有以下这些内容:(没有特定顺序)
什么样的提示音频比较好?(没有特定顺序)
from hubert.pre_kmeans_hubert import CustomHubert import torchaudio # 加载 HuBERT 模型, # 默认配置下,checkpoint_path 应该使用 data/models/hubert/hubert.pt hubert_model = CustomHubert(checkpoint_path='path/to/checkpoint') # 运行模型从音频文件中提取语义特征,这里的 wav 是你的音频文件 wav, sr = torchaudio.load('path/to/wav') # 这是你加载 wav 的地方,可以使用 soundfile 或 torchaudio if wav.shape[0] == 2: # 如果需要,从立体声转换为单声道 wav = wav.mean(0, keepdim=True) semantic_vectors = hubert_model.forward(wav, input_sample_hz=sr)
import torch from hubert.customtokenizer import CustomTokenizer # 从检查点加载 CustomTokenizer 模型 # 使用默认配置,你可以使用 Huggingface 上的预训练模型 # 使用 HuBERTManager 的默认设置,这将在 data/models/hubert/tokenizer.pth tokenizer = CustomTokenizer.load_from_checkpoint('data/models/hubert/tokenizer.pth') # 自动使用正确的层 # 处理前面 HuBERT 运行的语义向量(这可以批量处理,因此你可以发送整个 HuBERT 输出) semantic_tokens = tokenizer.get_token(semantic_vectors) # 恭喜!你现在有了可以在讲者提示文件中使用的语义令牌。
只需运行训练命令。
一种简单的方法是使用我的脚本:bark-data-gen 创建语义数据和训练用的 wav。但是请记住,创建 wav 的时间通常和创建语义时间差不多甚至更长。因此,这可能需要一些时间来生成。
例如,如果你有一个包含音频文件的 zip 数据集,一个 zip 用于语义,一个用于 wav 文件,放在一个名为 "Literature" 的文件夹中
你应该运行 process.py --path Literature --mode prepare
将所有数据提取到一个目录
你应该运行 process.py --path Literature --mode prepare2
以创建 HuBERT 语义向量,准备训练
你应该运行 process.py --path Literature --mode train
进行训练
当你的模型训练足够时,你可以运行 process.py --path Literature --mode test
以测试最新的模型。