styletts2-uk / verbalizer.py
Serhiy Stetskovych
Split to sentances for verbalization.
ba44164
Raw History Blame Contribute Delete
1.84 kB
import os
import time
import ctranslate2
from transformers import M2M100Tokenizer
from huggingface_hub import snapshot_download
class Verbalizer():
MODEL_PATH = os.getenv("MODEL_PATH", "skypro1111/m2m100-ukr-verbalization-ct2")
TOKENIZER_PATH = os.getenv("TOKENIZER_PATH", "skypro1111/m2m100-ukr-verbalization")
def __init__(self):
print("\nInitializing CTranslate2 model and tokenizer...")
# Download the model from HuggingFace Hub
local_model_path = snapshot_download(
repo_id=self.MODEL_PATH,
allow_patterns=["*.bin", "*.json", "tokenizer.json", "vocab.json"],
)
self.translator = ctranslate2.Translator(
local_model_path,
device='cpu',
compute_type="int8",
)
# Load tokenizer
self.tokenizer = M2M100Tokenizer.from_pretrained(self.TOKENIZER_PATH)
self.tokenizer.src_lang = "uk"
def process_text(self, text: str):
"""Process a single text input using the CTranslate2 model."""
start_time = time.time()
# Tokenize input
source = self.tokenizer.convert_ids_to_tokens(self.tokenizer.encode(text))
target_prefix = [self.tokenizer.lang_code_to_token["uk"]]
# Run inference
results = self.translator.translate_batch(
[source],
target_prefix=[target_prefix],
beam_size=1,
num_hypotheses=1,
use_vmap=True,
)
# Get target tokens and decode
target = results[0].hypotheses[0][1:] # Remove language token
output = self.tokenizer.decode(self.tokenizer.convert_tokens_to_ids(target))
inference_time = time.time() - start_time
return output, inference_time