

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


snake_case_        =			{
    '''configuration_wav2vec2''': ['''WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''Wav2Vec2Config'''],
    '''feature_extraction_wav2vec2''': ['''Wav2Vec2FeatureExtractor'''],
    '''processing_wav2vec2''': ['''Wav2Vec2Processor'''],
    '''tokenization_wav2vec2''': ['''Wav2Vec2CTCTokenizer''', '''Wav2Vec2Tokenizer'''],
}


try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case_        =			[
         '''WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
         '''Wav2Vec2ForAudioFrameClassification''',
         '''Wav2Vec2ForCTC''',
         '''Wav2Vec2ForMaskedLM''',
         '''Wav2Vec2ForPreTraining''',
         '''Wav2Vec2ForSequenceClassification''',
         '''Wav2Vec2ForXVector''',
         '''Wav2Vec2Model''',
         '''Wav2Vec2PreTrainedModel''',
     ]

try:
     if not is_tf_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case_        =			[
         '''TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
         '''TFWav2Vec2ForCTC''',
         '''TFWav2Vec2Model''',
         '''TFWav2Vec2PreTrainedModel''',
         '''TFWav2Vec2ForSequenceClassification''',
     ]

try:
     if not is_flax_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case_        =			[
         '''FlaxWav2Vec2ForCTC''',
         '''FlaxWav2Vec2ForPreTraining''',
         '''FlaxWav2Vec2Model''',
         '''FlaxWav2Vec2PreTrainedModel''',
     ]


if TYPE_CHECKING:
     from .configuration_wavaveca import WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP, WavaVecaConfig
     from .feature_extraction_wavaveca import WavaVecaFeatureExtractor
     from .processing_wavaveca import WavaVecaProcessor
     from .tokenization_wavaveca import WavaVecaCTCTokenizer, WavaVecaTokenizer

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_wavaveca import (
              WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
              WavaVecaForAudioFrameClassification,
              WavaVecaForCTC,
              WavaVecaForMaskedLM,
              WavaVecaForPreTraining,
              WavaVecaForSequenceClassification,
              WavaVecaForXVector,
              WavaVecaModel,
              WavaVecaPreTrainedModel,
          )

     try:
          if not is_tf_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_wavaveca import (
              TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
              TFWavaVecaForCTC,
              TFWavaVecaForSequenceClassification,
              TFWavaVecaModel,
              TFWavaVecaPreTrainedModel,
          )

     try:
          if not is_flax_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_wavaveca import (
              FlaxWavaVecaForCTC,
              FlaxWavaVecaForPreTraining,
              FlaxWavaVecaModel,
              FlaxWavaVecaPreTrainedModel,
          )


else:
     import sys

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




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


snake_case_        =			logging.get_logger(__name__)

snake_case_        =			{
    '''facebook/s2t-wav2vec2-large-en-de''': (
        '''https://huggingface.co/facebook/s2t-wav2vec2-large-en-de/resolve/main/config.json'''
    ),
    # See all Speech2Text models at https://huggingface.co/models?filter=speech2text2
}


class 				SCREAMING_SNAKE_CASE__ (__snake_case					):
    __lowerCamelCase						:	List[Any]														=					"""speech_to_text_2"""
    __lowerCamelCase						:	str														=					["""past_key_values"""]
    __lowerCamelCase						:	List[Any]														=					{"""num_attention_heads""": """decoder_attention_heads""", """hidden_size""": """d_model"""}





    def __init__(				self						,       a=1_0000						,       a=6						,       a=2048						,       a=4						,       a=0.0						,       a=True						,       a="relu"						,       a=256						,       a=0.1						,       a=0.0						,       a=0.0						,       a=0.02						,       a=2						,       a=True						,       a=1						,       a=0						,       a=2						,       a=1024						,       **a						,       ):
         lowercase__   :       Optional[int]				=	vocab_size
         lowercase__   :       List[str]				=	d_model
         lowercase__   :       int				=	decoder_ffn_dim
         lowercase__   :       Optional[Any]				=	decoder_layers
         lowercase__   :       int				=	decoder_attention_heads
         lowercase__   :       Dict				=	dropout
         lowercase__   :       Optional[int]				=	attention_dropout
         lowercase__   :       Optional[int]				=	activation_dropout
         lowercase__   :       Optional[int]				=	activation_function
         lowercase__   :       Dict				=	init_std
         lowercase__   :       List[Any]				=	decoder_layerdrop
         lowercase__   :       int				=	use_cache
         lowercase__   :       Any				=	decoder_layers
         lowercase__   :       Optional[int]				=	scale_embedding  # scale factor will be sqrt(d_model) if True
         lowercase__   :       Tuple				=	max_target_positions

         super().__init__(
             pad_token_id=a						,       bos_token_id=a						,       eos_token_id=a						,       decoder_start_token_id=a						,       **a						,       )

