VALL-E X:多语言文本到语音合成和语音克隆 🔊

English |中文Microsoft VALL-E X零样本 TTS 模型
的开源实现。我们向公众发布经过训练的模型以供研究或应用程序使用。

vallex-框架

VALL-E X 是微软提出的一个令人惊叹的多语言文本转语音 (TTS) 模型。虽然微软最初在他们的研究论文中发布了这一消息,但他们没有发布任何代码或预训练模型。认识到这项技术的潜力和价值,我们的团队接受了重现结果并训练我们自己的模型的挑战。我们很高兴与社区分享我们训练好的VALL-E X模型,让大家体验下一代TTS的强大!🎧

有关模型的更多详细信息请参阅模型卡。

📖 快速索引

  • 🚀 更新
  • 📢 特点
  • 💻 安装
  • 🎧 演示
  • 🐍 用法
  • ❓ 常见问题解答
  • 🧠 待办事项

🚀 更新

2023.09.10

  • 新增AR解码器批量解码,生成结果更稳定。

2023.08.30

  • 将EnCodec解码器替换为Vocos解码器,提高了音频质量。(感谢@v0xie)

2023.08.23

  • 添加了长文本生成。

2023.08.20

  • 添加了中文README。

2023.08.14

  • 预训练的 VALL-E X 检查点现已发布。在这里下载

💻 安装

使用 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

注意:如果要进行提示,需要安装ffmpeg并将其文件夹添加到环境变量PATH中。

当您第一次运行该程序时,它会自动下载相应的模型。

如果下载失败并报错,请按照以下步骤手动下载模型。

(请注意文件夹大小写)

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

  2. vallex-checkpoint.pt检查文件夹中是否有文件checkpointsvallex-checkpoint.pt如果没有,请从此处手动下载文件并将其放入checkpoints文件夹中。

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

  4. medium.pt检查文件夹中是否有文件whispermedium.pt如果没有,请从此处手动下载文件并将其放入whisper文件夹中。

📢 特点

VALL-E X 配备了尖端功能:

  1. 多语言 TTS:以三种语言(英语、中文和日语)说话,具有自然且富有表现力的语音合成。

  2. 零样本语音克隆:注册一个看不见的说话者的 3~10 秒短录音,然后观看 VALL-E X 创建听起来像他们一样的个性化、高品质语音!

参见示例
  1. 言语情绪控制:体验情绪的力量!VALL-E X 可以合成与所提供的声音提示具有相同情感的语音,为您的音频添加额外的表现力。
参见示例
  1. 零样本跨语言语音合成:带领单语使用者踏上语言之旅!VALL-E X 可以用另一种语言生成个性化语音,而不会影响流畅性或口音。以下是日语演讲者的中文和英文演讲。🇯🇵🗣
参见示例
  1. 口音控制:发挥口音创意!VALL-E X 允许您尝试不同的口音,例如用英语口音说中文,反之亦然。🇨🇳💬
参见示例
  1. 声学环境维护:不需要完全干净的音频提示!VALL-E X 适应输入的声学环境,使语音生成感觉自然且身临其境。
参见示例

探索我们的演示页面以获取更多示例!

🐍 Python 中的用法

🪑 基础知识

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)
 汉堡包.webm 

🌎 外语

此 VALL-E X 实施还支持中文和日文。所有三种语言都具有同样出色的性能!

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 

📼 语音预设

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")
 烟熏网 

🎙语音克隆

VALL-E X支持语音克隆!您可以用任何人、角色甚至您自己的声音制作语音提示,并像其他语音预设一样使用它。
要进行语音提示,您需要提供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 

🎢用户界面

对代码不满意?没问题!我们还为 VALL-E X 创建了一个用户友好的图形界面。它可以让您轻松地与模型交互,使语音克隆和多语言语音合成变得轻而易举。
您可以通过以下命令启动 UI:

python -X utf8 launch-ui.py

🛠️ 硬件和推理速度

VALL-E X 在 CPU 和 GPU(pytorch 2.0+CUDA 11.7 和 CUDA 12.0)上运行良好。

6GB 的 GPU VRAM 足以运行 VALL-E X,无需卸载。

⚙️详情

VALL-E X 类似于Bark、VALL-E和AudioLM ,它通过预测EnCodec量化的音频标记来生成 GPT 风格的音频。 与树皮
相比:

  • 重量轻:3️⃣✖更小,
  • 高效:4️⃣✖ 更快,
  • 中文和日文质量更好
  • 跨语言演讲,没有外国口音
  • 轻松的语音克隆
  • 语言较少
  • 没有音乐/音效的特殊标记

支持的语言

语言 地位
英语(en)
日语 (ja)
简体中文 (zh)

❓ 常见问题解答

训练代码在哪里?

  • 力腾的val-e几乎什么都有。没有计划发布我们的训练代码,因为Lifeiteng的实现没有区别。

在哪里可以下载模型检查点?

  • 当您第一次运行程序时,我们通常wget会将模型下载到目录中。./checkpoints/
  • 如果第一次下载失败,请从此链接手动下载,并将文件放在目录下./checkpoints/

我需要多少显存?

  • 6GB GPU VRAM - 几乎所有 NVIDIA GPU 都满足要求。

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

  • 随着序列长度的增加,Transformer 的计算复杂度呈二次方增加。因此,所有训练时间都控制在 22 秒以内。请确保音频提示和生成的音频的总长度小于 22 秒,以确保可接受的性能。

更多内容待添加...

🧠 待办事项

  • 添加中文README
  • 长文本生成
  • 用 Vocos 解码器替换 Encodec 解码器
  • 微调以获得更好的语音适应
  •  .bat适合非 python 用户的脚本
  • 待补充...

🙏 欣赏

  • VALL-E X 纸的绝妙创意
  • 生命腾相关训练代码的val-e
  • 赞扬神经编解码器 TTS 模型中令人惊叹的开创性工作

⭐️表达你的支持

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

📜 许可证

VALL-E X 根据MIT 许可证获得许可。


有疑问或需要帮助吗?欢迎提出问题或加入我们的Discord

快乐的声音克隆!🎤