§
    ‚Štjå"  ã                   óè   — d dl ZddlmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZmZ  e¦   «         rd dlZ ej        e¦  «        Z G d„ d	ed
¬¦  «        Ze G d„ de¦  «        ¦   «         ZdgZdS )é    Né   )Ú
AudioInput)ÚBatchFeature)ÚProcessingKwargsÚProcessorMixinÚUnpack)Ú	TextInput)Úauto_docstringÚis_torch_availableÚloggingc                   ó,   — e Zd Zddiddddœdddœd	œZd
S )ÚMusicFlamingoProcessorKwargsÚpaddingTi€>  Ú
max_length)Úsampling_rateÚreturn_attention_maskr   ÚptÚleft)Úreturn_tensorsÚpadding_side)Útext_kwargsÚaudio_kwargsÚcommon_kwargsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úx/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/musicflamingo/processing_musicflamingo.pyr   r   &   sM   € € € € € ð �tð
ð #Ø%)Ø#ð
ð 
ð #Ø"ð
ð 
ðð €I€I€Ir   r   F)Útotalc                   ó|  ‡ — e Zd ZeZ	 	 	 	 	 dˆ fd„	Ze	 	 ddeee         z  d	e	dz  d
e
dz  dee         def
ˆ fd„¦   «         Z	 	 dd	e	dz  deee         z  dz  dee         fˆ fd„Zd„ Zd	e	fd„Zdededefd„Zedee         fˆ fd„¦   «         Zedee         fd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zˆ xZS )ÚMusicFlamingoProcessorNú<sound>ú<|sound_bos|>ú<|sound_eos|>é°  c                 ó$  •— || _         |                     |¦  «        | _        || _        t	          ¦   «                              |||¬¦  «         || _        || _        |                     |¦  «        | _        |                     |¦  «        | _	        dS )as  
        audio_token (`Optional[str]`, *optional*, defaults to `"<sound>"`):
            Special token used to represent audio inputs in the chat template.
        audio_bos_token (`Optional[str]`, *optional*, defaults to `"<|sound_bos|>"`):
            Special token used to represent the beginning of audio.
        audio_eos_token (`Optional[str]`, *optional*, defaults to `"<|sound_eos|>"`):
            Special token used to represent the end of audio.
        max_audio_len (`int`, *optional*, defaults to 1200):
            Maximum length of audio sequences in seconds. Audio longer than this will be truncated.
        )Úchat_templateN)
Úaudio_tokenÚconvert_tokens_to_idsÚaudio_token_idÚmax_audio_lenÚsuperÚ__init__Úaudio_bos_tokenÚaudio_eos_tokenÚaudio_bos_token_idÚaudio_eos_token_id)	ÚselfÚfeature_extractorÚ	tokenizerr)   r*   r0   r1   r-   Ú	__class__s	           €r    r/   zMusicFlamingoProcessor.__init__;   s�   ø€ ð( 'ˆÔØ'×=Ò=¸kÑJÔJˆÔØ*ˆÔÝ‰Œ×ÒÐ*¨IÀ]ÐÑSÔSÐSØ.ˆÔØ.ˆÔØ"+×"AÒ"AÀ/Ñ"RÔ"RˆÔØ"+×"AÒ"AÀ/Ñ"RÔ"RˆÔÐÐr   FÚtextÚaudioÚoutput_labelsÚkwargsÚreturnc                 óh  •— d|v r(|d         dk    rt          | j        j        › d�¦  «        ‚|rd|d<    t          ¦   «         j        d||dœ|¤Ž}|rP|                     d¦  «        }|d                              ¦   «         }d	||d
k    <   d	||| j        j        k    <   ||d<   t          |d¬¦  «        S )a0  
        output_labels (bool, *optional*, default=False):
            Whether to return labels for training.

        Returns:
            [`BatchFeature`]: A dictionary with tokenized text (`input_ids`, `attention_mask`) and
            audio features (`input_features`, `input_features_mask`).
        r   r   z% only supports `return_tensors='pt'`.TÚreturn_mm_token_type_ids©r9   r8   Úmm_token_type_idsÚ	input_idsiœÿÿÿr   Úlabels)ÚdataÚtensor_typer   )
