

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_torch_available,
)


_UpperCamelCase     			=     {
    'configuration_speecht5': [
        'SPEECHT5_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'SPEECHT5_PRETRAINED_HIFIGAN_CONFIG_ARCHIVE_MAP',
        'SpeechT5Config',
        'SpeechT5HifiGanConfig',
    ],
    'feature_extraction_speecht5': ['SpeechT5FeatureExtractor'],
    'processing_speecht5': ['SpeechT5Processor'],
}

try:
 if not is_sentencepiece_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _UpperCamelCase     			=     ['SpeechT5Tokenizer']

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _UpperCamelCase     			=     [
     'SPEECHT5_PRETRAINED_MODEL_ARCHIVE_LIST',
     'SpeechT5ForSpeechToText',
     'SpeechT5ForSpeechToSpeech',
     'SpeechT5ForTextToSpeech',
     'SpeechT5Model',
     'SpeechT5PreTrainedModel',
     'SpeechT5HifiGan',
 ]

if TYPE_CHECKING:
 from .configuration_speechta import (
     SPEECHT5_PRETRAINED_CONFIG_ARCHIVE_MAP,
     SPEECHT5_PRETRAINED_HIFIGAN_CONFIG_ARCHIVE_MAP,
     SpeechTaConfig,
     SpeechTaHifiGanConfig,
 )
 from .feature_extraction_speechta import SpeechTaFeatureExtractor
 from .processing_speechta import SpeechTaProcessor

 try:
  if not is_sentencepiece_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_speechta import SpeechTaTokenizer

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_speechta import (
      SPEECHT5_PRETRAINED_MODEL_ARCHIVE_LIST,
      SpeechTaForSpeechToSpeech,
      SpeechTaForSpeechToText,
      SpeechTaForTextToSpeech,
      SpeechTaHifiGan,
      SpeechTaModel,
      SpeechTaPreTrainedModel,
  )

else:
 import sys

 _UpperCamelCase     			=     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)








import copy
import os
from typing import TYPE_CHECKING, List, Union


if TYPE_CHECKING:
     pass

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a_      :      Union[str, Any]    =     logging.get_logger(__name__)

a_      :      Optional[Any]    =     {
    'kakaobrain/align-base': 'https://huggingface.co/kakaobrain/align-base/resolve/main/config.json',
}
class    __UpperCamelCase			(       _lowercase				):

 """simple docstring"""



 _lowercase   :    int      						=					'''align_text_model'''

 def __init__(	self		,				SCREAMING_SNAKE_CASE=3_0_5_2_2		,				SCREAMING_SNAKE_CASE=7_6_8		,				SCREAMING_SNAKE_CASE=1_2		,				SCREAMING_SNAKE_CASE=1_2		,				SCREAMING_SNAKE_CASE=3_0_7_2		,				SCREAMING_SNAKE_CASE="gelu"		,				SCREAMING_SNAKE_CASE=0.1		,				SCREAMING_SNAKE_CASE=0.1		,				SCREAMING_SNAKE_CASE=5_1_2		,				SCREAMING_SNAKE_CASE=2		,				SCREAMING_SNAKE_CASE=0.02		,				SCREAMING_SNAKE_CASE=1e-1_2		,				SCREAMING_SNAKE_CASE=0		,				SCREAMING_SNAKE_CASE="absolute"		,				SCREAMING_SNAKE_CASE=True		,				**SCREAMING_SNAKE_CASE		,				) ->			List[str]:
  super().__init__(**SCREAMING_SNAKE_CASE      )

  a__												= vocab_size
  a__												= hidden_size
  a__												= num_hidden_layers
  a__												= num_attention_heads
  a__												= hidden_act
  a__												= intermediate_size
  a__												= hidden_dropout_prob
  a__												= attention_probs_dropout_prob
  a__												= max_position_embeddings
  a__												= type_vocab_size
  a__												= initializer_range
  a__												= layer_norm_eps
  a__												= position_embedding_type
  a__												= use_cache
  a__												= pad_token_id



 @classmethod
 def 						_UpperCAmelCase       (	cls		,				SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      ) ->			"PretrainedConfig":
  cls._set_token_in_kwargs(SCREAMING_SNAKE_CASE      )

  a__							,			a__												= cls.get_config_dict(SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      )

  # get the text config dict if we are loading from AlignConfig
  if config_dict.get('''model_type'''      ) == "align":
   a__												= config_dict['''text_config''']

  if "model_type" in config_dict and hasattr(cls		,				'''model_type'''      ) and config_dict["model_type"] != cls.model_type:
   logger.warning(
       f"You are using a model of type {config_dict['model_type']} to instantiate a model of type "
       f"{cls.model_type}. This is not supported for all configurations of models and can yield errors."      )

  return cls.from_dict(SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      )





