


from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE       :		Any         =				{
    "configuration_speech_to_text": ["SPEECH_TO_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP", "Speech2TextConfig"],
    "processing_speech_to_text": ["Speech2TextProcessor"],
}

try:
   if not is_sentencepiece_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE       :		str         =				["Speech2TextTokenizer"]

try:
   if not is_speech_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE       :		str         =				["Speech2TextFeatureExtractor"]

try:
   if not is_tf_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE       :		int         =				[
       "TF_SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST",
       "TFSpeech2TextForConditionalGeneration",
       "TFSpeech2TextModel",
       "TFSpeech2TextPreTrainedModel",
   ]

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE       :		List[str]         =				[
       "SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST",
       "Speech2TextForConditionalGeneration",
       "Speech2TextModel",
       "Speech2TextPreTrainedModel",
   ]


if TYPE_CHECKING:
   from .configuration_speech_to_text import SPEECH_TO_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP, SpeechaTextConfig
   from .processing_speech_to_text import SpeechaTextProcessor

   try:
      if not is_sentencepiece_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .tokenization_speech_to_text import SpeechaTextTokenizer

   try:
      if not is_speech_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .feature_extraction_speech_to_text import SpeechaTextFeatureExtractor

   try:
      if not is_tf_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tf_speech_to_text import (
          TF_SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
          TFSpeechaTextForConditionalGeneration,
          TFSpeechaTextModel,
          TFSpeechaTextPreTrainedModel,
      )

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_speech_to_text import (
          SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
          SpeechaTextForConditionalGeneration,
          SpeechaTextModel,
          SpeechaTextPreTrainedModel,
      )

else:
   import sys

   SCREAMING_SNAKE_CASE       :		Tuple         =				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





def     UpperCamelCase    (      _a       ,		_a		)					->							int:
     '''simple docstring'''





     while a != 0:
          lowercase_    ,      lowercase_       :Union[str, Any]     =       b % a, a
     return b




def     UpperCamelCase    (      _a       ,		_a		)					->							int:
     '''simple docstring'''





     if gcd(_a       ,		_a		) != 1:
          lowercase_       :Union[str, Any]     =       f"mod inverse of {a!r} and {m!r} does not exist"
          raise ValueError(_a		)
     lowercase_    ,      lowercase_    ,      lowercase_       :Any     =       1, 0, a
     lowercase_    ,      lowercase_    ,      lowercase_       :List[str]     =       0, 1, m
     while va != 0:
          lowercase_       :Tuple     =       ua // va
          lowercase_    ,      lowercase_    ,      lowercase_    ,      lowercase_    ,      lowercase_    ,      lowercase_       :Optional[int]     =       (ua - q * va), (ua - q * va), (ua - q * va), va, va, va
     return ua % m

