


'''simple docstring'''



# 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 						_snake_case   (       a__		):
					lowerCAmelCase :Union[str, Any]						=   '''openai/whisper-base'''
					lowerCAmelCase :str						=   (
					    '''This is a tool that transcribes an audio into text. It takes an input named `audio` and returns the '''
					    '''transcribed text.'''
					)
					lowerCAmelCase :Optional[int]						=   '''transcriber'''
					lowerCAmelCase :str						=   WhisperProcessor
					lowerCAmelCase :Optional[Any]						=   WhisperForConditionalGeneration

					lowerCAmelCase :List[Any]						=   ['''audio''']
					lowerCAmelCase :Optional[int]						=   ['''text''']




					def 			snake_case__  ( self							,							_lowerCamelCase):
								return self.pre_processor(_lowerCamelCase							,							return_tensors="""pt""").input_features




					def 			snake_case__  ( self							,							_lowerCamelCase):
								return self.model.generate(inputs=_lowerCamelCase)




					def 			snake_case__  ( self							,							_lowerCamelCase):
								return self.pre_processor.batch_decode(_lowerCamelCase							,							skip_special_tokens=_lowerCamelCase)[0]



'''simple docstring'''



def       _UpperCamelCase (						UpperCamelCase__   ):
			UpperCAmelCase__					:   List[str]       				=       len(UpperCamelCase__   )
			UpperCAmelCase__					:   List[Any]       				=       sum(UpperCamelCase__   )

			UpperCAmelCase__					:   List[str]       				=       [[False for x in range(s + 1   )] for y in range(n + 1   )]

			for i in range(1	, n + 1   ):
						UpperCAmelCase__					:   int       				=       True

			for i in range(1	, s + 1   ):
						UpperCAmelCase__					:   Dict       				=       False

			for i in range(1	, n + 1   ):
						for j in range(1	, s + 1   ):
									UpperCAmelCase__					:   int       				=       dp[i][j - 1]

									if arr[i - 1] <= j:
												UpperCAmelCase__					:   str       				=       dp[i][j] or dp[i - 1][j - arr[i - 1]]

			for j in range(int(s / 2   )	, -1	, -1   ):
						if dp[n][j] is True:
									UpperCAmelCase__					:   int       				=       s - 2 * j
									break

			return diff