class_docstr: Syllable class
code: def __init__(self, text):
      self.text = text
      non_tone_letters, tone = VIETNAMESE.analyze_tone(text)
      self.tone = tone
      a = "[aăâ]"
      o = "[oôơ]"
      u = "[uư]"
      double = f"oo|i{a}|iê|yê|y{a}|{u}{o}|{u}{a}|ay|ây|ua"
      v = r"(?P<V>[aăâeêuưyoôơi]|" + double + ")"
      vec = r"(?P<V>ê)"
      wu = r"(?P<w>[u])"
      vye = "(?P<V>yê)"
      vya = f"(?P<V>y{a})"
      consonants = (
          "gi|qu|ch|gh|kh|ng|ngh|nh|ph|th|tr|[bcdđghklmnpqrstvx]"
      )
      conda = consonants + "|[uio]"
      c1 = r"(?P<C1>" + consonants + ")?"
      c2 = r"(?P<C2>" + conda + ")?"
      patterns = [
          r"^" + c1 + "(?P<w>[u])(?P<V>[yâ])" + c2 + "$",
          r"^" + c1 + "(?P<w>[o])(?P<V>[eaă])" + c2 + "$",
          r"^" + c1 + v + c2 + "$",
          r"^" + c1 + wu + vec + c2 + "$",
          r"^" + c1 + wu + vye + c2 + "$",
          r"^" + c1 + wu + vya + c2 + "$",
      ]
      pattern = r"(" + "|".join(patterns) + ")"
  
      matched = regex.match(pattern, non_tone_letters)
      self.matched = matched
      if not matched:
          raise Exception(f"Text {text} not matched")
  
file_path: underthesea/underthesea/utils/vietnamese_ipa.py
imports: from collections import OrderedDict
  from types import SimpleNamespace
  import regex
  from underthesea.pipeline.word_tokenize.regex_tokenize import VIETNAMESE_VOWELS_LOWER
  from underthesea.utils.vietnamese_ipa_rules import codas, nuclei, onsets, onoffglides, onglides, offglides
label_desc: Use image node_id 1 to create a new Syllable object  with example: obj = Syllable(text)