🚀 俄語免費多說話人文本轉語音模型
這是一個用於俄語的多說話人文本轉語音模型。它可以處理帶有標點分隔的純文本,無需事先將文本轉換為音素。該模型有兩個語音: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 進行測試推理。