
    Ig#2                        d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ  e
j                  e      Zd	Z G d
 de      Z e	ej%                  dd      d       G d de             Z e	ej%                  dd      d       G d de             Z e	ej%                  dd      d       G d de             Z G d de      Zy)zBARK model configuration    N)DictOptionalUnion   )PretrainedConfig)add_start_docstringslogging   )CONFIG_MAPPINGa
  
    This is the configuration class to store the configuration of a [`{model}`]. It is used to instantiate the model
    according to the specified arguments, defining the model architecture. Instantiating a configuration with the
    defaults will yield a similar configuration to that of the Bark [suno/bark](https://huggingface.co/suno/bark)
    architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.

    Args:
        block_size (`int`, *optional*, defaults to 1024):
            The maximum sequence length that this model might ever be used with. Typically set this to something large
            just in case (e.g., 512 or 1024 or 2048).
        input_vocab_size (`int`, *optional*, defaults to 10_048):
            Vocabulary size of a Bark sub-model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`{model}`]. Defaults to 10_048 but should be carefully thought with
            regards to the chosen sub-model.
        output_vocab_size (`int`, *optional*, defaults to 10_048):
            Output vocabulary size of a Bark sub-model. Defines the number of different tokens that can be represented
            by the: `output_ids` when passing forward a [`{model}`]. Defaults to 10_048 but should be carefully thought
            with regards to the chosen sub-model.
        num_layers (`int`, *optional*, defaults to 12):
            Number of hidden layers in the given sub-model.
        num_heads (`int`, *optional*, defaults to 12):
            Number of attention heads for each attention layer in the Transformer architecture.
        hidden_size (`int`, *optional*, defaults to 768):
            Dimensionality of the "intermediate" (often named feed-forward) layer in the architecture.
        dropout (`float`, *optional*, defaults to 0.0):
            The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
        bias (`bool`, *optional*, defaults to `True`):
            Whether or not to use bias in the linear layers and layer norm layers.
        initializer_range (`float`, *optional*, defaults to 0.02):
            The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
        use_cache (`bool`, *optional*, defaults to `True`):
            Whether or not the model should return the last key/values attentions (not used by all models).
c                        e Zd ZdZdgZdddddZ	 	 	 	 	 	 	 	 	 	 d fd	Ze	 	 	 	 	 dd	ee	e
j                  f   d
eee	e
j                  f      dededeee	ef      de	ddfd       Z xZS )BarkSubModelConfigbark_modulepast_key_values	num_heads
num_layersinput_vocab_size
block_size)num_attention_headsnum_hidden_layers
vocab_sizewindow_sizec                     || _         || _        || _        || _        || _        || _        || _        || _        |
| _        |	| _	        t        | ,  di | y )N )r   r   output_vocab_sizer   r   hidden_sizedropoutbias	use_cacheinitializer_rangesuper__init__)selfr   r   r   r   r   r   r   r   r   r   kwargs	__class__s               h/var/www/html/answerous/venv/lib/python3.12/site-packages/transformers/models/bark/configuration_bark.pyr!   zBarkSubModelConfig.__init__M   s_     % 0!2$"&	"!2"6"    pretrained_model_name_or_path	cache_dirforce_downloadlocal_files_onlytokenrevisionreturnr   c                    ||d<   ||d<   ||d<   ||d<   | j                  ||        | j                  |fi |\  }}|j                  d      dk(  r|| j                   d   }d|v rGt	        | d      r;|d   | j                  k7  r)t
        j                  d|d    d	| j                   d
        | j                  |fi |S )Nr(   r)   r*   r,   
model_typebark_configzYou are using a model of type z  to instantiate a model of type zN. This is not supported for all configurations of models and can yield errors.)_set_token_in_kwargsget_config_dictgetr/   hasattrloggerwarning	from_dict)	clsr'   r(   r)   r*   r+   r,   r#   config_dicts	            r%   from_pretrainedz"BarkSubModelConfig.from_pretrainedh   s     ({#1 %5!"%z  /1c112OZSYZV ??<(F2%(8&@AK;&73+E+VbJcgjguguJuNN0\1J0KKk>>""pr
 s}}[3F33r&   )
i   @'  r<      r=   i   g        T{Gz?T)NFFNmain)__name__
__module____qualname__r/   keys_to_ignore_at_inferenceattribute_mapr!   classmethodr   strosPathLiker   boolr;   __classcell__r$   s   @r%   r   r   B   s    J#4"5  +)(#	M  #6  8<$!&,04',S"++-='>4 E#r{{"2344 	4
 4 c4i()4 4 
