<>2024年7月5日:最新AR检查点发布:输出稳定性更高。非常大的更新即将推出!
这是 CAMB.AI 的 MARS5 英语语音模型 (TTS) 的存储库。
该模型遵循两级 AR-NAR 管道,具有独特新颖的 NAR 组件(请参阅架构中的更多信息)。
只需 5 秒的音频和一段文本,MARS5 就可以生成语音,即使是体育评论、动漫等韵律困难且多样化的场景。看看我们的演示:
在这里观看完整视频:
图:MARS5的高层架构流程。给定文本和参考音频,通过自回归变压器模型获得粗略 (L0) 编码器语音特征。然后,在多项 DDPM 模型中对文本、参考和粗略特征进行细化,以生成剩余的编码器码本值。然后对 DDPM 的输出进行声码处理以产生最终的音频。
由于该模型是在原始音频和字节对编码文本上进行训练的,因此可以通过标点符号和大写等内容进行控制。例如,要添加停顿,请在记录中的该部分添加逗号。或者,为了强调某个单词,请将其在记录中以大写字母表示。这提供了一种相当自然的方式来指导生成的输出的韵律。
使用 2-12 秒之间的音频参考文件指定说话者身份,长度约为 6 秒可提供最佳结果。此外,通过提供参考的转录本,MARS5 使人们能够进行“深度克隆”,从而提高克隆和输出的质量,但代价是生成音频的时间要长一些。有关此以及其他性能和模型详细信息的更多详细信息,请参阅文档文件夹。
我们使用torch.hub
来轻松加载模型——无需克隆存储库。执行推理的步骤很简单:
使用 pip 安装:
要求:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(可选)从 Huggingface 加载模型(确保存储库已克隆)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = ""
注意:参考成绩单是可选的。如果您想进行深度克隆,请通过它。
MARS5 支持两种推理:一种浅层快速推理,您不需要参考的转录本(我们称之为浅克隆),另一种较慢但通常质量更高的方式,我们称之为深度克隆。要使用深度克隆,您需要提示脚本。有关详细信息,请参阅模型架构。
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
就是这样!这些默认设置提供了相当好的结果,但您可以随意调整推理设置以优化特定用例的输出。有关所有不同推理设置的信息和文档,请参阅InferenceConfig
代码或演示笔记本。
获得最佳质量的一些提示:
从 DockerHub 拉取
您可以直接从我们的 DockerHub 页面拉取 docker 镜像。
自己构建
您可以通过运行以下命令从此存储库中提供的 Dockerfile 构建自定义映像。
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
注意:此映像应用作基础映像,您可以在 Dockerfile 或 docker-compose 中添加自定义推理脚本。直接生成输出的图像将很快添加到 Docker Hub 并作为此存储库中的 Dockerfiles
检查站
MARS5 的检查点在此 github 存储库的发布选项卡下提供。我们提供两个检查点:
'vocab'
键下的每个检查点中,并遵循与保存的 minbpe 分词器大致相同的格式。检查点以 pytorch .pt
检查点和 safetensors .safetensors
检查点的形式提供。默认情况下, torch.hub.load()
加载 safetensors 版本,但您可以使用torch.hub.load()
调用中的ckpt_format='safetensors'
或ckpt_format='pt'
参数指定您喜欢的检查点版本。例如强制安全张量格式:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
或者在加载检查点时强制使用 pytorch .pt
格式:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
硬件要求:
您必须能够在 GPU 上存储至少 750M+450M 参数,并使用 750M 活动参数进行推理。
如果您没有必要的硬件要求,只想在应用程序中使用 MARS5,您可以通过我们的 API 使用它。如果您需要一些额外的积分来测试您的用例,请随时联系[email protected]
。
MARS5 目前并不完美,我们正在努力提高其质量、稳定性和性能。我们希望改进的粗糙领域,并欢迎在以下方面做出贡献:
具体任务
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
。 如果您想对 MARS5 做出任何改进,请随时贡献(准则如下)。
我们欢迎任何对改进模型的贡献。正如您在实验时可能会发现的那样,它可以产生非常好的结果,它仍然可以进一步改进以始终如一地创建出色的输出。我们也很想知道您在不同场景中如何使用 MARS5,请使用?在讨论中显示并讲述类别以分享您的示例。
贡献格式:
为我们的存储库做出贡献的首选方法是在 GitHub 上分叉主存储库:
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin
我们正在 GNU AGPL 3.0 下开源 MARS5 英文版。如需商业咨询或获取 MARS 闭源版本的许可,请发送电子邮件至 [email protected]
我们是一支雄心勃勃的团队,分布在全球,唯一的目标是让每个人的声音发挥作用。在 CAMB.AI,我们是一个由 Interspeech 出版的卡内基梅隆大学、前 Siri 工程师组成的研究团队,我们正在寻找您加入我们的团队。
我们正在积极招聘;如果您有兴趣,请发送电子邮件至 [email protected]。请访问我们的职业页面了解更多信息。
加入 Forum 和 Discord 上的 CAMB.AI 社区,与我们的团队分享任何建议、反馈或问题。
该项目的部分代码改编自以下存储库 - 请务必检查它们!感谢以下作者:
.trim()
代码:https://librosa.org/doc/main/ generated/librosa.effects.trim.html