XPhoneBERT:用于文本转语音的预训练多语言音素表示模型
XPhoneBERT是第一个用于文本转语音(TTS)的预训练多语言音素表示模型。XPhoneBERT采用与BERT-base相同的模型架构,使用RoBERTa预训练方法在来自近100种语言和地区的3.3亿音素级句子上进行训练。实验结果表明,将XPhoneBERT作为输入音素编码器可以显著提升强大的神经TTS模型在自然度和韵律方面的性能,并且还有助于在有限的训练数据下生成相当高质量的语音。
XPhoneBERT的总体架构和实验结果可以在我们的INTERSPEECH 2023论文中找到:
@inproceedings{xphonebert,
title = {{XPhoneBERT: A Pre-trained Multilingual Model for Phoneme Representations for Text-to-Speech}},
author = {Linh The Nguyen and Thinh Pham and Dat Quoc Nguyen},
booktitle = {Proceedings of the 24th Annual Conference of the International Speech Communication Association (INTERSPEECH)},
year = {2023}
}
当使用XPhoneBERT来帮助产生已发表的结果或将其整合到其他软件中时,请引用我们的论文。
使用transformers
库的XPhoneBERT
安装
-
使用pip安装
transformers
:pip install transformers
,或者从源代码安装transformers
。 -
安装
text2phonemesequence
:pip install text2phonemesequence
我们的text2phonemesequence
包用于将文本序列转换为音素级序列,用于构建我们的多语言音素级预训练数据。我们通过整合CharsiuG2P和segments工具包来构建text2phonemesequence
,这些工具包分别执行文本到音素的转换和音素分割。 -
注意事项
-
为每种语言初始化
text2phonemesequence
需要其对应的ISO 639-3代码。支持语言的ISO 639-3代码可在此处查看。 -
text2phonemesequence
接受分词后的序列作为输入。用户也可以在将分词后的序列输入text2phonemesequence
之前对其进行文本规范化。在创建我们的预训练数据时,我们使用spaCy工具包对每种语言的所有文本文档进行分词和分句,除了越南语,我们使用VnCoreNLP工具包。我们还使用NVIDIA NeMo工具包中的文本规范化组件用于英语、德语、西班牙语和中文,以及Vinorm文本规范化包用于越南语。
-
预训练模型
模型 | 参数数量 | 架构 | 最大长度 | 预训练数据 |
---|---|---|---|---|
vinai/xphonebert-base | 8800万 | base | 512 | 来自近100种语言和地区的3.3亿音素级句子 |
使用示例
from transformers import AutoModel, AutoTokenizer
from text2phonemesequence import Text2PhonemeSequence
# 加载XPhoneBERT模型及其分词器
xphonebert = AutoModel.from_pretrained("vinai/xphonebert-base")
tokenizer = AutoTokenizer.from_pretrained("vinai/xphonebert-base")
# 加载Text2PhonemeSequence
# text2phone_model = Text2PhonemeSequence(language='eng-us', is_cuda=True)
text2phone_model = Text2PhonemeSequence(language='jpn', is_cuda=True)
# 输入序列已经过分词(如果适用,还进行了文本规范化)
# sentence = "That is , it is a testing text ."
sentence = "これ は 、 テスト テキスト です ."
input_phonemes = text2phone_model.infer_sentence(sentence)
input_ids = tokenizer(input_phonemes, return_tensors="pt")
with torch.no_grad():
features = xphonebert(**input_ids)
许可证
MIT许可证
版权所有 (c) 2023 VinAI
特此免费授予任何获得本软件及相关文档文件("软件")副本的人不受限制地处理本软件的权利,
包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,
并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和
非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,
无论是在合同诉讼、侵权行为还是其他方面,由软件或软件的使用或其他交易引起、由软件引起或与之相关。