





"""simple docstring"""





import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp




def 						lowerCAmelCase_      (    ):

 '''simple docstring'''






 __SCREAMING_SNAKE_CASE					:     Dict   				=			ArgumentParser(
     description=(
         '''PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes'''
     )						)

 # Optional arguments for the launch helper
 parser.add_argument('''--num_cores'''					, type=_lowercase					, default=1					, help='''Number of TPU cores to use (1 or 8).'''						)

 # positional
 parser.add_argument(
     '''training_script'''					, type=_lowercase					, help=(
         '''The full path to the single TPU training '''
         '''program/script to be launched in parallel, '''
         '''followed by all the arguments for the '''
         '''training script'''
     )					, )

 # rest from the training program
 parser.add_argument('''training_script_args'''					, nargs=_lowercase						)

 return parser.parse_args()




def 						lowerCAmelCase_      (    ):

 '''simple docstring'''






 __SCREAMING_SNAKE_CASE					:     Any   				=			parse_args()

 # Import training_script as a module.
 __SCREAMING_SNAKE_CASE					:     Dict   				=			Path(args.training_script						)
 sys.path.append(str(script_fpath.parent.resolve()						)						)
 __SCREAMING_SNAKE_CASE					:     int   				=			script_fpath.stem
 __SCREAMING_SNAKE_CASE					:     List[Any]   				=			importlib.import_module(_lowercase						)

 # Patch sys.argv
 __SCREAMING_SNAKE_CASE					:     int   				=			[args.training_script] + args.training_script_args + ['''--tpu_num_cores''', str(args.num_cores						)]

 xmp.spawn(mod._mp_fn					, args=()					, nprocs=args.num_cores						)


if __name__ == "__main__":
    main()



# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from ..models.whisper import WhisperForConditionalGeneration, WhisperProcessor
from .base import PipelineTool
class       _lowerCAmelCase  (		__magic_name__							):

 """simple docstring"""
 SCREAMING_SNAKE_CASE_				:					Tuple       						="openai/whisper-base"
 SCREAMING_SNAKE_CASE_				:					List[str]       						=(
     "This is a tool that transcribes an audio into text. It takes an input named `audio` and returns the "
     "transcribed text."
 )
 SCREAMING_SNAKE_CASE_				:					int       						="transcriber"
 SCREAMING_SNAKE_CASE_				:					Tuple       						=WhisperProcessor
 SCREAMING_SNAKE_CASE_				:					List[Any]       						=WhisperForConditionalGeneration

 SCREAMING_SNAKE_CASE_				:					Union[str, Any]       						=["audio"]
 SCREAMING_SNAKE_CASE_				:					Any       						=["text"]

 def      __lowerCAmelCase  (						self			:			List[Any]					, SCREAMING_SNAKE_CASE__			:			List[Any]   ):






      """simple docstring"""



      return self.pre_processor(SCREAMING_SNAKE_CASE__					, return_tensors='pt'   ).input_features

 def      __lowerCAmelCase  (						self			:			Tuple					, SCREAMING_SNAKE_CASE__			:			Union[str, Any]   ):






      """simple docstring"""



      return self.model.generate(inputs=SCREAMING_SNAKE_CASE__   )






 def      __lowerCAmelCase  (						self			:			List[str]					, SCREAMING_SNAKE_CASE__			:			List[str]   ):






      """simple docstring"""



      return self.pre_processor.batch_decode(SCREAMING_SNAKE_CASE__					, skip_special_tokens=SCREAMING_SNAKE_CASE__   )[0]