4 4r&   r   BarkSemanticConfigBarkSemanticModel)configmodela  
    Example:

    ```python
    >>> from transformers import BarkSemanticConfig, BarkSemanticModel

    >>> # Initializing a Bark sub-module style configuration
    >>> configuration = BarkSemanticConfig()

    >>> # Initializing a model (with random weights) from the suno/bark style configuration
    >>> model = BarkSemanticModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```c                       e Zd ZdZy)rL   semanticNr@   rA   rB   r/   r   r&   r%   rL   rL      s	    & Jr&   BarkCoarseConfigBarkCoarseModela  
    Example:

    ```python
    >>> from transformers import BarkCoarseConfig, BarkCoarseModel

    >>> # Initializing a Bark sub-module style configuration
    >>> configuration = BarkCoarseConfig()

    >>> # Initializing a model (with random weights) from the suno/bark style configuration
    >>> model = BarkCoarseModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```c                       e Zd ZdZy)rS   coarse_acousticsNrR   r   r&   r%   rS   rS      s	    & $Jr&   BarkFineConfigBarkFineModela   
        n_codes_total (`int`, *optional*, defaults to 8):
            The total number of audio codebooks predicted. Used in the fine acoustics sub-model.
        n_codes_given (`int`, *optional*, defaults to 1):
            The number of audio codebooks predicted in the coarse acoustics sub-model. Used in the acoustics
            sub-models.
    Example:

    ```python
    >>> from transformers import BarkFineConfig, BarkFineModel

    >>> # Initializing a Bark sub-module style configuration
    >>> configuration = BarkFineConfig()

    >>> # Initializing a model (with random weights) from the suno/bark style configuration
    >>> model = BarkFineModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```c                   $     e Zd ZdZd fd	Z xZS )rW   fine_acousticsc                 D    || _         || _        t        |   dd|i| y )Ntie_word_embeddingsr   )n_codes_totaln_codes_givenr    r!   )r"   r\   r]   r^   r#   r$   s        r%   r!   zBarkFineConfig.__init__   s)    **K-@KFKr&   )T      )r@   rA   rB   r/   r!   rJ   rK   s   @r%   rW   rW      s    0 "JL Lr&   c            	       f     e Zd ZdZdZ	 	 	 	 	 d	dedededef fdZedede	de
defd       Z xZS )

BarkConfiga  
    This is the configuration class to store the configuration of a [`BarkModel`]. It is used to instantiate a Bark
    model according to the specified sub-models configurations, defining the model architecture.

    Instantiating a configuration with the defaults will yield a similar configuration to that of the Bark
    [suno/bark](https://huggingface.co/suno/bark) architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.

    Args:
    semantic_config ([`BarkSemanticConfig`], *optional*):
        Configuration of the underlying semantic sub-model.
    coarse_acoustics_config ([`BarkCoarseConfig`], *optional*):
        Configuration of the underlying coarse acoustics sub-model.
    fine_acoustics_config ([`BarkFineConfig`], *optional*):
        Configuration of the underlying fine acoustics sub-model.
    codec_config ([`AutoConfig`], *optional*):
        Configuration of the underlying codec sub-model.

    Example:

    ```python
    >>> from transformers import (
    ...     BarkSemanticConfig,
    ...     BarkCoarseConfig,
    ...     BarkFineConfig,
    ...     BarkModel,
    ...     BarkConfig,
    ...     AutoConfig,
    ... )

    >>> # Initializing Bark sub-modules configurations.
    >>> semantic_config = BarkSemanticConfig()
    >>> coarse_acoustics_config = BarkCoarseConfig()
    >>> fine_acoustics_config = BarkFineConfig()
    >>> codec_config = AutoConfig.from_pretrained("facebook/encodec_24khz")


    >>> # Initializing a Bark module style configuration
    >>> configuration = BarkConfig.from_sub_model_configs(
    ...     semantic_config, coarse_acoustics_config, fine_acoustics_config, codec_config
    ... )

    >>> # Initializing a model (with random weights)
    >>> model = BarkModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```
    r0   semantic_configcoarse_acoustics_configfine_acoustics_configcodec_configc                    |i }t         j                  d       |i }t         j                  d       |i }t         j                  d       |i }t         j                  d       t        di || _        t	        di || _        t        di || _        d|v r|d   nd}t        |   di || _	        || _
        t        | 0  di | y )NzMsemantic_config is None. initializing the semantic model with default values.zScoarse_acoustics_config is None. initializing the coarse model with default values.zOfine_acoustics_config is None. initializing the fine model with default values.zGcodec_config is None. initializing the codec model with default values.r/   encodecr   )r6   inforL   rc   rS   rd   rW   re   r   rf   r   r    r!   )	r"   rc   rd   re   rf   r   r#   codec_model_typer$   s	           r%   r!   zBarkConfig.__init__  s     " OKKgh"*&(#KKmn ($&!KKijLKKab1DOD'7'R:Q'R$%3%L6K%L"9E9U<5[d*+;<L|L!2"6"r&   c                      | d|j                         |j                         |j                         |j                         d|S )z
        Instantiate a [`BarkConfig`] (or a derived class) from bark sub-models configuration.

        Returns:
            [`BarkConfig`]: An instance of a configuration object
        )rc   rd   re   rf   r   )to_dict)r9   rc   rd   re   rf   r#   s         r%   from_sub_model_configsz!BarkConfig.from_sub_model_configs0  sP      
+335$;$C$C$E"7"?"?"A%--/	

 
 	
r&   )NNNNr>   )r@   rA   rB   __doc__r/   r   r!   rE   rL   rS   rW   r   rm   rJ   rK   s   @r%   rb   rb      s    2h J !%(,&*!!#!# "&!#  $	!#
 !#F 
+
 "2
  .	

 '
 
r&   rb   )rn   rG   typingr   r   r   configuration_utilsr   utilsr   r	   autor   
get_loggerr@   r6   #BARK_SUBMODELCONFIG_START_DOCSTRINGr   formatrL   rS   rW   rb   r   r&   r%   <module>rv      s    	 ( ( 3 2 ! 
		H	%#' #LD4) D4N '..6JRe.f$+ %$ '..6HPa.b$$) $%$$ '..6Fo.^.L' L/.Lo
! o
r&   