🚀 ロシア語用の無料多話者テキスト読み上げモデル
このモデルは、ロシア語用の多話者テキスト読み上げモデルです。句読点で区切られた平文で動作し、テキストを音素に事前変換する必要はありません。
多話者モデルには2つの声があります:0 - 女性、1 - 男性。
モデルのサイズはわずか1510万パラメータです。
テキストは小文字を受け付けます。
より良い生成品質を得るために、母音の前にアクセントを付けることをおすすめします。
アクセント付けには、「ruaccent」ライブラリの使用をおすすめします。
🚀 クイックスタート
「ruaccent」のインストール
「ruaccent」をインストールするには、以下のコマンドを使用します。
pip install -y ruaccent
テスト推論の実行
テスト推論には、以下のSpacesを使用できます。
https://huggingface.co/spaces/utrobinmv/tts_ru_free_hf_vits_low_multispeaker
✨ 主な機能
- 多話者対応(女性と男性の声)
- 句読点付きの平文で動作
- テキストを音素に事前変換する必要なし
- モデルサイズが小さい(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)
📚 ドキュメント
対応言語
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。