




import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()


class 							UpperCamelCase_       (					unittest.TestCase	):

    '''simple docstring'''






    @property
    def 			SCREAMING_SNAKE_CASE				(     self :      List[Any])		->Optional[Any]:





           '''simple docstring'''

           torch.manual_seed(0)
           A__ 					=       UNetaDModel(
               block_out_channels=(32, 64)   ,					layers_per_block=2   ,					sample_size=32   ,					in_channels=3   ,					out_channels=3   ,					down_block_types=('''DownBlock2D''', '''AttnDownBlock2D''')   ,					up_block_types=('''AttnUpBlock2D''', '''UpBlock2D''')   ,					)
           return model


    @property
    def 			SCREAMING_SNAKE_CASE				(     self :      Tuple)		->Union[str, Any]:





           '''simple docstring'''

           torch.manual_seed(0)
           A__ 					=       VQModel(
               block_out_channels=[32, 64]   ,					in_channels=3   ,					out_channels=3   ,					down_block_types=['''DownEncoderBlock2D''', '''DownEncoderBlock2D''']   ,					up_block_types=['''UpDecoderBlock2D''', '''UpDecoderBlock2D''']   ,					latent_channels=3   ,					)
           return model


    @property
    def 			SCREAMING_SNAKE_CASE				(     self :      Optional[int])		->List[Any]:





           '''simple docstring'''

           torch.manual_seed(0)
           A__ 					=       CLIPTextConfig(
               bos_token_id=0   ,					eos_token_id=2   ,					hidden_size=32   ,					intermediate_size=37   ,					layer_norm_eps=1e-05   ,					num_attention_heads=4   ,					num_hidden_layers=5   ,					pad_token_id=1   ,					vocab_size=1_000   ,					)
           return CLIPTextModel(UpperCAmelCase__)





    def 			SCREAMING_SNAKE_CASE				(     self :      Optional[Any])		->Dict:





           '''simple docstring'''

           A__ 					=       self.dummy_uncond_unet
           A__ 					=       DDIMScheduler()
           A__ 					=       self.dummy_vq_model

           A__ 					=       LDMPipeline(unet=UpperCAmelCase__   ,					vqvae=UpperCAmelCase__   ,					scheduler=UpperCAmelCase__)
           ldm.to(UpperCAmelCase__)
           ldm.set_progress_bar_config(disable=UpperCAmelCase__)

           A__ 					=       torch.manual_seed(0)
           A__ 					=       ldm(generator=UpperCAmelCase__   ,					num_inference_steps=2   ,					output_type='''numpy''').images

           A__ 					=       torch.manual_seed(0)
           A__ 					=       ldm(generator=UpperCAmelCase__   ,					num_inference_steps=2   ,					output_type='''numpy'''   ,					return_dict=UpperCAmelCase__)[0]

           A__ 					=       image[0, -3:, -3:, -1]
           A__ 					=       image_from_tuple[0, -3:, -3:, -1]

           assert image.shape == (1, 64, 64, 3)
           A__ 					=       np.array([0.8512, 0.818, 0.6411, 0.6808, 0.4465, 0.5618, 0.46, 0.6231, 0.5172])
           A__ 					=       1e-2 if torch_device != '''mps''' else 3e-2

           assert np.abs(image_slice.flatten() - expected_slice).max() < tolerance
           assert np.abs(image_from_tuple_slice.flatten() - expected_slice).max() < tolerance


@slow
@require_torch
class 							UpperCamelCase_       (					unittest.TestCase	):

    '''simple docstring'''






    def 			SCREAMING_SNAKE_CASE				(     self :      str)		->Dict:





           '''simple docstring'''

           A__ 					=       LDMPipeline.from_pretrained('''CompVis/ldm-celebahq-256''')
           ldm.to(UpperCAmelCase__)
           ldm.set_progress_bar_config(disable=UpperCAmelCase__)

           A__ 					=       torch.manual_seed(0)
           A__ 					=       ldm(generator=UpperCAmelCase__   ,					num_inference_steps=5   ,					output_type='''numpy''').images

           A__ 					=       image[0, -3:, -3:, -1]

           assert image.shape == (1, 256, 256, 3)
           A__ 					=       np.array([0.4399, 0.44975, 0.46825, 0.474, 0.4359, 0.4581, 0.45095, 0.4341, 0.4447])
           A__ 					=       1e-2 if torch_device != '''mps''' else 3e-2

           assert np.abs(image_slice.flatten() - expected_slice).max() < tolerance









import unittest

import numpy as np

from transformers import MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING, TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING
from transformers.pipelines import AudioClassificationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_torchaudio,
    slow,
)

from .test_pipelines_common import ANY


