
"""simple docstring"""

from collections import OrderedDict
from typing import TYPE_CHECKING, Any, Mapping, Optional, Union

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig, OnnxSeqaSeqConfigWithPast
from ...utils import logging


if TYPE_CHECKING:
					from ...feature_extraction_utils import FeatureExtractionMixin
					from ...tokenization_utils_base import PreTrainedTokenizerBase
					from ...utils import TensorType

_A						=			logging.get_logger(__name__)

_A						=			{
    'openai/whisper-base': 'https://huggingface.co/openai/whisper-base/resolve/main/config.json',
}

# fmt: off
_A						=			[
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_7, 3_6_6, 4_3_8, 5_3_2, 6_8_5,
    7_0_5, 7_9_6, 9_3_0, 1_0_5_8, 1_2_2_0, 1_2_6_7, 1_2_7_9, 1_3_0_3, 1_3_4_3, 1_3_7_7,
    1_3_9_1, 1_6_3_5, 1_7_8_2, 1_8_7_5, 2_1_6_2, 2_3_6_1, 2_4_8_8, 3_4_6_7, 4_0_0_8, 4_2_1_1,
    4_6_0_0, 4_8_0_8, 5_2_9_9, 5_8_5_5, 6_3_2_9, 7_2_0_3, 9_6_0_9, 9_9_5_9, 1_0_5_6_3, 1_0_7_8_6,
    1_1_4_2_0, 1_1_7_0_9, 1_1_9_0_7, 1_3_1_6_3, 1_3_6_9_7, 1_3_7_0_0, 1_4_8_0_8, 1_5_3_0_6, 1_6_4_1_0, 1_6_7_9_1,
    1_7_9_9_2, 1_9_2_0_3, 1_9_5_1_0, 2_0_7_2_4, 2_2_3_0_5, 2_2_9_3_5, 2_7_0_0_7, 3_0_1_0_9, 3_0_4_2_0, 3_3_4_0_9,
    3_4_9_4_9, 4_0_2_8_3, 4_0_4_9_3, 4_0_5_4_9, 4_7_2_8_2, 4_9_1_4_6, 5_0_2_5_7, 5_0_3_5_9, 5_0_3_6_0, 5_0_3_6_1
]
_A						=			[
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_9, 5_0_3, 5_2_2, 5_4_2, 8_7_3,
    8_9_3, 9_0_2, 9_1_8, 9_2_2, 9_3_1, 1_3_5_0, 1_8_5_3, 1_9_8_2, 2_4_6_0, 2_6_2_7,
    3_2_4_6, 3_2_5_3, 3_2_6_8, 3_5_3_6, 3_8_4_6, 3_9_6_1, 4_1_8_3, 4_6_6_7, 6_5_8_5, 6_6_4_7,
    7_2_7_3, 9_0_6_1, 9_3_8_3, 1_0_4_2_8, 1_0_9_2_9, 1_1_9_3_8, 1_2_0_3_3, 1_2_3_3_1, 1_2_5_6_2, 1_3_7_9_3,
    1_4_1_5_7, 1_4_6_3_5, 1_5_2_6_5, 1_5_6_1_8, 1_6_5_5_3, 1_6_6_0_4, 1_8_3_6_2, 1_8_9_5_6, 2_0_0_7_5, 2_1_6_7_5,
    2_2_5_2_0, 2_6_1_3_0, 2_6_1_6_1, 2_6_4_3_5, 2_8_2_7_9, 2_9_4_6_4, 3_1_6_5_0, 3_2_3_0_2, 3_2_4_7_0, 3_6_8_6_5,
    4_2_8_6_3, 4_7_4_2_5, 4_9_8_7_0, 5_0_2_5_4, 5_0_2_5_8, 5_0_3_6_0, 5_0_3_6_1, 5_0_3_6_2
]






