
"""simple docstring"""







from ...processing_utils import ProcessorMixin




class 				A__ (			_lowerCamelCase):
		A_		: Optional[Any]            =			'SpeechT5FeatureExtractor'
		A_		: Dict            =			'SpeechT5Tokenizer'

		def __init__(   self ,	_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE				):
			super().__init__(_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE				)

		def __call__(   self ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				):
			__lowerCAmelCase    :		Tuple		    =   kwargs.pop('audio' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		Dict		    =   kwargs.pop('text' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		str		    =   kwargs.pop('text_target' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		int		    =   kwargs.pop('audio_target' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		List[Any]		    =   kwargs.pop('sampling_rate' ,	_SCREAMING_SNAKE_CASE				)

			if audio is not None and text is not None:
				raise ValueError(
				    'Cannot process both `audio` and `text` inputs. Did you mean `audio_target` or `text_target`?'				)
			if audio_target is not None and text_target is not None:
				raise ValueError(
				    'Cannot process both `audio_target` and `text_target` inputs. Did you mean `audio` or `text`?'				)
			if audio is None and audio_target is None and text is None and text_target is None:
				raise ValueError(
				    'You need to specify either an `audio`, `audio_target`, `text`, or `text_target` input to process.'				)

			if audio is not None:
				__lowerCAmelCase    :		List[Any]		    =   self.feature_extractor(_SCREAMING_SNAKE_CASE ,	*_SCREAMING_SNAKE_CASE ,	sampling_rate=_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
			elif text is not None:
				__lowerCAmelCase    :		Union[str, Any]		    =   self.tokenizer(_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
			else:
				__lowerCAmelCase    :		Tuple		    =   None

			if audio_target is not None:
				__lowerCAmelCase    :		Optional[int]		    =   self.feature_extractor(audio_target=_SCREAMING_SNAKE_CASE ,	*_SCREAMING_SNAKE_CASE ,	sampling_rate=_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
				__lowerCAmelCase    :		Tuple		    =   targets['input_values']
			elif text_target is not None:
				__lowerCAmelCase    :		Tuple		    =   self.tokenizer(_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
				__lowerCAmelCase    :		Optional[int]		    =   targets['input_ids']
			else:
				__lowerCAmelCase    :		Optional[Any]		    =   None

			if inputs is None:
				return targets

			if targets is not None:
				__lowerCAmelCase    :		List[Any]		    =   labels

				__lowerCAmelCase    :		Dict		    =   targets.get('attention_mask'				)
				if decoder_attention_mask is not None:
					__lowerCAmelCase    :		Any		    =   decoder_attention_mask

			return inputs

		def 							__lowerCamelCase							(   self ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				):
			__lowerCAmelCase    :		Dict		    =   kwargs.pop('input_values' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		List[str]		    =   kwargs.pop('input_ids' ,	_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		str		    =   kwargs.pop('labels' ,	_SCREAMING_SNAKE_CASE				)

			if input_values is not None and input_ids is not None:
				raise ValueError('Cannot process both `input_values` and `input_ids` inputs.'				)
			if input_values is None and input_ids is None and labels is None:
				raise ValueError(
				    'You need to specify either an `input_values`, `input_ids`, or `labels` input to be padded.'				)

			if input_values is not None:
				__lowerCAmelCase    :		Optional[int]		    =   self.feature_extractor.pad(_SCREAMING_SNAKE_CASE ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
			elif input_ids is not None:
				__lowerCAmelCase    :		Optional[Any]		    =   self.tokenizer.pad(_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
			else:
				__lowerCAmelCase    :		List[str]		    =   None

			if labels is not None:
				if "input_ids" in labels or (isinstance(_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE				) and "input_ids" in labels[0]):
					__lowerCAmelCase    :		Optional[int]		    =   self.tokenizer.pad(_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
					__lowerCAmelCase    :		Optional[int]		    =   targets['input_ids']
				else:
					__lowerCAmelCase    :		int		    =   self.feature_extractor.feature_size
					__lowerCAmelCase    :		Union[str, Any]		    =   self.feature_extractor.num_mel_bins
					__lowerCAmelCase    :		Union[str, Any]		    =   self.feature_extractor.pad(_SCREAMING_SNAKE_CASE ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)
					__lowerCAmelCase    :		Optional[int]		    =   feature_size_hack
					__lowerCAmelCase    :		Any		    =   targets['input_values']
			else:
				__lowerCAmelCase    :		int		    =   None

			if inputs is None:
				return targets

			if targets is not None:
				__lowerCAmelCase    :		Optional[Any]		    =   labels

				__lowerCAmelCase    :		str		    =   targets.get('attention_mask'				)
				if decoder_attention_mask is not None:
					__lowerCAmelCase    :		List[Any]		    =   decoder_attention_mask

			return inputs

		def 							__lowerCamelCase							(   self ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				):
			return self.tokenizer.batch_decode(*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)







		def 							__lowerCamelCase							(   self ,	*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				):
			return self.tokenizer.decode(*_SCREAMING_SNAKE_CASE ,	**_SCREAMING_SNAKE_CASE				)

"""simple docstring"""







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


lowerCamelCase__           =	logging.get_logger(__name__)

lowerCamelCase__           =	{
    """speechbrain/m-ctc-t-large""": """https://huggingface.co/speechbrain/m-ctc-t-large/resolve/main/config.json""",
    # See all M-CTC-T models at https://huggingface.co/models?filter=mctct
}




class 				A__ (			_lowerCamelCase):
		A_		: Any            =			'mctct'

		def __init__(   self ,	_SCREAMING_SNAKE_CASE=80_65 ,	_SCREAMING_SNAKE_CASE=15_36 ,	_SCREAMING_SNAKE_CASE=36 ,	_SCREAMING_SNAKE_CASE=61_44 ,	_SCREAMING_SNAKE_CASE=4 ,	_SCREAMING_SNAKE_CASE=3_84 ,	_SCREAMING_SNAKE_CASE=9_20 ,	_SCREAMING_SNAKE_CASE=1E-5 ,	_SCREAMING_SNAKE_CASE=0.3 ,	_SCREAMING_SNAKE_CASE="relu" ,	_SCREAMING_SNAKE_CASE=0.02 ,	_SCREAMING_SNAKE_CASE=0.3 ,	_SCREAMING_SNAKE_CASE=0.3 ,	_SCREAMING_SNAKE_CASE=1 ,	_SCREAMING_SNAKE_CASE=0 ,	_SCREAMING_SNAKE_CASE=2 ,	_SCREAMING_SNAKE_CASE=1 ,	_SCREAMING_SNAKE_CASE=0.3 ,	_SCREAMING_SNAKE_CASE=1 ,	_SCREAMING_SNAKE_CASE=(7,) ,	_SCREAMING_SNAKE_CASE=(3,) ,	_SCREAMING_SNAKE_CASE=80 ,	_SCREAMING_SNAKE_CASE=1 ,	_SCREAMING_SNAKE_CASE=None ,	_SCREAMING_SNAKE_CASE="sum" ,	_SCREAMING_SNAKE_CASE=False ,	**_SCREAMING_SNAKE_CASE ,	):
			super().__init__(**_SCREAMING_SNAKE_CASE ,	pad_token_id=_SCREAMING_SNAKE_CASE ,	bos_token_id=_SCREAMING_SNAKE_CASE ,	eos_token_id=_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		str		    =   vocab_size
			__lowerCAmelCase    :		Any		    =   hidden_size
			__lowerCAmelCase    :		int		    =   num_hidden_layers
			__lowerCAmelCase    :		Any		    =   intermediate_size
			__lowerCAmelCase    :		Optional[int]		    =   num_attention_heads
			__lowerCAmelCase    :		str		    =   attention_head_dim
			__lowerCAmelCase    :		int		    =   max_position_embeddings
			__lowerCAmelCase    :		List[Any]		    =   layer_norm_eps
			__lowerCAmelCase    :		Tuple		    =   layerdrop
			__lowerCAmelCase    :		Dict		    =   hidden_act
			__lowerCAmelCase    :		Dict		    =   initializer_range
			__lowerCAmelCase    :		Any		    =   hidden_dropout_prob
			__lowerCAmelCase    :		Dict		    =   attention_probs_dropout_prob
			__lowerCAmelCase    :		List[str]		    =   pad_token_id
			__lowerCAmelCase    :		Union[str, Any]		    =   bos_token_id
			__lowerCAmelCase    :		int		    =   eos_token_id
			__lowerCAmelCase    :		Optional[int]		    =   conv_glu_dim
			__lowerCAmelCase    :		List[Any]		    =   conv_dropout
			__lowerCAmelCase    :		Tuple		    =   num_conv_layers
			__lowerCAmelCase    :		Tuple		    =   input_feat_per_channel
			__lowerCAmelCase    :		Optional[int]		    =   input_channels
			__lowerCAmelCase    :		str		    =   conv_channels
			__lowerCAmelCase    :		str		    =   ctc_loss_reduction
			__lowerCAmelCase    :		Tuple		    =   ctc_zero_infinity

			# prevents config testing fail with exporting to json
			__lowerCAmelCase    :		List[str]		    =   list(_SCREAMING_SNAKE_CASE				)
			__lowerCAmelCase    :		Dict		    =   list(_SCREAMING_SNAKE_CASE				)

			if len(self.conv_kernel				) != self.num_conv_layers:
				raise ValueError(
				    'Configuration for convolutional module is incorrect. '
				    'It is required that `len(config.conv_kernel)` == `config.num_conv_layers` '
				    f"but is `len(config.conv_kernel) = {len(self.conv_kernel				)}`, "
				    f"`config.num_conv_layers = {self.num_conv_layers}`."				)