🚀 俄语免费多说话人文本转语音模型
这是一个用于俄语的多说话人文本转语音模型。它可以处理带有标点分隔的纯文本,无需事先将文本转换为音素。该模型有两个语音:0 - 女性,1 - 男性。模型大小仅为1510万个参数,并且可以接受小写文本。为了获得更好的生成质量,建议在元音字母前添加重音符号,可使用 "ruaccent" 库来添加重音。
🚀 快速开始
本模型可直接处理带有标点分隔的纯文本,无需将文本转换为音素。若要获得更好的生成质量,可使用 "ruaccent" 库在元音字母前添加重音。
✨ 主要特性
- 多说话人支持:提供女性和男性两种语音。
- 轻量级模型:仅包含1510万个参数。
- 简单易用:可直接处理纯文本,无需额外转换。
📦 安装指南
若要使用 "ruaccent" 库,可通过以下命令进行安装:
pip install -y ruaccent
💻 使用示例
基础用法
以下是使用 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")
text = """Ночью двадцать третьего июня начал извергаться самый высокий
действующий вулкан в Евразии - Кл+ючевской. Об этом сообщила руководитель
Камчатской группы реагирования на вулканические извержения, ведущий
научный сотрудник Института вулканологии и сейсмологии ДВО РАН Ольга Гирина.
«Зафиксированное ночью не просто свечение, а вершинное эксплозивное
извержение стромболианского типа. Пока такое извержение никому не опасно:
ни населению, ни авиации» пояснила ТАСС госпожа Гирина."""
accentizer = RUAccent()
accentizer.load(omograph_model_size='turbo', use_dictionary=True)
text = accentizer.process_all(text)
inputs = tokenizer(text, return_tensors="np")
sid = np.array([speaker])
sampling_rate = 16000
output = model.run(
None,
{
"input_ids": inputs['input_ids'],
"attention_mask": inputs['attention_mask'],
"sid": sid,
},
)[0]
scipy.io.wavfile.write("tts_audio.wav", rate=sampling_rate,
data=output[0])
若要在 Jupyter Notebook 或 Google Colab 中显示音频,可使用以下代码:
from IPython.display import Audio
Audio(output, rate=sampling_rate)
📚 详细文档
可通过以下链接进行测试推理:
https://huggingface.co/spaces/utrobinmv/tts_ru_free_hf_vits_low_multispeaker
📄 许可证
本项目采用 Apache-2.0 许可证。
📋 信息表格
属性 |
详情 |
模型类型 |
俄语多说话人文本转语音模型 |
训练数据 |
未提及 |
常用提示信息
⚠️ 重要提示
为了获得更好的生成质量,建议在元音字母前添加重音符号,可使用 "ruaccent" 库来添加重音。
💡 使用建议
可通过链接 https://huggingface.co/spaces/utrobinmv/tts_ru_free_hf_vits_low_multispeaker 进行测试推理。