class 	_lowercase       (    __UpperCAmelCase		):
	lowercase_				=     'whisper'
	lowercase_				=     ['past_key_values']
	lowercase_				=     {'num_attention_heads': 'encoder_attention_heads', 'hidden_size': 'd_model'}




	def __init__(			self		,			UpperCAmelCase_=51865		,			UpperCAmelCase_=80		,			UpperCAmelCase_=6		,			UpperCAmelCase_=4		,			UpperCAmelCase_=6		,			UpperCAmelCase_=4		,			UpperCAmelCase_=1536		,			UpperCAmelCase_=1536		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=50257		,			UpperCAmelCase_=True		,			UpperCAmelCase_=True		,			UpperCAmelCase_="gelu"		,			UpperCAmelCase_=256		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=0.02		,			UpperCAmelCase_=False		,			UpperCAmelCase_=1500		,			UpperCAmelCase_=448		,			UpperCAmelCase_=50256		,			UpperCAmelCase_=50256		,			UpperCAmelCase_=50256		,			UpperCAmelCase_=None		,			UpperCAmelCase_=[220, 50256]		,			UpperCAmelCase_=False		,			UpperCAmelCase_=256		,			UpperCAmelCase_=False		,			UpperCAmelCase_=0.05		,			UpperCAmelCase_=10		,			UpperCAmelCase_=2		,			UpperCAmelCase_=0.0		,			UpperCAmelCase_=10		,			UpperCAmelCase_=0		,			UpperCAmelCase_=7		,			**UpperCAmelCase_		,			)		->							Any:
			lowerCamelCase					:      Any          =   vocab_size
			lowerCamelCase					:      Optional[Any]          =   num_mel_bins
			lowerCamelCase					:      List[Any]          =   d_model
			lowerCamelCase					:      Any          =   encoder_layers
			lowerCamelCase					:      Dict          =   encoder_attention_heads
			lowerCamelCase					:      Optional[Any]          =   decoder_layers
			lowerCamelCase					:      Tuple          =   decoder_attention_heads
			lowerCamelCase					:      Optional[Any]          =   decoder_ffn_dim
			lowerCamelCase					:      Dict          =   encoder_ffn_dim
			lowerCamelCase					:      Tuple          =   dropout
			lowerCamelCase					:      int          =   attention_dropout
			lowerCamelCase					:      int          =   activation_dropout
			lowerCamelCase					:      Union[str, Any]          =   activation_function
			lowerCamelCase					:      List[str]          =   init_std
			lowerCamelCase					:      List[str]          =   encoder_layerdrop
			lowerCamelCase					:      List[Any]          =   decoder_layerdrop
			lowerCamelCase					:      Optional[int]          =   use_cache
			lowerCamelCase					:      Dict          =   encoder_layers
			lowerCamelCase					:      Tuple          =   scale_embedding  # scale factor will be sqrt(d_model) if True
			lowerCamelCase					:      Dict          =   max_source_positions
			lowerCamelCase					:      List[str]          =   max_target_positions

			# Audio Classification-specific parameters. Feel free to ignore for other classes.
			lowerCamelCase					:      int          =   classifier_proj_size
			lowerCamelCase					:      Optional[int]          =   use_weighted_layer_sum

			# fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
			lowerCamelCase					:      str          =   apply_spec_augment
			lowerCamelCase					:      Optional[int]          =   mask_time_prob
			lowerCamelCase					:      Union[str, Any]          =   mask_time_length
			lowerCamelCase					:      str          =   mask_time_min_masks
			lowerCamelCase					:      Dict          =   mask_feature_prob
			lowerCamelCase					:      Optional[int]          =   mask_feature_length
			lowerCamelCase					:      int          =   mask_feature_min_masks

			lowerCamelCase					:      str          =   median_filter_width

			super().__init__(
			    pad_token_id=UpperCAmelCase_		,			bos_token_id=UpperCAmelCase_		,			eos_token_id=UpperCAmelCase_		,			is_encoder_decoder=UpperCAmelCase_		,			decoder_start_token_id=UpperCAmelCase_		,			suppress_tokens=UpperCAmelCase_		,			begin_suppress_tokens=UpperCAmelCase_		,			**UpperCAmelCase_		,			)






class 	_lowercase       (    __UpperCAmelCase		):




	@property
	def       _UpperCamelCase   (			self )		->							Mapping[str, Mapping[int, str]]:
			lowerCamelCase					:      Dict          =   OrderedDict(
			    [
			        ('input_features', {0: 'batch', 1: 'feature_size', 2: 'encoder_sequence'}),
			    ] )
			if self.use_past:
					lowerCamelCase					:      str          =   {0: 'batch'}
			else:
					lowerCamelCase					:      Tuple          =   {0: 'batch', 1: 'decoder_sequence'}

			if self.use_past:
					self.fill_with_past_key_values_(UpperCAmelCase_		,			direction='inputs' )

			return common_inputs




	def       _UpperCamelCase   (			self		,			UpperCAmelCase_		,			UpperCAmelCase_ = -1		,			UpperCAmelCase_ = -1		,			UpperCAmelCase_ = False		,			UpperCAmelCase_ = None		,			UpperCAmelCase_ = 22050		,			UpperCAmelCase_ = 5.0		,			UpperCAmelCase_ = 220		,			)		->							Mapping[str, Any]:
			lowerCamelCase					:      Optional[int]          =   OrderedDict()
			lowerCamelCase					:      Any          =   OnnxConfig.generate_dummy_inputs(
			    self		,			preprocessor=preprocessor.feature_extractor		,			batch_size=UpperCAmelCase_		,			framework=UpperCAmelCase_		,			sampling_rate=UpperCAmelCase_		,			time_duration=UpperCAmelCase_		,			frequency=UpperCAmelCase_		,			)
			lowerCamelCase					:      str          =   encoder_inputs['input_features'].shape[2]
			lowerCamelCase					:      Dict          =   encoder_sequence_length // 2 if self.use_past else seq_length

			lowerCamelCase					:      Optional[int]          =   super().generate_dummy_inputs(
			    preprocessor.tokenizer		,			UpperCAmelCase_		,			UpperCAmelCase_		,			UpperCAmelCase_		,			UpperCAmelCase_ )

			lowerCamelCase					:      Any          =   encoder_inputs.pop('input_features' )
			lowerCamelCase					:      Optional[int]          =   decoder_inputs.pop('decoder_input_ids' )

			if "past_key_values" in decoder_inputs:
					lowerCamelCase					:      List[str]          =   decoder_inputs.pop('past_key_values' )

			return dummy_inputs




	@property
	def       _UpperCamelCase   (			self )		->							float:
			return 1E-3








