code: 
  import shutil
  import tempfile
  import unittest
  
  import pytest
  
  from transformers import WhisperTokenizer, is_speech_available
  from transformers.testing_utils import require_sentencepiece, require_torch, require_torchaudio
  
  from .test_feature_extraction_whisper import floats_list
  
  
  if is_speech_available():
  							from transformers import WhisperFeatureExtractor, WhisperProcessor
  
  
  __lowerCAmelCase				      =					5_0_3_5_8
  __lowerCAmelCase				      =					5_0_3_6_2
  
  
  
  
  
  @require_torch
  @require_torchaudio
  @require_sentencepiece
  class 						lowerCamelCase			(					unittest.TestCase				):
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Any )		->			Optional[Any]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   '''openai/whisper-small.en'''
  				SCREAMING_SNAKE_CASE    	=   tempfile.mkdtemp()
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[int]      ,    **lowercase			:List[Any] )		->			Dict:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				return WhisperTokenizer.from_pretrained(self.checkpoint      ,    **lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Tuple      ,    **lowercase			:str )		->			int:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				return WhisperFeatureExtractor.from_pretrained(self.checkpoint      ,    **lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:str )		->			Any:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				shutil.rmtree(self.tmpdirname )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[int] )		->			int:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  
  				processor.save_pretrained(self.tmpdirname )
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor.from_pretrained(self.tmpdirname )
  
  				self.assertEqual(processor.tokenizer.get_vocab()      ,    tokenizer.get_vocab() )
  				self.assertIsInstance(processor.tokenizer      ,    lowercase )
  
  				self.assertEqual(processor.feature_extractor.to_json_string()      ,    feature_extractor.to_json_string() )
  				self.assertIsInstance(processor.feature_extractor      ,    lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[int] )		->			List[str]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=self.get_tokenizer()      ,    feature_extractor=self.get_feature_extractor() )
  				processor.save_pretrained(self.tmpdirname )
  
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer(bos_token='''(BOS)'''      ,    eos_token='''(EOS)''' )
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor(do_normalize=lowercase      ,    padding_value=1.0 )
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor.from_pretrained(
  				    self.tmpdirname      ,    bos_token='''(BOS)'''      ,    eos_token='''(EOS)'''      ,    do_normalize=lowercase      ,    padding_value=1.0 )
  
  				self.assertEqual(processor.tokenizer.get_vocab()      ,    tokenizer_add_kwargs.get_vocab() )
  				self.assertIsInstance(processor.tokenizer      ,    lowercase )
  
  				self.assertEqual(processor.feature_extractor.to_json_string()      ,    feature_extractor_add_kwargs.to_json_string() )
  				self.assertIsInstance(processor.feature_extractor      ,    lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Any )		->			List[Any]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  
  				SCREAMING_SNAKE_CASE    	=   floats_list((3, 1_0_0_0) )
  
  				SCREAMING_SNAKE_CASE    	=   feature_extractor(lowercase      ,    return_tensors='''np''' )
  				SCREAMING_SNAKE_CASE    	=   processor(lowercase      ,    return_tensors='''np''' )
  
  				for key in input_feat_extract.keys():
  							self.assertAlmostEqual(input_feat_extract[key].sum()      ,    input_processor[key].sum()      ,    delta=1e-2 )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[int] )		->			Optional[Any]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  
  				SCREAMING_SNAKE_CASE    	=   '''This is a test string'''
  
  				SCREAMING_SNAKE_CASE    	=   processor(text=lowercase )
  
  				SCREAMING_SNAKE_CASE    	=   tokenizer(lowercase )
  
  				for key in encoded_tok.keys():
  							self.assertListEqual(encoded_tok[key]      ,    encoded_processor[key] )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[Any] )		->			Optional[int]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  
  				SCREAMING_SNAKE_CASE    	=   [[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]
  
  				SCREAMING_SNAKE_CASE    	=   processor.batch_decode(lowercase )
  				SCREAMING_SNAKE_CASE    	=   tokenizer.batch_decode(lowercase )
  
  				self.assertListEqual(lowercase      ,    lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Optional[int] )		->			Any:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  
  				self.assertListEqual(
  				    processor.model_input_names      ,    feature_extractor.model_input_names      ,    msg='''`processor` and `feature_extractor` model input names do not match'''      ,    )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Tuple )		->			Optional[Any]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   self.get_feature_extractor()
  				SCREAMING_SNAKE_CASE    	=   self.get_tokenizer()
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=lowercase      ,    feature_extractor=lowercase )
  				SCREAMING_SNAKE_CASE    	=   processor.get_decoder_prompt_ids(task='''transcribe'''      ,    no_timestamps=lowercase )
  
  				self.assertIsInstance(lowercase      ,    lowercase )
  				for ids in forced_decoder_ids:
  							self.assertIsInstance(lowercase      ,    (list, tuple) )
  
  				SCREAMING_SNAKE_CASE    	=   [TRANSCRIBE, NOTIMESTAMPS]
  				self.assertListEqual([ids[-1] for ids in forced_decoder_ids]      ,    lowercase )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Tuple )		->			Optional[int]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=self.get_tokenizer()      ,    feature_extractor=self.get_feature_extractor() )
  				SCREAMING_SNAKE_CASE    	=   processor.get_prompt_ids('''Mr. Quilter''' )
  				SCREAMING_SNAKE_CASE    	=   processor.tokenizer.decode(lowercase )
  
  				self.assertListEqual(prompt_ids.tolist()      ,    [5_0_3_6_0, 1_7_7_0, 1_3, 2_2_6_4, 3_4_6, 3_5_3] )
  				self.assertEqual(lowercase      ,    '''<|startofprev|> Mr. Quilter''' )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:int )		->			Optional[int]:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=self.get_tokenizer()      ,    feature_extractor=self.get_feature_extractor() )
  				SCREAMING_SNAKE_CASE    	=   processor.get_prompt_ids('''''' )
  				SCREAMING_SNAKE_CASE    	=   processor.tokenizer.decode(lowercase )
  
  				self.assertListEqual(prompt_ids.tolist()      ,    [5_0_3_6_0, 2_2_0] )
  				self.assertEqual(lowercase      ,    '''<|startofprev|> ''' )
  
  
  
  
  
  
  
  	def    snake_case__    (    self			:Dict )		->			Any:
  
  
  
  
  
  
  
  				"""simple docstring"""
  
  
  
  
  
  
  				SCREAMING_SNAKE_CASE    	=   WhisperProcessor(tokenizer=self.get_tokenizer()      ,    feature_extractor=self.get_feature_extractor() )
  
  				def _test_prompt_error_raised_helper(lowercase			:Union[str, Any]      ,    lowercase			:List[str] ):
  							with pytest.raises(lowercase ) as excinfo:
  										processor.get_prompt_ids(lowercase )
  							SCREAMING_SNAKE_CASE    	=   f"""Encountered text in the prompt corresponding to disallowed special token: {special_token}."""
  							self.assertEqual(lowercase      ,    str(excinfo.value ) )
  
  				_test_prompt_error_raised_helper('''<|startofprev|> test'''      ,    '''<|startofprev|>''' )
  				_test_prompt_error_raised_helper('''test <|notimestamps|>'''      ,    '''<|notimestamps|>''' )
  				_test_prompt_error_raised_helper('''test <|zh|> test <|transcribe|>'''      ,    '''<|zh|>''' )
