俄语多说话人免费文本转语音模型
这是一个支持多说话人的俄语文本转语音模型。该模型可直接处理带标点符号的普通文本,无需预先将文本转换为音素。模型提供两种说话人声音:0号-女声,1号-男声。
模型参数规模仅为1510万。
支持输入小写文本。
为获得最佳生成效果,建议在元音字母前标注重音符号。
推荐使用"ruaccent"库进行重音标注:
pip install -y ruaccent
在线测试地址:
https://huggingface.co/spaces/utrobinmv/tts_ru_free_hf_vits_low_multispeaker
PyTorch使用示例:
from transformers import VitsModel, AutoTokenizer, set_seed
import torch
import scipy
from ruaccent import RUAccent
device = 'cuda'
speaker = 0
set_seed(555)
model_name = "utrobinmv/tts_ru_free_hf_vits_low_multispeaker"
model = VitsModel.from_pretrained(model_name).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model.eval()
accentizer = RUAccent()
accentizer.load(omograph_model_size='turbo', use_dictionary=True, device=device)
text = """Ночью двадцать третьего июня начал извергаться самый высокий
действующий вулкан в Евразии - Кл+ючевской. Об этом сообщила руководитель
Камчатской группы реагирования на вулканические извержения, ведущий
научный сотрудник Института вулканологии и сейсмологии ДВО РАН Ольга Гирина.
«Зафиксированное ночью не просто свечение, а вершинное эксплозивное
извержение стромболианского типа. Пока такое извержение никому не опасно:
ни населению, ни авиации» пояснила ТАСС госпожа Гирина."""
text = accentizer.process_all(text)
print(text)
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs.to(device), speaker_id=speaker).waveform
output = output.detach().cpu().numpy()
scipy.io.wavfile.write("tts_audio.wav", rate=model.config.sampling_rate,
data=output[0])
在Jupyter Notebook/Google Colab中播放音频:
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
ONNX运行时使用示例:
首先将model.onnx文件复制到"tts_ru_free_hf_vits_low_multispeaker"文件夹
import numpy as np
import scipy
import onnxruntime
from ruaccent import RUAccent
from transformers import AutoTokenizer
speaker = 0
model_path = "tts_ru_free_hf_vits_low_multispeaker/model.onnx"
sess_options = onnxruntime.SessionOptions()
model = onnxruntime.InferenceSession(model_path, sess_options=sess_options)
tokenizer = AutoTokenizer.from_pretrained("utrobinmv/tts_ru_free_hf_vits_low_multispeaker")
支持语言:俄语(ru_RU)