吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6867|回复: 58
收起左侧

[Python 转载] VALL-E X:仅需3秒音频实现声音克隆!

     关闭 [复制链接]
天空宫阙 发表于 2023-9-6 19:53

写在前面

原文链接 :https://github.com/Plachtaa/VALL-E-X/blob/master/README-ZH.md

B站效果演示视频: https://www.bilibili.com/video/BV1Dh4y1K7qJ/
GitHub项目地址:https://github.com/Plachtaa/VALL-E-X
Hugging Face在线体验: https://huggingface.co/spaces/Plachta/VALL-E-X
Google Colab在线体验:https://colab.research.google.com/drive/1yyD_sz531QntLKowMHo-XxorsFBCfKul?usp=sharing

微软VALL-E X 零样本语音合成模型的开源实现.预训练模型现已向公众开放,供研究或应用使用。

vallex_framework.jpg

VALL-E X 是一个强大而创新的多语言文本转语音(TTS)模型,最初由微软发布。虽然微软最初在他们的研究论文中提出了该概念,但并未发布任何代码或预训练模型。我们认识到了这项技术的潜力和价值,复现并训练了一个开源可用的VALL-E X模型。我们很乐意与社区分享我们的预训练模型,让每个人都能体验到次世代TTS的威力。 🎧

更多细节请查看 model card.

📖 目录

🚀 Updates

2023.08.30

  • 将EnCodec解码器替换成了Vocos解码器,提升了音质。 (感谢@v0xie)

2023.08.23

  • 加入了长文本生成功能

2023.08.20

  • 加入了中文版README

2023.08.14

  • 预训练模型权重已发布,从这里下载。

💻 本地安装

使用pip安装,推荐使用Python 3.10,CUDA 11.7 ~ 12.0,PyTorch 2.0+

git clone https://github.com/Plachtaa/VALL-E-X.git
cd VALL-E-X
pip install -r requirements.txt

注意:如果需要制作prompt,需要安装 ffmpeg 并将其所在文件夹加入到环境变量PATH中

第一次运行程序时,会自动下载相应的模型。如果下载失败并报错,请按照以下步骤手动下载模型。

(请注意目录和文件夹的大小写)

1.检查安装目录下是否存在checkpoints文件夹,如果没有,在安装目录下手动创建checkpoints文件夹(./checkpoints/)。

2.检查checkpoints文件夹中是否有vallex-checkpoint.pt文件。如果没有,请从这里
手动下载vallex-checkpoint.pt文件并放到checkpoints文件夹里。

3.检查安装目录下是否存在whisper文件夹,如果没有,在安装目录下手动创建whisper文件夹(./whisper/)。

4.检查whisper文件夹中是否有medium.pt文件。如果没有,请从这里
手动下载medium.pt文件并放到whisper文件夹里。

🎧 在线Demo

如果你不想在本地安装,你可以在线体验VALL-E X的功能,点击下面的任意一个链接即可开始体验。
<br>
Open in Spaces
Open In Colab

📢 功能特点

VALL-E X 配备有一系列尖端功能:

  1. 多语言 TTS: 可使用三种语言 - 英语、中文和日语 - 进行自然、富有表现力的语音合成。

  2. 零样本语音克隆: 仅需录制任意说话人的短短的 3~10 秒录音,VALL-E X 就能生成个性化、高质量的语音,完美还原他们的声音。

<details>
<summary><h5>查看示例</h5></summary>

prompt.webm

output.webm

</details>

  1. 语音情感控制: VALL-E X 可以合成与给定说话人录音相同情感的语音,为音频增添更多表现力。

<details>
<summary><h5>查看示例</h5></summary>

https://github.com/Plachtaa/VALL-E-X/assets/112609742/56fa9988-925e-4757-82c5-83ecb0df6266

https://github.com/Plachtaa/VALL-E-X/assets/112609742/699c47a3-d502-4801-8364-bd89bcc0b8f1

</details>

  1. 零样本跨语言语音合成: VALL-E X 可以合成与给定说话人母语不同的另一种语言,在不影响口音和流利度的同时,保留该说话人的音色与情感。以下是一个使用日语母语者进行英文与中文合成的样例: 🇯🇵 🗣

<details>
<summary><h5>查看示例</h5></summary>

jp-prompt.webm

en-output.webm

zh-output.webm

