license: mit
XPhoneBERT:面向文本转语音的音素表征预训练多语言模型
XPhoneBERT是首个面向文本转语音(TTS)的音素表征预训练多语言模型。其架构与BERT-base相同,基于RoBERTa预训练方法,使用来自近100种语言和地区的3.3亿条音素级句子进行训练。实验表明,采用XPhoneBERT作为输入音素编码器,能显著提升强神经TTS模型在自然度和韵律方面的表现,并有助于在有限训练数据下生成较高质量的语音。
XPhoneBERT的整体架构和实验结果详见我们在INTERSPEECH 2023发表的论文:
@inproceedings{xphonebert,
title = {{XPhoneBERT: 面向文本转语音的音素表征预训练多语言模型}},
author = {Linh The Nguyen and Thinh Pham and Dat Quoc Nguyen},
booktitle = {第24届国际语音通信协会年会论文集(INTERSPEECH)},
year = {2023},
pages = {5506--5510}
}
若使用XPhoneBERT取得发表成果或将其集成至其他软件,请引用我们的论文。
更多信息或需求,请访问XPhoneBERT主页!
通过transformers
使用XPhoneBERT
安装
-
通过pip安装transformers
:pip install transformers
,或从源码安装
-
安装text2phonemesequence
:pip install text2phonemesequence
我们的text2phonemesequence
包用于将文本序列转换为音素级序列,该工具被用于构建多语言音素级预训练数据。我们通过整合CharsiuG2P(执行文本到音素转换)和segments(执行音素分割)工具包开发了本工具。
-
注意事项
-
初始化text2phonemesequence
需指定语言的ISO 639-3代码,支持语言的代码列表参见此处
-
输入text2phonemesequence
的需为分词后的序列,用户还可在输入前对分词序列进行文本规范化。构建预训练数据时,除越南语使用VnCoreNLP工具外,我们均采用spaCy工具对所有语言的文本进行分词和分句处理。英语、德语、西班牙语和中文的文本规范化使用NVIDIA NeMo工具包的组件,越南语则使用Vinorm文本规范化包。
预训练模型
模型 |
参数量 |
架构 |
最大长度 |
预训练数据 |
vinai/xphonebert-base |
88M |
base |
512 |
来自近100种语言和地区的3.3亿条音素级句子 |
使用示例
from transformers import AutoModel, AutoTokenizer
from text2phonemesequence import Text2PhonemeSequence
xphonebert = AutoModel.from_pretrained("vinai/xphonebert-base")
tokenizer = AutoTokenizer.from_pretrained("vinai/xphonebert-base")
text2phone_model = Text2PhonemeSequence(language='jpn', is_cuda=True)
sentence = "これ は 、 テスト テキスト です ."
input_phonemes = text2phone_model.infer_sentence(sentence)
input_ids = tokenizer(input_phonemes, return_tensors="pt")
with torch.no_grad():
features = xphonebert(**input_ids)