@is_pipeline_test
class       __lowerCAmelCase					(       unittest.TestCase      ):


	'''simple docstring'''





	_A													=				MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING
	_A													=				TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING

	def    snake_case__(						self:						Optional[int],					lowerCamelCase_:						Tuple,					lowerCamelCase_:						List[Any],					lowerCamelCase_:						Optional[Any]			):
			lowercase__					:      int      =		AudioClassificationPipeline(model=lowerCamelCase_,					feature_extractor=lowerCamelCase_			)

			# test with a raw waveform
			lowercase__					:      Dict      =		np.zeros((34000,)			)
			lowercase__					:      Optional[int]      =		np.zeros((14000,)			)
			return audio_classifier, [audioa, audio]

	def    snake_case__(						self:						Optional[int],					lowerCamelCase_:						Tuple,					lowerCamelCase_:						str			):
			lowercase__   ,				lowercase__					:      List[str]      =		examples
			lowercase__					:      int      =		audio_classifier(lowerCamelCase_			)
			# by default a model is initialized with num_labels=2
			self.assertEqual(
			    lowerCamelCase_,					[
			        {'score': ANY(lowerCamelCase_			), 'label': ANY(lowerCamelCase_			)},
			        {'score': ANY(lowerCamelCase_			), 'label': ANY(lowerCamelCase_			)},
			    ],					)
			lowercase__					:      List[Any]      =		audio_classifier(lowerCamelCase_,					top_k=1			)
			self.assertEqual(
			    lowerCamelCase_,					[
			        {'score': ANY(lowerCamelCase_			), 'label': ANY(lowerCamelCase_			)},
			    ],					)

			self.run_torchaudio(lowerCamelCase_			)

	@require_torchaudio
	def    snake_case__(						self:						Dict,					lowerCamelCase_:						str			):
			import datasets

			# test with a local file
			lowercase__					:      Optional[Any]      =		datasets.load_dataset('hf-internal-testing/librispeech_asr_dummy',					'clean',					split='validation'			)
			lowercase__					:      int      =		dataset[0]['audio']['array']
			lowercase__					:      Tuple      =		audio_classifier(lowerCamelCase_			)
			self.assertEqual(
			    lowerCamelCase_,					[
			        {'score': ANY(lowerCamelCase_			), 'label': ANY(lowerCamelCase_			)},
			        {'score': ANY(lowerCamelCase_			), 'label': ANY(lowerCamelCase_			)},
			    ],					)

	@require_torch
	def    snake_case__(						self:						Optional[int]			):
			lowercase__					:      List[str]      =		'anton-l/wav2vec2-random-tiny-classifier'

			lowercase__					:      Tuple      =		pipeline('audio-classification',					model=lowerCamelCase_			)

			lowercase__					:      List[str]      =		np.ones((8000,)			)
			lowercase__					:      List[Any]      =		audio_classifier(lowerCamelCase_,					top_k=4			)

			lowercase__					:      List[str]      =		[
			    {'score': 0.0_8_4_2, 'label': 'no'},
			    {'score': 0.0_8_3_8, 'label': 'up'},
			    {'score': 0.0_8_3_7, 'label': 'go'},
			    {'score': 0.0_8_3_4, 'label': 'right'},
			]
			lowercase__					:      Optional[int]      =		[
			    {'score': 0.0_8_4_5, 'label': 'stop'},
			    {'score': 0.0_8_4_4, 'label': 'on'},
			    {'score': 0.0_8_4_1, 'label': 'right'},
			    {'score': 0.0_8_3_4, 'label': 'left'},
			]
			self.assertIn(nested_simplify(lowerCamelCase_,					decimals=4			),					[EXPECTED_OUTPUT, EXPECTED_OUTPUT_PT_2]			)

			lowercase__					:      Tuple      =		{'array': np.ones((8000,)			), 'sampling_rate': audio_classifier.feature_extractor.sampling_rate}
			lowercase__					:      Any      =		audio_classifier(lowerCamelCase_,					top_k=4			)
			self.assertIn(nested_simplify(lowerCamelCase_,					decimals=4			),					[EXPECTED_OUTPUT, EXPECTED_OUTPUT_PT_2]			)

	@require_torch
	@slow
	def    snake_case__(						self:						Optional[int]			):
			import datasets

			lowercase__					:      str      =		'superb/wav2vec2-base-superb-ks'

			lowercase__					:      Optional[int]      =		pipeline('audio-classification',					model=lowerCamelCase_			)
			lowercase__					:      List[Any]      =		datasets.load_dataset('anton-l/superb_dummy',					'ks',					split='test'			)

			lowercase__					:      Optional[Any]      =		np.array(dataset[3]['speech'],					dtype=np.floataa			)
			lowercase__					:      Optional[int]      =		audio_classifier(lowerCamelCase_,					top_k=4			)
			self.assertEqual(
			    nested_simplify(lowerCamelCase_,					decimals=3			),					[
			        {'score': 0.9_8_1, 'label': 'go'},
			        {'score': 0.0_0_7, 'label': 'up'},
			        {'score': 0.0_0_6, 'label': '_unknown_'},
			        {'score': 0.0_0_1, 'label': 'down'},
			    ],					)





	@require_tf
	@unittest.skip('Audio classification is not implemented for TF'			)
	def    snake_case__(						self:						int			):
			pass