</details>

  1. 口音控制: VALL-E X 允许您控制所合成音频的口音,比如说中文带英语口音或反之。 🇨🇳 💬

<details>
<summary><h5>查看示例</h5></summary>

en-prompt.webm

zh-accent-output.webm

en-accent-output.webm

</details>

  1. 声学环境保留: 当给定说话人的录音在不同的声学环境下录制时,VALL-E X 可以保留该声学环境,使合成语音听起来更加自然。

<details>
<summary><h5>查看示例</h5></summary>

noise-prompt.webm

noise-output.webm

</details>

你可以访问我们的demo页面 来浏览更多示例!

💻 Python中的使用方法

<details open>
<summary><h3>🪑 基本使用</h3></summary>

from utils.generation import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
from IPython.display import Audio

# download and load all models
preload_models()

# generate audio from text
text_prompt = """
Hello, my name is Nose. And uh, and I like hamburger. Hahaha... But I also have other interests such as playing tactic toast.
"""
audio_array = generate_audio(text_prompt)

# save audio to disk
write_wav("vallex_generation.wav", SAMPLE_RATE, audio_array)

# play text in notebook
Audio(audio_array, rate=SAMPLE_RATE)

hamburger.webm

</details>

<details open>
<summary><h3>🌎 多语言</h3></summary>
<br>
该VALL-E X实现支持三种语言:英语、中文和日语。您可以通过设置language参数来指定语言。默认情况下,该模型将自动检测语言。
<br>

text_prompt = """
    チュソクは私のお気に入りの祭りです。 私は数日間休んで、友人や家族との時間を過ごすことができます。
"""
audio_array = generate_audio(text_prompt)

vallex_japanese.webm

注意:即使在一句话中混合多种语言的情况下,VALL-E X也能完美地控制口音,但是您需要手动标记各个句子对应的语言以便于我们的G2P工具识别它们。

text_prompt = """
    [EN]The Thirty Years' War was a devastating conflict that had a profound impact on Europe.[EN]
    [ZH]这是历史的开始。 如果您想听更多,请继续。[ZH]
"""
audio_array = generate_audio(text_prompt, language='mix')

vallex_codeswitch.webm

</details>

<details open>
<summary><h3>📼 预设音色</h3></summary>

我们提供十几种说话人音色可直接VALL-E X使用! 在这里浏览所有可用音色。

VALL-E X 尝试匹配给定预设音色的音调、音高、情感和韵律。该模型还尝试保留音乐、环境噪声等。

text_prompt = """
I am an innocent boy with a smoky voice. It is a great honor for me to speak at the United Nations today.
"""
audio_array = generate_audio(text_prompt, prompt="dingzhen")

smoky.webm

</details>

<details open>
<summary><h3>🎙声音克隆</h3></summary>

VALL-E X 支持声音克隆!你可以使用任何人,角色,甚至是你自己的声音,来制作一个音频提示。在你使用该音频提示时,VALL-E X 将会使用与其相似的声音来合成文本。
<br>
你需要提供一段3~10秒长的语音,以及该语音对应的文本,来制作音频提示。你也可以将文本留空,让Whisper模型为你生成文本。

VALL-E X 尝试匹配给定音频提示的音调、音高、情感和韵律。该模型还尝试保留音乐、环境噪声等。

from utils.prompt_making import make_prompt

### Use given transcript
make_prompt(name="paimon", audio_prompt_path="paimon_prompt.wav",
                transcript="Just, what was that? Paimon thought we were gonna get eaten.")

### Alternatively, use whisper
make_prompt(name="paimon", audio_prompt_path="paimon_prompt.wav")

来尝试一下刚刚做好的音频提示吧!

from utils.generation import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav

# download and load all models
preload_models()

text_prompt = """
Hey, Traveler, Listen to this, This machine has taken my voice, and now it can talk just like me!
"""
audio_array = generate_audio(text_prompt, prompt="paimon")

write_wav("paimon_cloned.wav", SAMPLE_RATE, audio_array)

paimon_prompt.webm

paimon_cloned.webm

</details>

<details open>
<summary><h3>🎢用户界面</h3></summary>

如果你不擅长代码,我们还为VALL-E X创建了一个用户友好的图形界面。它可以让您轻松地与模型进行交互,使语音克隆和多语言语音合成变得轻而易举。
<br>
使用以下命令启动用户界面:

