

# 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 						__magic_name__			(							lowerCamelCase__							):

   '''simple docstring'''




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

   lowerCamelCase__ :	Optional[Any]    =   ['audio']
   lowerCamelCase__ :	int    =   ['text']



   def  _UpperCAmelCase (				self,    lowercase_       )							->    List[Any]:






     """simple docstring"""






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



   def  _UpperCAmelCase (				self,    lowercase_       )							->    int:






     """simple docstring"""






     return self.model.generate(inputs=lowercase_       )



   def  _UpperCAmelCase (				self,    lowercase_       )							->    Tuple:






     """simple docstring"""






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



from __future__ import annotations




def 			UpperCAmelCase__				(			_A      : float	,      _A      : float	,      _A      : float	,      ):





  '''simple docstring'''







  if (electron_conc, hole_conc, intrinsic_conc).count(0							) != 1:
    raise ValueError('''You cannot supply more or less than 2 values'''							)
  elif electron_conc < 0:
    raise ValueError('''Electron concentration cannot be negative in a semiconductor'''							)
  elif hole_conc < 0:
    raise ValueError('''Hole concentration cannot be negative in a semiconductor'''							)
  elif intrinsic_conc < 0:
    raise ValueError(
        '''Intrinsic concentration cannot be negative in a semiconductor'''							)
  elif electron_conc == 0:
    return (
        "electron_conc",
        intrinsic_conc**2 / hole_conc,
    )
  elif hole_conc == 0:
    return (
        "hole_conc",
        intrinsic_conc**2 / electron_conc,
    )
  elif intrinsic_conc == 0:
    return (
        "intrinsic_conc",
        (electron_conc * hole_conc) ** 0.5,
    )
  else:
    return (-1, -1)


if __name__ == "__main__":
       import doctest

       doctest.testmod()