Ú
ValueErrorr7   r   r.   Ú__call__ÚpopÚcloner6   Úpad_token_idr   )	r4   r8   r9   r:   r;   Úmodel_inputsr@   rB   r7   s	           €r    rF   zMusicFlamingoProcessor.__call__X   sæ   ø€ ð" ˜vÐ%Ð%¨&Ð1AÔ*BÀdÒ*JÐ*JÝ ¤Ô 7Ð^Ð^Ð^Ñ_Ô_Ð_àð 	6Ø15ˆFÐ-Ñ.Ø'•u‘w”wÔ'ÐI¨e¸$ÐIÐIÀ&ÐIÐIˆàð 	,Ø ,× 0Ò 0Ð1DÑ EÔ EÐØ! +Ô.×4Ò4Ñ6Ô6ˆFØ-1ˆFÐ$¨Ò)Ñ*Ø<@ˆF�6˜Tœ^Ô8Ò8Ñ9Ø%+ˆL˜Ñ"Ý ¸4Ð@Ñ@Ô@Ð@r   c                 óð   •—  t          ¦   «         j        d||dœ|¤Ž |�R|�Rt          |¦  «        t          |¦  «        k    r4t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚d S d S d S )Nr?   zGot z
 text but z audios; they must match 1:1.r   )r.   Úvalidate_inputsÚlenrE   )r4   r9   r8   r;   r7   s       €r    rL   z&MusicFlamingoProcessor.validate_inputsx   sŒ   ø€ ð 	 �‰ŒÔÐA e°$ÐAÐA¸&ÐAÐAÐAàÐ Ð 1µc¸$±i´iÅ3ÀuÁ:Ä:Ò6MÐ6MÝÐb¥C¨¡I¤IÐbÐb½¸U¹¼ÐbÐbÐbÑcÔcÐcð ÐÐ 1Ð 1Ð6MÐ6Mr   c                 ó2   — |dz
  dz  dz   }|dz
  dz  dz   }|S )Né   é   r   )r4   Úaudio_lengthsÚconv_output_lengthsÚaudio_tokens_lengthss       r    Ú_get_audio_token_lengthz.MusicFlamingoProcessor._get_audio_token_lengthƒ   s2   € Ø,¨qÑ0°QÑ6¸Ñ:ÐØ 3°aÑ 7¸AÑ=ÀÑAÐØ#Ð#r   c           
      óJ  — t          |d         | j        j        z  ¦  «        }t          | j        | j        j        z  ¦  «        }g }g }|D ]ç}t          |j        d         ¦  «        }t          d||z   dz
  |z  ¦  «        }	|	|k    r:t                               d||d         z  d›d| j        › d| j        › d�¦  «         |}	|                     |	¦  «         t          ||	|z  ¦  «        }
t          |	¦  «        D ]:}||z  }t          |dz   |z  |
¦  «        }|                     |||…         ¦  «         Œ;Œè| j                             |¦  «        } | j        |fi |¤Ž}|                     d	¦  «        |d
<   t          j        d„ t          j        |d
                              d¦  «        |¦  «        D ¦   «         ¦  «        }|                      |¦  «        |d<   g }t          t%          |¦  «        ¦  «        D ].}|                      ||¬¦  «        }|                     |¦  «         Œ/||fS )Nr   r   rO   zAudio duration (z.1fzs) exceeds zs; truncating to first zs.Úattention_maskÚinput_features_maskc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Úsum)Ú.0Úss     r    ú
