当前位置:   article > 正文

深度学习系列68:声音克隆项目OpenVoice和FishSpeech_openvoice.api

openvoice.api

1. OpenVoice

1.1 介绍

OpenVoice 是 myshell ai 开源的一款基于人工智能技术的语音克隆工具。其核心功能是通过提供发言者的短音频片段(参考语音),实现声音的高效克隆。这意味着您可以使用OpenVoice来克隆任何人的声音,而且不限于特定语言。无论您是想要模仿某位名人的声音,还是需要在不同语言之间进行语音转换,OpenVoice都能够满足您的需求。
OpenVoice还可以实现音色克隆和控制。
项目安装还算简单,首先安装项目文件夹:git clone https://github.com/myshell-ai/OpenVoice.git
然后安装依赖包:pip install -r requirements.txt
然后下载模型:https://link.zhihu.com/?target=https%3A//myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip。如果连不上,也可以去hf镜像站下载:https://hf-mirror.com/myshell-ai/OpenVoice

1.2 语音拷贝代码

import os
import torch
from openvoice import se_extractor
from openvoice.api import BaseSpeakerTTS, ToneColorConverter
from pydub import AudioSegment,playback
ckpt_base = 'checkpoints/base_speakers/EN'
ckpt_converter = 'checkpoints/converter'
device="cuda:0" if torch.cuda.is_available() else "cpu"
output_dir = 'outputs'

base_speaker_tts = BaseSpeakerTTS(f'{ckpt_base}/config.json', device=device)
base_speaker_tts.load_ckpt(f'{ckpt_base}/checkpoint.pth')

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)
source_se = torch.load(f'{ckpt_base}/en_default_se.pth').to(device)
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, target_dir='processed', vad=True)
save_path = f'{output_dir}/output_en_default.wav'

# Run the base speaker tts。这里也可以换成你自己的tts
text = "hello china. Today is very good."
src_path = f'{output_dir}/tmp.wav'
base_speaker_tts.tts(text, src_path, speaker='default', language='English', speed=1.0)

# 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)
playback.play(AudioSegment.from_wav(save_path))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

2. FishSpeech

2.1 介绍

这个项目导出的声音几乎可以以假乱真了,地址为https://kkgithub.com/fishaudio/fish-speech。总的来说, 推理分为几个部分:
1.给定一段 ~10 秒的语音, 将它用 VQGAN 编码.
2.将编码后的语义 token 和对应文本输入语言模型作为例子.(模仿音色)
3.给定一段新文本, 让模型生成对应的语义 token.
4.将生成的语义 token 输入 VQGAN 解码, 生成对应的语音.

在这里插入图片描述

2.2 如何使用

首先下载模型HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2
步骤1:对样例语音进行VQGAN编码,得到fake.npy。如果你打算让模型随机选择音色, 你可以跳过这一步。

python tools/vqgan/inference.py \
    -i "paimon.wav" \
    --checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth"
  • 1
  • 2
  • 3

步骤2和3:参考样例,将新文本进行VQGAN编码。如果你打算让模型随机选择音色, 可以删除prompt。其中–compile用来融合 cuda 内核以实现更快的推理,cpu上需要注释掉。此外,对于不支持bf16的 GPU, 可能需要使用 --half 参数。该命令会在工作目录下创建 codes_N 文件, 其中 N 是从 0 开始的整数.

python tools/llama/generate.py \
    --text "要转换的文本" \
    --prompt-text "你的参考文本" \
    --prompt-tokens "fake.npy" \
    --checkpoint-path "checkpoints/fish-speech-1.2" \
    --num-samples 2 \
    --compile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

步骤4. VQGAN 解码,将token转换为语音

python tools/vqgan/inference.py \
    -i "codes_0.npy" \
    --checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth"
  • 1
  • 2
  • 3

也可以启动http API来执行上面的步骤:

python -m tools.api \
    --listen 0.0.0.0:8000 \
    --llama-checkpoint-path "checkpoints/fish-speech-1.2" \
    --decoder-checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" \
    --decoder-config-name firefly_gan_vq
  • 1
  • 2
  • 3
  • 4
  • 5

下面是使用tools/post_api.py发送请求的示例。

python -m tools.post_api \
    --text "要输入的文本" \
    --reference_audio "参考音频路径" \
    --reference_text "参考音频的文本内容"
    --streaming True
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/906841
推荐阅读
相关标签
  

闽ICP备14008679号