






'''simple docstring'''
import functools
import operator

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a_					= logging.get_logger(__name__)

a_					= {
    '''microsoft/wavlm-base''': '''https://huggingface.co/microsoft/wavlm-base/resolve/main/config.json''',
    # See all WavLM models at https://huggingface.co/models?filter=wavlm
}






class      __SCREAMING_SNAKE_CASE      (			UpperCAmelCase__				):
 snake_case_  							=							"""wavlm"""




 def __init__(      self	:							Tuple					,      __lowercase	:							Optional[int]=32					,      __lowercase	:							Dict=7_68					,      __lowercase	:							int=12					,      __lowercase	:							Optional[Any]=12					,      __lowercase	:							List[str]=30_72					,      __lowercase	:							Tuple="gelu"					,      __lowercase	:							str=0.1					,      __lowercase	:							List[Any]=0.1					,      __lowercase	:							str=0.1					,      __lowercase	:							int=0.0					,      __lowercase	:							Any=0.1					,      __lowercase	:							Optional[Any]=0.1					,      __lowercase	:							Dict=0.02					,      __lowercase	:							Tuple=1e-5					,      __lowercase	:							Optional[int]="group"					,      __lowercase	:							List[Any]="gelu"					,      __lowercase	:							List[Any]=(5_12, 5_12, 5_12, 5_12, 5_12, 5_12, 5_12)					,      __lowercase	:							List[Any]=(5, 2, 2, 2, 2, 2, 2)					,      __lowercase	:							Dict=(10, 3, 3, 3, 3, 2, 2)					,      __lowercase	:							Union[str, Any]=False					,      __lowercase	:							int=1_28					,      __lowercase	:							Tuple=16					,      __lowercase	:							str=3_20					,      __lowercase	:							List[str]=8_00					,      __lowercase	:							Dict=False					,      __lowercase	:							int=True					,      __lowercase	:							Union[str, Any]=0.05					,      __lowercase	:							int=10					,      __lowercase	:							Optional[Any]=2					,      __lowercase	:							Union[str, Any]=0.0					,      __lowercase	:							Optional[int]=10					,      __lowercase	:							Dict=3_20					,      __lowercase	:							Dict=2					,      __lowercase	:							Any=0.1					,      __lowercase	:							Union[str, Any]=1_00					,      __lowercase	:							str=2_56					,      __lowercase	:							int=2_56					,      __lowercase	:							Optional[Any]=0.1					,      __lowercase	:							Tuple="mean"					,      __lowercase	:							Dict=False					,      __lowercase	:							str=False					,      __lowercase	:							Union[str, Any]=2_56					,      __lowercase	:							Tuple=(5_12, 5_12, 5_12, 5_12, 15_00)					,      __lowercase	:							List[str]=(5, 3, 3, 1, 1)					,      __lowercase	:							Tuple=(1, 2, 3, 1, 1)					,      __lowercase	:							Optional[int]=5_12					,      __lowercase	:							Any=80					,      __lowercase	:							int=0					,      __lowercase	:							Dict=1					,      __lowercase	:							List[str]=2					,      __lowercase	:							Tuple=False					,      __lowercase	:							List[Any]=3					,      __lowercase	:							Optional[int]=2					,      __lowercase	:							Optional[Any]=3					,      __lowercase	:							Optional[Any]=None					,      **__lowercase	:							List[str]					,      )	->						int:
       super().__init__(**__lowerCAmelCase					,      pad_token_id=__lowerCAmelCase					,      bos_token_id=__lowerCAmelCase					,      eos_token_id=__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Any									=hidden_size
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=feat_extract_norm
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=feat_extract_activation
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=conv_bias
       SCREAMING_SNAKE_CASE__     :				List[Any]									=num_buckets
       SCREAMING_SNAKE_CASE__     :				str									=max_bucket_distance
       SCREAMING_SNAKE_CASE__     :				Tuple									=num_conv_pos_embeddings
       SCREAMING_SNAKE_CASE__     :				int									=num_conv_pos_embedding_groups
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=len(self.conv_dim      )
       SCREAMING_SNAKE_CASE__     :				List[Any]									=num_hidden_layers
       SCREAMING_SNAKE_CASE__     :				Dict									=intermediate_size
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=hidden_act
       SCREAMING_SNAKE_CASE__     :				List[Any]									=num_attention_heads
       SCREAMING_SNAKE_CASE__     :				str									=hidden_dropout
       SCREAMING_SNAKE_CASE__     :				Tuple									=attention_dropout
       SCREAMING_SNAKE_CASE__     :				int									=activation_dropout
       SCREAMING_SNAKE_CASE__     :				Any									=feat_proj_dropout
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=final_dropout
       SCREAMING_SNAKE_CASE__     :				Any									=layerdrop
       SCREAMING_SNAKE_CASE__     :				List[Any]									=layer_norm_eps
       SCREAMING_SNAKE_CASE__     :				Dict									=initializer_range
       SCREAMING_SNAKE_CASE__     :				Dict									=num_ctc_classes
       SCREAMING_SNAKE_CASE__     :				Any									=vocab_size
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=do_stable_layer_norm
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=use_weighted_layer_sum
       SCREAMING_SNAKE_CASE__     :				str									=classifier_proj_size

       if (
           (len(self.conv_stride      ) != self.num_feat_extract_layers)
           or (len(self.conv_kernel      ) != self.num_feat_extract_layers)
           or (len(self.conv_dim      ) != self.num_feat_extract_layers)
       ):
             raise ValueError(
                 '''Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =='''
                 ''' `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ='''
                 F" {len(self.conv_dim      )}`, `len(config.conv_stride) = {len(self.conv_stride      )}`,"
                 F" `len(config.conv_kernel) = {len(self.conv_kernel      )}`."      )

       # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
       SCREAMING_SNAKE_CASE__     :				str									=apply_spec_augment
       SCREAMING_SNAKE_CASE__     :				str									=mask_time_prob
       SCREAMING_SNAKE_CASE__     :				int									=mask_time_length
       SCREAMING_SNAKE_CASE__     :				int									=mask_time_min_masks
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=mask_feature_prob
       SCREAMING_SNAKE_CASE__     :				Tuple									=mask_feature_length

       # parameters for pretraining with codevector quantized representations
       SCREAMING_SNAKE_CASE__     :				Tuple									=num_codevectors_per_group
       SCREAMING_SNAKE_CASE__     :				Dict									=num_codevector_groups
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=contrastive_logits_temperature
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=num_negatives
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=codevector_dim
       SCREAMING_SNAKE_CASE__     :				Tuple									=proj_codevector_dim
       SCREAMING_SNAKE_CASE__     :				List[Any]									=diversity_loss_weight

       # ctc loss
       SCREAMING_SNAKE_CASE__     :				Any									=ctc_loss_reduction
       SCREAMING_SNAKE_CASE__     :				int									=ctc_zero_infinity

       # adapter
       SCREAMING_SNAKE_CASE__     :				Tuple									=add_adapter
       SCREAMING_SNAKE_CASE__     :				List[str]									=adapter_kernel_size
       SCREAMING_SNAKE_CASE__     :				int									=adapter_stride
       SCREAMING_SNAKE_CASE__     :				List[str]									=num_adapter_layers
       SCREAMING_SNAKE_CASE__     :				Dict									=output_hidden_size or hidden_size

       # SequenceClassification-specific parameter. Feel free to ignore for other classes.
       SCREAMING_SNAKE_CASE__     :				List[Any]									=classifier_proj_size

       # XVector-specific parameters. Feel free to ignore for other classes.
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Any									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=list(__lowerCAmelCase      )
       SCREAMING_SNAKE_CASE__     :				Optional[Any]									=xvector_output_dim




 @property
 def      __magic_name__	(      self	:							Any      )	->						Union[str, Any]:
       return functools.reduce(operator.mul					,      self.conv_stride					,      1      )







'''simple docstring'''
import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch






class      __SCREAMING_SNAKE_CASE      (			unittest.TestCase				):
 snake_case_  							=							JukeboxTokenizer
 snake_case_  							=							{
     """artist""": """Zac Brown Band""",
     """genres""": """Country""",
     """lyrics""": """I met a traveller from an antique land,
        Who said \"Two vast and trunkless legs of stone
        Stand in the desert. . . . Near them, on the sand,
        Half sunk a shattered visage lies, whose frown,
        And wrinkled lip, and sneer of cold command,
        Tell that its sculptor well those passions read
        Which yet survive, stamped on these lifeless things,
        The hand that mocked them, and the heart that fed;
        And on the pedestal, these words appear:
        My name is Ozymandias, King of Kings;
        Look on my Works, ye Mighty, and despair!
        Nothing beside remains. Round the decay
        Of that colossal Wreck, boundless and bare
        The lone and level sands stretch far away
        """,
 }




 @require_torch
 def      __magic_name__	(      self	:							Optional[int]      )	->						str:
       import torch

       SCREAMING_SNAKE_CASE__     :				List[str]									=JukeboxTokenizer.from_pretrained('''openai/jukebox-1b-lyrics'''      )
       SCREAMING_SNAKE_CASE__     :				str									=tokenizer(**self.metas      )['''input_ids''']
       # fmt: off
       SCREAMING_SNAKE_CASE__     :				str									=[
           torch.tensor([[
               0, 0, 0, 71_69, 5_07, 9, 76, 39, 31, 46, 76, 27,
               76, 46, 44, 27, 48, 31, 38, 38, 31, 44, 76, 32,
               44, 41, 39, 76, 27, 40, 76, 27, 40, 46, 35, 43,
               47, 31, 76, 38, 27, 40, 30, 64, 78, 76, 76, 76,
               76, 76, 76, 76, 76, 23, 34, 41, 76, 45, 27, 35,
               30, 76, 71, 20, 49, 41, 76, 48, 27, 45, 46, 76,
               27, 40, 30, 76, 46, 44, 47, 40, 37, 38, 31, 45,
               45, 76, 38, 31, 33, 45, 76, 41, 32, 76, 45, 46,
               41, 40, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
               19, 46, 27, 40, 30, 76, 35, 40, 76, 46, 34, 31,
               76, 30, 31, 45, 31, 44, 46, 63, 76, 63, 76, 63,
               76, 63, 76, 14, 31, 27, 44, 76, 46, 34, 31, 39,
               64, 76, 41, 40, 76, 46, 34, 31, 76, 45, 27, 40,
               30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76, 8,
               27, 38, 32, 76, 45, 47, 40, 37, 76, 27, 76, 45,
               34, 27, 46, 46, 31, 44, 31, 30, 76, 48, 35, 45,
               27, 33, 31, 76, 38, 35, 31, 45, 64, 76, 49, 34,
               41, 45, 31, 76, 32, 44, 41, 49, 40, 64, 78, 76,
               76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76, 49,
               44, 35, 40, 37, 38, 31, 30, 76, 38, 35, 42, 64,
               76, 27, 40, 30, 76, 45, 40, 31, 31, 44, 76, 41,
               32, 76, 29, 41, 38, 30, 76, 29, 41, 39, 39, 27,
               40, 30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76,
               20, 31, 38, 38, 76, 46, 34, 27, 46, 76, 35, 46,
               45, 76, 45, 29, 47, 38, 42, 46, 41, 44, 76, 49,
               31, 38, 38, 76, 46, 34, 41, 45, 31, 76, 42, 27,
               45, 45, 35, 41, 40, 45, 76, 44, 31, 27, 30, 78,
               76, 76, 76, 76, 76, 76, 76, 76, 23, 34, 35, 29,
               34, 76, 51, 31, 46, 76, 45, 47, 44, 48, 35, 48,
               31, 64, 76, 45, 46, 27, 39, 42, 31, 30, 76, 41,
               40, 76, 46, 34, 31, 45, 31, 76, 38, 35, 32, 31,
               38, 31, 45, 45, 76, 46, 34, 35, 40, 33, 45, 64,
               78, 76, 76, 76, 76, 76, 76, 76, 76, 20, 34, 31,
               76, 34, 27, 40, 30, 76, 46, 34, 27, 46, 76, 39,
               41, 29, 37, 31, 30, 76, 46, 34, 31, 39, 64, 76,
               27, 40, 30, 76, 46, 34, 31, 76, 34, 31, 27, 44,
               46, 76, 46, 34, 27, 46, 76, 32, 31, 30, 66, 78,
               76, 76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76,
               41, 40, 76, 46, 34, 31, 76, 42, 31, 30, 31, 45,
               46, 27, 38, 64, 76, 46, 34, 31, 45, 31, 76, 49,
               41, 44, 30, 45, 76, 27, 42, 42, 31, 27, 44, 65,
               78, 76, 76, 76, 76, 76, 76, 76, 76, 13, 51, 76,
               40, 27, 39, 31, 76, 35, 45, 76, 15, 52, 51, 39,
               27, 40, 30, 35, 27, 45, 64, 76, 11, 35, 40, 33,
               76, 41, 32, 76, 11, 35, 40, 33, 45, 66, 78, 76,
               76, 76, 76, 76, 76, 76, 76, 12, 41, 41, 37, 76,
               41, 40, 76, 39, 51, 76, 23, 41, 44, 37, 45, 64,
               76, 51, 31, 76, 13, 35, 33, 34, 46, 51, 64, 76,
               27, 40, 30, 76, 30, 31, 45, 42, 27, 35, 44, 67,
               78, 76, 76, 76, 76, 76, 76, 76, 76, 14, 41, 46,
               34, 35, 40, 33, 76, 28, 31, 45, 35, 30, 31, 76,
               44, 31, 39, 27, 35, 40, 45, 63, 76, 18, 41, 47,
               40, 30, 76, 46, 34, 31, 76, 30, 31, 29, 27, 51,
               78, 76, 76, 76, 76, 76, 76, 76, 76, 15, 32, 76,
               46, 34, 27, 46, 76, 29, 41, 38, 41, 45, 45, 27,
               38, 76, 23, 44, 31, 29, 37, 64, 76, 28, 41, 47,
               40, 30, 38, 31, 45, 45, 76, 27, 40, 30, 76, 28,
               27, 44, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
               20, 34, 31, 76, 38, 41, 40, 31, 76, 27, 40, 30,
               76, 38, 31, 48, 31, 38, 76, 45, 27, 40, 30, 45,
               76, 45, 46, 44, 31, 46, 29, 34, 76, 32, 27, 44,
               76, 27, 49, 27, 51, 78, 76, 76, 76, 76, 76, 76,
               76, 76]]      ),
           torch.tensor([[0, 0, 0, 10_69, 11]]      ),
           torch.tensor([[0, 0, 0, 10_69, 11]]      ),
       ]
       # fmt: on
       self.assertTrue(torch.allclose(tokens[0]					,      EXPECTED_OUTPUT[0]      )      )
       self.assertTrue(torch.allclose(tokens[1]					,      EXPECTED_OUTPUT[1]      )      )
       self.assertTrue(torch.allclose(tokens[2]					,      EXPECTED_OUTPUT[2]      )      )




 @require_torch
 def      __magic_name__	(      self	:							Any      )	->						List[str]:
       import torch

       SCREAMING_SNAKE_CASE__     :				int									=JukeboxTokenizer.from_pretrained('''openai/jukebox-5b-lyrics'''      )
       SCREAMING_SNAKE_CASE__     :				List[str]									=tokenizer(**self.metas      )['''input_ids''']
       # fmt: off
       SCREAMING_SNAKE_CASE__     :				Optional[int]									=[
           torch.tensor([[
               0, 0, 0, 10_69, 11, -1, -1, -1, -1, 9, 77, 39,
               31, 46, 77, 27, 77, 46, 44, 27, 48, 31, 38, 38,
               31, 44, 77, 32, 44, 41, 39, 77, 27, 40, 77, 27,
               40, 46, 35, 43, 47, 31, 77, 38, 27, 40, 30, 64,
               79, 77, 77, 77, 77, 77, 77, 77, 77, 23, 34, 41,
               77, 45, 27, 35, 30, 77, 72, 20, 49, 41, 77, 48,
               27, 45, 46, 77, 27, 40, 30, 77, 46, 44, 47, 40,
               37, 38, 31, 45, 45, 77, 38, 31, 33, 45, 77, 41,
               32, 77, 45, 46, 41, 40, 31, 79, 77, 77, 77, 77,
               77, 77, 77, 77, 19, 46, 27, 40, 30, 77, 35, 40,
               77, 46, 34, 31, 77, 30, 31, 45, 31, 44, 46, 63,
               77, 63, 77, 63, 77, 63, 77, 14, 31, 27, 44, 77,
               46, 34, 31, 39, 64, 77, 41, 40, 77, 46, 34, 31,
               77, 45, 27, 40, 30, 64, 79, 77, 77, 77, 77, 77,
               77, 77, 77, 8, 27, 38, 32, 77, 45, 47, 40, 37,
               77, 27, 77, 45, 34, 27, 46, 46, 31, 44, 31, 30,
               77, 48, 35, 45, 27, 33, 31, 77, 38, 35, 31, 45,
               64, 77, 49, 34, 41, 45, 31, 77, 32, 44, 41, 49,
               40, 64, 79, 77, 77, 77, 77, 77, 77, 77, 77, 1,
               40, 30, 77, 49, 44, 35, 40, 37, 38, 31, 30, 77,
               38, 35, 42, 64, 77, 27, 40, 30, 77, 45, 40, 31,
               31, 44, 77, 41, 32, 77, 29, 41, 38, 30, 77, 29,
               41, 39, 39, 27, 40, 30, 64, 79, 77, 77, 77, 77,
               77, 77, 77, 77, 20, 31, 38, 38, 77, 46, 34, 27,
               46, 77, 35, 46, 45, 77, 45, 29, 47, 38, 42, 46,
               41, 44, 77, 49, 31, 38, 38, 77, 46, 34, 41, 45,
               31, 77, 42, 27, 45, 45, 35, 41, 40, 45, 77, 44,
               31, 27, 30, 79, 77, 77, 77, 77, 77, 77, 77, 77,
               23, 34, 35, 29, 34, 77, 51, 31, 46, 77, 45, 47,
               44, 48, 35, 48, 31, 64, 77, 45, 46, 27, 39, 42,
               31, 30, 77, 41, 40, 77, 46, 34, 31, 45, 31, 77,
               38, 35, 32, 31, 38, 31, 45, 45, 77, 46, 34, 35,
               40, 33, 45, 64, 79, 77, 77, 77, 77, 77, 77, 77,
               77, 20, 34, 31, 77, 34, 27, 40, 30, 77, 46, 34,
               27, 46, 77, 39, 41, 29, 37, 31, 30, 77, 46, 34,
               31, 39, 64, 77, 27, 40, 30, 77, 46, 34, 31, 77,
               34, 31, 27, 44, 46, 77, 46, 34, 27, 46, 77, 32,
               31, 30, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77,
               1, 40, 30, 77, 41, 40, 77, 46, 34, 31, 77, 42,
               31, 30, 31, 45, 46, 27, 38, 64, 77, 46, 34, 31,
               45, 31, 77, 49, 41, 44, 30, 45, 77, 27, 42, 42,
               31, 27, 44, 65, 79, 77, 77, 77, 77, 77, 77, 77,
               77, 13, 51, 77, 40, 27, 39, 31, 77, 35, 45, 77,
               15, 52, 51, 39, 27, 40, 30, 35, 27, 45, 64, 77,
               11, 35, 40, 33, 77, 41, 32, 77, 11, 35, 40, 33,
               45, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77, 12,
               41, 41, 37, 77, 41, 40, 77, 39, 51, 77, 23, 41,
               44, 37, 45, 64, 77, 51, 31, 77, 13, 35, 33, 34,
               46, 51, 64, 77, 27, 40, 30, 77, 30, 31, 45, 42,
               27, 35, 44, 67, 79, 77, 77, 77, 77, 77, 77, 77,
               77, 14, 41, 46, 34, 35, 40, 33, 77, 28, 31, 45,
               35, 30, 31, 77, 44, 31, 39, 27, 35, 40, 45, 63,
               77, 18, 41, 47, 40, 30, 77, 46, 34, 31, 77, 30,
               31, 29, 27, 51, 79, 77, 77, 77, 77, 77, 77, 77,
               77, 15, 32, 77, 46, 34, 27, 46, 77, 29, 41, 38,
               41, 45, 45, 27, 38, 77, 23, 44, 31, 29, 37, 64,
               77, 28, 41, 47, 40, 30, 38, 31, 45, 45, 77, 27,
               40, 30, 77, 28, 27, 44, 31, 79, 77, 77, 77, 77,
               77, 77, 77, 77, 20, 34, 31, 77, 38, 41, 40, 31,
               77, 27, 40, 30, 77, 38, 31, 48, 31, 38, 77, 45,
               27, 40, 30, 45, 77, 45, 46, 44, 31, 46, 29, 34,
               77, 32, 27, 44, 77, 27, 49, 27, 51, 79, 77, 77,
               77, 77, 77, 77, 77, 77]]      ),
           torch.tensor([[0, 0, 0, 10_69, 11, -1, -1, -1, -1]]      ),
           torch.tensor([[0, 0, 0, 10_69, 11, -1, -1, -1, -1]]      ),
       ]
       # fmt: on
       self.assertTrue(torch.allclose(tokens[0]					,      EXPECTED_OUTPUT[0]      )      )
       self.assertTrue(torch.allclose(tokens[1]					,      EXPECTED_OUTPUT[1]      )      )
       self.assertTrue(torch.allclose(tokens[2]					,      EXPECTED_OUTPUT[2]      )      )