"""simple docstring"""

import argparse

import numpy as np
import torch

from transformers import SpeechTaHifiGan, SpeechTaHifiGanConfig, logging


logging.set_verbosity_info()
_A						=			logging.get_logger('transformers.models.speecht5')
def 		UpperCAmelCase (		a_,						a_,						a_      ):





		'''simple docstring'''


		hf_model.apply_weight_norm()

		lowerCamelCase					:      str          =   checkpoint['input_conv.weight_g']
		lowerCamelCase					:      int          =   checkpoint['input_conv.weight_v']
		lowerCamelCase					:      Optional[Any]          =   checkpoint['input_conv.bias']

		for i in range(len(config.upsample_rates      )      ):
				lowerCamelCase					:      Tuple          =   checkpoint[F"""upsamples.{i}.1.weight_g"""]
				lowerCamelCase					:      Any          =   checkpoint[F"""upsamples.{i}.1.weight_v"""]
				lowerCamelCase					:      List[str]          =   checkpoint[F"""upsamples.{i}.1.bias"""]

		for i in range(len(config.upsample_rates      ) * len(config.resblock_kernel_sizes      )      ):
				for j in range(len(config.resblock_dilation_sizes      )      ):
						lowerCamelCase					:      Optional[Any]          =   checkpoint[F"""blocks.{i}.convs1.{j}.1.weight_g"""]
						lowerCamelCase					:      Tuple          =   checkpoint[F"""blocks.{i}.convs1.{j}.1.weight_v"""]
						lowerCamelCase					:      Union[str, Any]          =   checkpoint[F"""blocks.{i}.convs1.{j}.1.bias"""]

						lowerCamelCase					:      Dict          =   checkpoint[F"""blocks.{i}.convs2.{j}.1.weight_g"""]
						lowerCamelCase					:      str          =   checkpoint[F"""blocks.{i}.convs2.{j}.1.weight_v"""]
						lowerCamelCase					:      Optional[Any]          =   checkpoint[F"""blocks.{i}.convs2.{j}.1.bias"""]

		lowerCamelCase					:      Any          =   checkpoint['output_conv.1.weight_g']
		lowerCamelCase					:      Tuple          =   checkpoint['output_conv.1.weight_v']
		lowerCamelCase					:      int          =   checkpoint['output_conv.1.bias']

		hf_model.remove_weight_norm()
@torch.no_grad()
def 		UpperCAmelCase (		a_,						a_,						a_,						a_=None,						a_=None,						):





		'''simple docstring'''


		if config_path is not None:
				lowerCamelCase					:      str          =   SpeechTaHifiGanConfig.from_pretrained(a_      )
		else:
				lowerCamelCase					:      Dict          =   SpeechTaHifiGanConfig()

		lowerCamelCase					:      int          =   SpeechTaHifiGan(a_      )

		lowerCamelCase					:      Optional[Any]          =   torch.load(a_      )
		load_weights(orig_checkpoint['model']['generator'],						a_,						a_      )

		lowerCamelCase					:      Tuple          =   np.load(a_      )
		lowerCamelCase					:      str          =   stats[0].reshape(-1      )
		lowerCamelCase					:      Optional[int]          =   stats[1].reshape(-1      )
		lowerCamelCase					:      Dict          =   torch.from_numpy(a_      ).float()
		lowerCamelCase					:      Optional[int]          =   torch.from_numpy(a_      ).float()

		model.save_pretrained(a_      )

		if repo_id:
				print('Pushing to the hub...'      )
				model.push_to_hub(a_      )


if __name__ == "__main__":
					_A						=			argparse.ArgumentParser()
					parser.add_argument('--checkpoint_path', required=True, default=None, type=str, help='Path to original checkpoint')
					parser.add_argument('--stats_path', required=True, default=None, type=str, help='Path to stats.npy file')
					parser.add_argument('--config_path', default=None, type=str, help='Path to hf config.json of model to convert')
					parser.add_argument(
					    '--pytorch_dump_folder_path', required=True, default=None, type=str, help='Path to the output PyTorch model.'
					)
					parser.add_argument(
					    '--push_to_hub', default=None, type=str, help='Where to upload the converted model on the 🤗 hub.'
					)

					_A						=			parser.parse_args()
					convert_hifigan_checkpoint(
					    args.checkpoint_path,
					    args.stats_path,
					    args.pytorch_dump_folder_path,
					    args.config_path,
					    args.push_to_hub,
					)