class    __UpperCamelCase			(       _lowercase				):

 """simple docstring"""



 _lowercase   :    str      						=					'''align_vision_model'''

 def __init__(	self		,				SCREAMING_SNAKE_CASE = 3		,				SCREAMING_SNAKE_CASE = 6_0_0		,				SCREAMING_SNAKE_CASE = 2.0		,				SCREAMING_SNAKE_CASE = 3.1		,				SCREAMING_SNAKE_CASE = 8		,				SCREAMING_SNAKE_CASE = [3, 3, 5, 3, 5, 5, 3]		,				SCREAMING_SNAKE_CASE = [3_2, 1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2]		,				SCREAMING_SNAKE_CASE = [1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2, 3_2_0]		,				SCREAMING_SNAKE_CASE = []		,				SCREAMING_SNAKE_CASE = [1, 2, 2, 2, 1, 2, 1]		,				SCREAMING_SNAKE_CASE = [1, 2, 2, 3, 3, 4, 1]		,				SCREAMING_SNAKE_CASE = [1, 6, 6, 6, 6, 6, 6]		,				SCREAMING_SNAKE_CASE = 0.25		,				SCREAMING_SNAKE_CASE = "swish"		,				SCREAMING_SNAKE_CASE = 2_5_6_0		,				SCREAMING_SNAKE_CASE = "mean"		,				SCREAMING_SNAKE_CASE = 0.02		,				SCREAMING_SNAKE_CASE = 0.0_01		,				SCREAMING_SNAKE_CASE = 0.99		,				SCREAMING_SNAKE_CASE = 0.2		,				**SCREAMING_SNAKE_CASE		,				) ->			str:
  super().__init__(**SCREAMING_SNAKE_CASE      )

  a__												= num_channels
  a__												= image_size
  a__												= width_coefficient
  a__												= depth_coefficient
  a__												= depth_divisor
  a__												= kernel_sizes
  a__												= in_channels
  a__												= out_channels
  a__												= depthwise_padding
  a__												= strides
  a__												= num_block_repeats
  a__												= expand_ratios
  a__												= squeeze_expansion_ratio
  a__												= hidden_act
  a__												= hidden_dim
  a__												= pooling_type
  a__												= initializer_range
  a__												= batch_norm_eps
  a__												= batch_norm_momentum
  a__												= drop_connect_rate
  a__												= sum(SCREAMING_SNAKE_CASE      ) * 4



 @classmethod
 def 						_UpperCAmelCase       (	cls		,				SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      ) ->			"PretrainedConfig":
  cls._set_token_in_kwargs(SCREAMING_SNAKE_CASE      )

  a__							,			a__												= cls.get_config_dict(SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      )

  # get the vision config dict if we are loading from AlignConfig
  if config_dict.get('''model_type'''      ) == "align":
   a__												= config_dict['''vision_config''']

  if "model_type" in config_dict and hasattr(cls		,				'''model_type'''      ) and config_dict["model_type"] != cls.model_type:
   logger.warning(
       f"You are using a model of type {config_dict['model_type']} to instantiate a model of type "
       f"{cls.model_type}. This is not supported for all configurations of models and can yield errors."      )

  return cls.from_dict(SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      )





class    __UpperCamelCase			(       _lowercase				):

 """simple docstring"""



 _lowercase   :    Dict      						=					'''align'''
 _lowercase   :    Optional[Any]      						=					True

 def __init__(	self		,				SCREAMING_SNAKE_CASE=None		,				SCREAMING_SNAKE_CASE=None		,				SCREAMING_SNAKE_CASE=6_4_0		,				SCREAMING_SNAKE_CASE=1.0		,				SCREAMING_SNAKE_CASE=0.02		,				**SCREAMING_SNAKE_CASE		,				) ->			List[str]:
  super().__init__(**SCREAMING_SNAKE_CASE      )

  if text_config is None:
   a__												= {}
   logger.info('''text_config is None. Initializing the AlignTextConfig with default values.'''      )

  if vision_config is None:
   a__												= {}
   logger.info('''vision_config is None. Initializing the AlignVisionConfig with default values.'''      )

  a__												= AlignTextConfig(**SCREAMING_SNAKE_CASE      )
  a__												= AlignVisionConfig(**SCREAMING_SNAKE_CASE      )

  a__												= projection_dim
  a__												= temperature_init_value
  a__												= initializer_range

 @classmethod
 def 						_UpperCAmelCase       (	cls		,				SCREAMING_SNAKE_CASE		,				SCREAMING_SNAKE_CASE		,				**SCREAMING_SNAKE_CASE      ) ->			Optional[int]:
  return cls(text_config=text_config.to_dict()		,				vision_config=vision_config.to_dict()		,				**SCREAMING_SNAKE_CASE      )



 def 						_UpperCAmelCase       (	self      ) ->			int:
  a__												= copy.deepcopy(self.__dict__      )
  a__												= self.text_config.to_dict()
  a__												= self.vision_config.to_dict()
  a__												= self.__class__.model_type
  return output





