VALL-E X:多语言文本到语音合成和语音克隆 🔊
English |中文Microsoft VALL-E X零样本 TTS 模型
的开源实现。我们向公众发布经过训练的模型以供研究或应用程序使用。
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中。
当您第一次运行该程序时,它会自动下载相应的模型。
如果下载失败并报错,请按照以下步骤手动下载模型。
(请注意文件夹大小写)
-
checkpoints
检查安装目录下是否有文件夹。如果没有,请在安装目录中手动创建一个checkpoints
文件夹 ( )。./checkpoints/
-
vallex-checkpoint.pt
检查文件夹中是否有文件checkpoints
。vallex-checkpoint.pt
如果没有,请从此处手动下载文件并将其放入checkpoints
文件夹中。 -
whisper
检查安装目录下是否有文件夹。如果没有,请在安装目录中手动创建一个whisper
文件夹 ( )。./whisper/
-
medium.pt
检查文件夹中是否有文件whisper
。medium.pt
如果没有,请从此处手动下载文件并将其放入whisper
文件夹中。
📢 特点
VALL-E X 配备了尖端功能:
-
多语言 TTS:以三种语言(英语、中文和日语)说话,具有自然且富有表现力的语音合成。
-
零样本语音克隆:注册一个看不见的说话者的 3~10 秒短录音,然后观看 VALL-E X 创建听起来像他们一样的个性化、高品质语音!
参见示例
- 言语情绪控制:体验情绪的力量!VALL-E X 可以合成与所提供的声音提示具有相同情感的语音,为您的音频添加额外的表现力。
参见示例
- 零样本跨语言语音合成:带领单语使用者踏上语言之旅!VALL-E X 可以用另一种语言生成个性化语音,而不会影响流畅性或口音。以下是日语演讲者的中文和英文演讲。🇯🇵🗣
参见示例
- 口音控制:发挥口音创意!VALL-E X 允许您尝试不同的口音,例如用英语口音说中文,反之亦然。🇨🇳💬
参见示例
- 声学环境维护:不需要完全干净的音频提示!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
快乐的声音克隆!🎤