File size: 1,777 Bytes
54f8682 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | """VTX-TTS Configuration & Text Processing System.
Defines VTXConfig and text symbol tokenization.
"""
from __future__ import annotations
import json
from dataclasses import dataclass
from pathlib import Path
from typing import Any, Dict
# Symbol definitions for VTX-TTS phoneme tokenization
_pad = "_"
_punctuation = ";:,.!?¡¿—…\"«»“” "
_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
_letters_ipa = "ɑɐɒæɓʙβɔɕçɗɖðʤəɘɚɛɜɝɞɟʄɡɠɢʛɦɧħɥʜɨɪʝɭɬɫɮʟɱɯɰŋɳɲɴøɵɸθœɶʘɹɺɾɻʀʁɽʂʃʈʧʉʊʋⱱʌɣɤʍχʎʏʑʐʒʔʡʕʢǀǁǂǃˈˌːˑʼʴʰʱʲʷˠˤ˞↓↑→↗↘'̩'ᵻ"
symbols = [_pad] + list(_punctuation) + list(_letters) + list(_letters_ipa)
_symbol_to_id = {s: i for i, s in enumerate(symbols)}
def cleaned_text_to_sequence(cleaned_text: str) -> list[int]:
"""Converts a string of text to a sequence of IDs corresponding to the symbols in the text."""
sequence = []
for symbol in cleaned_text:
if symbol in _symbol_to_id:
sequence.append(_symbol_to_id[symbol])
return sequence
class HParams:
def __init__(self, **kwargs):
for k, v in kwargs.items():
if isinstance(v, dict):
v = HParams(**v)
self[k] = v
def __getitem__(self, key):
return getattr(self, key)
def __setitem__(self, key, value):
return setattr(self, key, value)
def __contains__(self, key):
return hasattr(self, key)
def __repr__(self):
return self.__dict__.__repr__()
def get_hparams_from_file(config_path: str | Path) -> HParams:
with open(config_path, "r", encoding="utf-8") as f:
data = f.read()
config = json.loads(data)
return HParams(**config)
|