<listcomp>z9MusicFlamingoProcessor._process_audio.<locals>.<listcomp>§   s    € ÐkÐkÐk˜ˆQ�UŠU‰WŒWÐkÐkÐkr   éÿÿÿÿÚnum_audio_tokens)Ú	audio_idx)Úintr5   Úchunk_lengthr-   ÚshapeÚmaxÚloggerÚwarningÚappendÚminÚrangeÚfetch_audiorG   ÚtorchÚstackÚsplitrY   rT   rM   Úreplace_audio_token)r4   r9   r;   Úwindow_sizeÚmax_windowsÚper_sample_windowsÚflat_chunksÚaudio_elÚ	n_samplesÚn_winÚtime_capÚiÚstartÚendÚaudio_inputsrQ   Úaudio_replacementsÚidxÚreplacement_texts                      r    Ú_process_audioz%MusicFlamingoProcessor._process_audioˆ   s•  € å˜& Ô1°DÔ4JÔ4WÑWÑXÔXˆÝ˜$Ô,°Ô0FÔ0SÑSÑTÔTˆà(*ÐØ(*ˆØð 	8ð 	8ˆHÝ˜HœN¨1Ô-Ñ.Ô.ˆIÝ˜˜I¨Ñ3°aÑ7¸KÑGÑHÔHˆEØ�{Ò"Ð"Ý—’ð ] y°6¸/Ô3JÑ'Jð  ]ð  ]ð  ]Ð[_Ô[mð  ]ð  ]ð  GKô  GYð  ]ð  ]ð  ]ñô ð ð $�Ø×%Ò% eÑ,Ô,Ð,å˜9 e¨kÑ&9Ñ:Ô:ˆHÝ˜5‘\”\ð 8ð 8�Ø˜K™�Ý˜1˜q™5 KÑ/°Ñ:Ô:�Ø×"Ò" 8¨E°#¨IÔ#6Ñ7Ô7Ð7Ð7ð8ð
 Ô&×2Ò2°5Ñ9Ô9ˆØ-�tÔ-¨kÐDÐD¸VÐDÐDˆØ.:×.>Ò.>Ð?OÑ.PÔ.PˆÐ*Ñ+õ
 œØkÐk�eœk¨,Ð7LÔ*M×*QÒ*QÐRTÑ*UÔ*UÐWiÑjÔjÐkÑkÔkñ
ô 
ˆð ,0×+GÒ+GÈÑ+VÔ+VˆÐ'Ñ(àÐÝ�˜U™œÑ$Ô$ð 	8ð 	8ˆCØ#×7Ò7¸ÐPSÐ7ÑTÔTÐØ×%Ò%Ð&6Ñ7Ô7Ð7Ð7àÐ/Ð/Ð/r   ry   r_   c                 óR   — |d         |         }| j         | j        |z  z   | j        z   S )Nr^   )r0   r*   r1   )r4   ry   r_   r^   s       r    rm   z*MusicFlamingoProcessor.replace_audio_token²   s2   € Ø'Ð(:Ô;¸IÔFÐØÔ# dÔ&6Ð9IÑ&IÑIÈDÔL`Ñ`Ð`r   c                 ó2   •— t          ¦   «         j        dgz   S )NrW   )r.   Úmodel_input_names)r4   r7   s    €r    r€   z(MusicFlamingoProcessor.model_input_names¶   s   ø€ å‰wŒwÔ(Ð,AÐ+BÑBÐBr   c                 ó   — dgS )zNInput names returned always by subprocessors but not used in model's `forward`r^   r   ©r4   s    r    Úunused_input_namesz)MusicFlamingoProcessor.unused_input_namesº   s   € ð #Ð#Ð#r   c                 ó*   — | j         | j        | j        gS )N)r,   r2   r3   r‚   s    r    Úaudio_token_idsz&MusicFlamingoProcessor.audio_token_ids¿   s   € àÔ# TÔ%<¸dÔ>UÐVÐVr   c                 óD   — t                                d¦  «         | j        S )zLDeprecated alias for `audio_token_ids`; will be removed in a future release.z@`audio_ids` is deprecated; please use `audio_token_ids` instead.)rd   Úwarning_oncer…   r‚   s    r    Ú	audio_idsz MusicFlamingoProcessor.audio_idsÄ   s"   € õ 	×ÒÐ^Ñ_Ô_Ð_ØÔ#Ð#r   )Nr$   r%   r&   r'   )NF)NN)r   r   r   r   Úvalid_processor_kwargsr/   r
   r	   Úlistr   Úboolr   r   rF   r   rL   rT   r}   Údictr`   Ústrrm   Úpropertyr€   rƒ   r…   rˆ   Ú__classcell__)r7   s   @r    r#   r#   7   sK  ø€ € € € € à9Ðð ØØ'Ø'ØðSð Sð Sð Sð Sð Sð: ð $(Ø%*ð	Að Aà˜$˜yœ/Ñ)ðAð ˜DÑ ðAð ˜d‘{ð	Að
 Ð5Ô6ðAð 
ðAð Að Að Að Añ „^ðAðB $(Ø37ð	dð 	dà˜DÑ ð	dð ˜$˜yœ/Ñ)¨DÑ0ð	dð Ð)Ô*ð		dð 	dð 	dð 	dð 	dð 	dð$ð $ð $ð
(0 Jð (0ð (0ð (0ð (0ðTa°ð aÀð aÈð að að að að ðC 4¨¤9ð Cð Cð Cð Cð Cñ „XðCð ð$ D¨¤Ið $ð $ð $ñ „Xð$ð ðWð Wñ „XðWð ð$ð $ñ „Xð$ð $ð $ð $ð $r   r#   )ÚnumpyÚnpÚaudio_utilsr   Úfeature_extraction_utilsr   Úprocessing_utilsr   r   r   Útokenization_utils_baser	   Úutilsr
   r   r   rj   Ú
get_loggerr   rd   r   r#   Ú__all__r   r   r    ú<module>r™      s4  ðð, Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð ÐÑÔð Ø€L€L€Lð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð Ð#3¸5ð ñ ô ð ð" ðP$ð P$ð P$ð P$ð P$˜^ñ P$ô P$ñ „ðP$ðf $Ð
$€€€r   