1 openvoicev2介绍
语音克隆技术
近年来取得了显著进展,但现有方法通常存在着局限性,例如无法灵活控制语音风格、需要大量多语言数据进行训练、生成速度慢等等。为了克服这些挑战,MyShell.ai团队推出了全新的语音克隆技术OpenVoiceV2,它能够在无需额外训练的情况下,仅凭少量参考音频,就能够克隆任何人的声音,并支持多种语音风格控制,以及快速高效的跨语言语音生成。
论文地址:http://arxiv.org/pdf/2312.01479
代码地址:https://github.com/myshell-ai/OpenVoice
模型地址:https://huggingface.co/myshell-ai/OpenVoiceV2/tree/main
1.1 技术特点
OpenVoiceV2拥有以下关键技术特点:
- 零样本跨语言语音克隆
OpenVoiceV2能够实现零样本跨语言语音克隆,即即使目标语言不在模型的训练数据集中,也可以通过少量参考音频进行克隆。这得益于OpenVoiceV2的独特设计,它将语音克隆过程分解为不同的子任务,并采用了一种基于语音特征的转换方式。
- 灵活的语音风格控制
OpenVoiceV2支持多种语音风格控制,例如情感、口音、节奏、停顿和语调等等。用户可以根据自己的需求,自由控制生成的语音风格,为语音合成
带来更多可能性。
- 快速高效的语音生成
OpenVoiceV2采用了高效的模型架构,并经过优化,能够在单卡A10G GPU上实现12倍实时语音生成速度,这意味着它只需85毫秒就能生成1秒的语音。
- 多语言支持
OpenVoiceV2原生支持英语、西班牙语、法语、中文、日语和韩语,这意味着用户可以使用该技术生成多种语言的语音。
- 开源且免费商用
为了促进语音合成技术的发展,OpenVoiceV2的代码和模型都已公开发布,并采用MIT许可证,这意味着用户可以自由使用该技术进行研究或商业应用。
1.2 性能表现
OpenVoiceV2在语音克隆方面展现出优异的性能:
- OpenVoiceV2能够准确地克隆参考音色,并生成多种语言和口音的语音。
- OpenVoiceV2支持多种语音风格控制,并能够保持高保真度。
- OpenVoiceV2的语音生成速度非常快,能够满足实时应用的需求。
1.3 应用场景
OpenVoiceV2的强大功能和易用性使其在众多应用场景中具有广阔的应用前景:
- 媒体内容创作: OpenVoiceV2可以帮助用户生成不同角色的声音,用于配音、朗读、制作音频节目等。
- 定制化聊天机器人: OpenVoiceV2可以为聊天机器人提供更自然、更人性化的语音,提升用户体验。
- 多模态
交互: OpenVoiceV2可以用于构建更加智能、更加自然的多模态交互系统,例如根据用户的文字描述生成语音,或将图像转化为语音等等。 - 教育和娱乐: OpenVoiceV2可以用于制作语音教材、游戏、动画等,为教育和娱乐领域提供更具吸引力的内容。
2 openvoicev2本地部署及使用
3.1 conda环境准备
conda环境准备详见:annoconda
3.2 运行环境构建
3.1 创建运行环境
conda create -n openvoice python==3.9
conda activate openvoice
3.2 安装MeloTTS
git clone https://github.com/myshell-ai/MeloTTS.git
cd MeloTTS
修改依赖requirements.txt如下:
txtsplit==1.0.0
torch==2.3.1
torchaudio==2.3.1
boto3==1.34.0
botocore==1.34.0
cached_path==1.6.0
transformers==4.27.4
num2words==0.5.12
unidic_lite==1.0.8
unidic==1.1.0
mecab-python3==1.0.9
pykakasi==2.2.1
fugashi==1.3.0
g2p_en==2.1.0
anyascii==0.3.2
jamo==0.4.1
gruut[de,es,fr]==2.2.3
g2pkk>=0.1.1
librosa==0.9.1
pydub==0.25.1
eng_to_ipa==0.0.2
inflect==7.0.0
unidecode==1.3.7
pypinyin==0.50.0
cn2an==0.5.22
jieba==0.42.1
gradio==3.36.0
langid==1.1.6
tqdm
tensorboard==2.16.2
loguru==0.7.2
执行安装命令:
pip install -e .
更改typer版本:
pip install typer==0.11.0
执行下载命令:
python -m unidic download
注意:不用使用文档中的命令安装(如下所示),否则会陷入无限的依赖版本尝试
pip install git+https://github.com/myshell-ai/MeloTTS.git
3.3 安装openvoice
git clone https://github.com/myshell-ai/OpenVoice
cd OpenVoice
pip install -r requirements.txt
3.4 下载模型
解压到checkpoints_v2文件夹下
3.5 创建并运行脚本代码
根目录下创建脚本文件:deni_part3.py,内容如下:
import os
import torch
from openvoice import se_extractor
from openvoice.api import ToneColorConverter
ckpt_converter = 'checkpoints_v2/converter'
device = "cuda:0" if torch.cuda.is_available() else "cpu"
output_dir = 'outputs_v2'
tone_color_converter = ToneColorConverter(f'{ckpt_converter}/config.json', device=device)
tone_color_converter.load_ckpt(f'{ckpt_converter}/checkpoint.pth')
os.makedirs(output_dir, exist_ok=True)
reference_speaker = 'resources/example_reference.mp3' # This is the voice you want to clone
target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, vad=False)
from melo.api import TTS
texts = {
'EN_NEWEST': "Did you ever hear a folk tale about a giant turtle?", # The newest English base speaker model
'EN': "Did you ever hear a folk tale about a giant turtle?",
'ES': "El resplandor del sol acaricia las olas, pintando el cielo con una paleta deslumbrante.",
'FR': "La lueur dorée du soleil caresse les vagues, peignant le ciel d'une palette éblouissante.",
'ZH': "在这次vacation中,我们计划去Paris欣赏埃菲尔铁塔和卢浮宫的美景。",
'JP': "彼は毎朝ジョギングをして体を健康に保っています。",
'KR': "안녕하세요! 오늘은 날씨가 정말 좋네요.",
}
src_path = f'{output_dir}/tmp.wav'
# Speed is adjustable
speed = 1.0
for language, text in texts.items():
model = TTS(language=language, device=device)
speaker_ids = model.hps.data.spk2id
for speaker_key in speaker_ids.keys():
speaker_id = speaker_ids[speaker_key]
speaker_key = speaker_key.lower().replace('_', '-')
source_se = torch.load(f'checkpoints_v2/base_speakers/ses/{speaker_key}.pth', map_location=device)
model.tts_to_file(text, speaker_id, src_path, speed=speed)
save_path = f'{output_dir}/output_v2_{speaker_key}.wav'
# Run the tone color converter
encode_message = "@MyShell"
tone_color_converter.convert(
audio_src_path=src_path,
src_se=source_se,
tgt_se=target_se,
output_path=save_path,
message=encode_message)
python deni_part3.py运行代码后,生成的音频文件存储在outputs_v2文件夹下。
标签:converter,样本,speaker,OpenVoiceV2,语音,path,克隆技术,se From: https://blog.csdn.net/lsb2002/article/details/141723057