class_docstr: 🐸IPAPhonemes class to manage `TTS.tts` model vocabulary
  
  Intended to be used with models using IPAPhonemes as input.
  It uses system defaults for the undefined class arguments.
  
  Args:
      characters (str):
          Main set of case-sensitive characters to be used in the vocabulary. Defaults to `_phonemes`.
  
      punctuations (str):
          Characters to be treated as punctuation. Defaults to `_punctuations`.
  
      pad (str):
          Special padding character that would be ignored by the model. Defaults to `_pad`.
  
      eos (str):
          End of the sentence character. Defaults to `_eos`.
  
      bos (str):
          Beginning of the sentence character. Defaults to `_bos`.
  
      blank (str):
          Optional character used between characters by some models for better prosody. Defaults to `_blank`.
  
      is_unique (bool):
          Remove duplicates from the provided characters. Defaults to True.
  
      is_sorted (bool):
          Sort the characters in alphabetical order. Defaults to True.
docstr: Init a IPAPhonemes object from a model config
  
  If characters are not defined in the config, it will be set to the default characters and the config
  will be updated.
docstr_tok: ["Init","a","IPAPhonemes","object","from","a","model","config","If","characters","are","not","defined","in","the","config",",","it","will","be","set","to","the","default","characters","and","the","config","will","be","updated","."]
code: def init_from_config(config: "Coqpit"):
      """Init a IPAPhonemes object from a model config
  
      If characters are not defined in the config, it will be set to the default characters and the config
      will be updated.
      """
      # band-aid for compatibility with old models
      if "characters" in config and config.characters is not None:
          if (
              "phonemes" in config.characters
              and config.characters.phonemes is not None
          ):
              config.characters["characters"] = config.characters[
                  "phonemes"
              ]
          return (
              IPAPhonemes(
                  characters=config.characters["characters"],
                  punctuations=config.characters["punctuations"],
                  pad=config.characters["pad"],
                  eos=config.characters["eos"],
                  bos=config.characters["bos"],
                  blank=config.characters["blank"],
                  is_unique=config.characters["is_unique"],
                  is_sorted=config.characters["is_sorted"],
              ),
              config,
          )
      # use character set from config
      if config.characters is not None:
          return IPAPhonemes(**config.characters), config
      # return default character set
      characters = IPAPhonemes()
      new_config = replace(config, characters=characters.to_config())
      return characters, new_config
  
imports: from dataclasses import replace
  from typing import Dict
  from TTS.tts.configs.shared_configs import CharactersConfig
label_desc: Use image node_id 2 for calling the IPAPhonemes obj's underlying member method code with example usage: obj.init_from_config(config) and returns: characters,  new_config, IPAPhonemes,  config, IPAPhonemes,  config