style_context: 
  from __future__ import annotations
  
  
  def       a			(   a		,	a  )    ->str:
  
  
  
  
  			'''simple docstring'''
  
  
  			SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   '''''', '''''', ''''''
  			SCREAMING_SNAKE_CASE    	=   []
  
  			for character in message_part:
  						tmp.append(character_to_number[character]  )
  
  			for each in tmp:
  						one += each[0]
  						two += each[1]
  						three += each[2]
  
  			return one + two + three
  
  
  def       a			(   a		,	a  )    ->tuple[str, str, str]:
  
  
  
  
  			'''simple docstring'''
  
  
  			SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   '''''', ''''''
  			SCREAMING_SNAKE_CASE    	=   []
  
  			for character in message_part:
  						this_part += character_to_number[character]
  
  			for digit in this_part:
  						tmp += digit
  						if len(a  ) == len(a  ):
  									result.append(a  )
  									SCREAMING_SNAKE_CASE    	=   ''''''
  
  			return result[0], result[1], result[2]
  
  
  def       a			(   a		,	a  )    ->tuple[str, str, dict[str, str], dict[str, str]]:
  
  
  
  
  			'''simple docstring'''
  
  
  			SCREAMING_SNAKE_CASE    	=   alphabet.replace(''' '''		,	''''''  ).upper()
  			SCREAMING_SNAKE_CASE    	=   message.replace(''' '''		,	''''''  ).upper()
  
  			# Check length and characters
  			if len(a  ) != 27:
  						raise KeyError('''Length of alphabet has to be 27.'''  )
  			for each in message:
  						if each not in alphabet:
  									raise ValueError('''Each message character has to be included in alphabet!'''  )
  
      # Generate dictionares
  			SCREAMING_SNAKE_CASE    	=   (
  			    '''111''',
  			    '''112''',
  			    '''113''',
  			    '''121''',
  			    '''122''',
  			    '''123''',
  			    '''131''',
  			    '''132''',
  			    '''133''',
  			    '''211''',
  			    '''212''',
  			    '''213''',
  			    '''221''',
  			    '''222''',
  			    '''223''',
  			    '''231''',
  			    '''232''',
  			    '''233''',
  			    '''311''',
  			    '''312''',
  			    '''313''',
  			    '''321''',
  			    '''322''',
  			    '''323''',
  			    '''331''',
  			    '''332''',
  			    '''333''',
  			)
  			SCREAMING_SNAKE_CASE    	=   {}
  			SCREAMING_SNAKE_CASE    	=   {}
  			for letter, number in zip(a		,	a  ):
  						SCREAMING_SNAKE_CASE    	=   number
  						SCREAMING_SNAKE_CASE    	=   letter
  
  			return message, alphabet, character_to_number, number_to_character
  
  
  def       a			(   a		,	a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."		,	a = 5  )    ->str:
  
  
  
  
  			'''simple docstring'''
  
  
  			SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   __prepare(
  			    a		,	a  )
  			SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   '''''', ''''''
  
  			for i in range(0		,	len(a  ) + 1		,	a  ):
  						encrypted_numeric += __encrypt_part(
  						    message[i : i + period]		,	a  )
  
  			for i in range(0		,	len(a  )		,	3  ):
  						encrypted += number_to_character[encrypted_numeric[i : i + 3]]
  
  			return encrypted
  
  
  def       a			(   a		,	a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."		,	a = 5  )    ->str:
  
  
  
  
  			'''simple docstring'''
  
  
  			SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   __prepare(
  			    a		,	a  )
  			SCREAMING_SNAKE_CASE    	=   []
  			SCREAMING_SNAKE_CASE    	=   ''''''
  
  			for i in range(0		,	len(a  ) + 1		,	a  ):
  						SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE	,       SCREAMING_SNAKE_CASE    	=   __decrypt_part(message[i : i + period]		,	a  )
  
  						for j in range(0		,	len(a  )  ):
  									decrypted_numeric.append(a[j] + b[j] + c[j]  )
  
  			for each in decrypted_numeric:
  						decrypted += number_to_character[each]
  
  			return decrypted
  
  
  if __name__ == "__main__":
  							__lowerCAmelCase				      =					'DEFEND THE EAST WALL OF THE CASTLE.'
  							__lowerCAmelCase				      =					encrypt_message(msg, 'EPSDUCVWYM.ZLKXNBTFGORIJHAQ')
  							__lowerCAmelCase				      =					decrypt_message(encrypted, 'EPSDUCVWYM.ZLKXNBTFGORIJHAQ')
  							print(F'''Encrypted: {encrypted}\nDecrypted: {decrypted}''')