本仓库包含葡萄牙语(por)的文本转语音(TTS)模型 checkpoint。
该模型是 Facebook 大规模多语言语音 项目的一部分,旨在为多种不同语言提供语音技术。您可以在 MMS 语言覆盖概览 中找到支持语言及其 ISO 639-3 代码的更多详细信息,并在 Hugging Face Hub 上查看所有 MMS-TTS checkpoint:facebook/mms-tts。
MMS-TTS 已在 4.33 及更高版本的 🤗 Transformers 库中可用。
VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech,基于对抗学习的端到端文本转语音变分推断)是一种端到端语音合成模型,可根据输入文本序列预测语音波形。它是一个条件变分自编码器(VAE),由后验编码器、解码器和条件先验组成。
一组基于 spectrogram 的声学特征由基于流的模块预测,该模块由基于 Transformer 的文本编码器和多个耦合层构成。Spectrogram 使用一系列转置卷积层进行解码,其风格与 HiFi-GAN 声码器非常相似。受 TTS 问题一对多特性(即相同文本输入可以有多种发音方式)的启发,该模型还包含一个随机时长预测器,允许模型从相同输入文本合成具有不同节奏的语音。
该模型通过结合变分下界和对抗训练产生的多种损失进行端到端训练。为了提高模型的表达能力,将归一化流应用于条件先验分布。在推理过程中,文本编码会根据时长预测模块进行上采样,然后通过流模块和 HiFi-GAN 解码器的级联映射到波形。由于时长预测器的随机性,该模型具有非确定性,因此需要固定种子才能生成相同的语音波形。
在 MMS 项目中,每种语言都单独训练了一个 VITS checkpoint。
从 4.33 版本开始,MMS-TTS 已在 🤗 Transformers 库中可用。要使用此检查点,请先安装该库的最新版本:
pip install --upgrade transformers accelerate然后,使用以下代码片段运行推理:
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("facebook/mms-tts-por")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-por")
text = "some example text in the Portuguese language"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform生成的波形可以保存为 .wav 文件:
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)或在 Jupyter Notebook / Google Colab 中显示:
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)该模型由 Meta AI 的 Vineel Pratap 等人开发。如果您使用此模型,建议引用 MMS 论文:
@article{pratap2023mms,
title={Scaling Speech Technology to 1,000+ Languages},
author={Vineel Pratap and Andros Tjandra and Bowen Shi and Paden Tomasello and Arun Babu and Sayani Kundu and Ali Elkahky and Zhaoheng Ni and Apoorv Vyas and Maryam Fazel-Zarandi and Alexei Baevski and Yossi Adi and Xiaohui Zhang and Wei-Ning Hsu and Alexis Conneau and Michael Auli},
journal={arXiv},
year={2023}
}精度结论:该语音/音频合成模型在 Ascend NPU 上完成适配,NPU 推理自一致性与语义完整性验证通过,等效精度误差低于 1% 要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
The model is licensed as CC-BY-NC 4.0.