python -X utf8 launch-ui.py

</details>

🛠️ 硬件要求及推理速度

VALL-E X 可以在CPU或GPU上运行 (pytorch 2.0+, CUDA 11.7 ~ CUDA 12.0).

若使用GPU运行,你需要至少6GB的显存。

⚙️ Details

VALL-E X 与 Bark, VALL-E and AudioLM类似, 使用GPT风格的模型以自回归方式预测量化音频token,并由EnCodec解码.
<br>
Bark 相比:

  • 轻量: 3️⃣ ✖ 更小,
  • 快速: 4️⃣ ✖ 更快,
  • 中文&日文的更高质量
  • 跨语言合成时没有外国口音
  • 开放且易于操作的声音克隆
  • 支持的语言较少
  • 没有用于合成音乐及特殊音效的token

支持的语言

语言 状态
英语 (en)
日语 (ja)
中文 (zh)

❓ FAQ

在哪里可以下载checkpoint?

  • 当您第一次运行程序时,我们使用wget将模型下载到./checkpoints/目录里。
  • 如果第一次运行时下载失败,请从这里手动下载模型,并将文件放在./checkpoints/里。

需要多少显存?

  • 6GB 显存(GPU VRAM) - 几乎所有NVIDIA GPU都满足要求.

为什么模型无法生成长文本?

  • 当序列长度增加时,Transformer的计算复杂度呈二次方增长。因此,所有训练音频都保持在22秒以下。请确保音频提示(audio prompt)和生成的音频的总长度小于22秒以确保可接受的性能。

更多...

🧠 待办事项

  • [x] 添加中文 README
  • [x] 长文本生成
  • [x] 用Vocos解码器替换Encodec解码器
  • [ ] 微调以实现更好的语音自适应
  • [ ] 给非python用户的.bat脚本
  • [ ] 更多...

🙏 感谢

⭐️ 表示出你的支持

如果您觉得VALL-E X有趣且有用,请在GitHub上给我们一颗星! ⭐️ 它鼓励我们不断改进模型并添加令人兴奋的功能。

📜 License

VALL-E X 使用 MIT License.


有问题或需要帮助? 可以随便 open an issue 或加入我们的 Discord

Happy voice cloning! 🎤

免费评分

参与人数 15吾爱币 +15 热心值 +12 收起 理由
ghoob321 + 1 + 1 热心回复!
love008 + 1 + 1 谢谢@Thanks!
leetyt + 1 谢谢@Thanks!
wuaiwyr093 + 1 用心讨论,共获提升!
jwl52 + 1 我很赞同!
lsxon + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
某天大魔王 + 1 + 1 不明觉厉。科幻起步阶段
xlln + 1 + 1 我很赞同!
Tonyha7 + 2 + 1 用心讨论,共获提升!
yuechu41 + 1 谢谢@Thanks!
viklion + 1 + 1 谢谢@Thanks!
23168 + 1 + 1 谢谢@Thanks!
不知道改成啥 + 1 + 1 谢谢@Thanks!
corbiehades + 1 + 1 得学习学习

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kure80 发表于 2023-10-11 10:08
测试了,我个人觉得效果不是很好,可能whisper识别出来,没有标点,导致后续的语音糊在一起。有空再让小孩子读一段话试试。
skzhaixing 发表于 2023-9-7 08:51
这个很可怕啊   眼见不一定为真,耳听也是虚的  那两个加一块   你让我怎么分辨
ysjd22 发表于 2023-9-6 20:24
xixicoco 发表于 2023-9-6 20:32
这个牛逼啊,直接就可以模仿人的声音的
moruye 发表于 2023-9-6 21:12
感谢分享,捣鼓捣鼓
yexin18 发表于 2023-9-6 22:31
只用3-10秒的录音就能生成?? 这也太夸张了吧
hxd97244 发表于 2023-9-6 22:50
收藏,慢慢研究
gywuxia 发表于 2023-9-6 23:04
感谢是感兴趣,下完vall,然后其他就蒙圈了,不知道咋操作了
LuckyClover 发表于 2023-9-6 23:06
牛批啊大佬
不带口罩 发表于 2023-9-6 23:16
试了一下,效果一般。
Natu 发表于 2023-9-6 23:55
从今往后,法院将不再采用录音作为辅助证据……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 20:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表