
    fTh9                         S r SSKrSSKJrJrJr  SSKrSSKJ	r	  SSK
Jr  SSKJrJrJr  SSKJr  SS	KJr  \" S
S9 " S S\5      5       rS/rg)zProcessor class for Pop2Piano.    N)ListOptionalUnion   )BatchFeature)ProcessorMixin)BatchEncodingPaddingStrategyTruncationStrategy)
TensorType)requires)essentialibrosapretty_midiscipytorch)backendsc                   f  ^  \ rS rSrSrSS/rSrSrU 4S jr          SS\	\
R                  \\   \\
R                     4   S	\\	\\\   4      S
\S\\   S\	\\4   S\	\\\4   S\	\\\4   S\\   S\\   S\S\	\\4   4S jjr SS\S\S\4S jjr\S 5       rU 4S jr\S 5       rSrU =r$ )Pop2PianoProcessor   av  
Constructs an Pop2Piano processor which wraps a Pop2Piano Feature Extractor and Pop2Piano Tokenizer into a single
processor.

[`Pop2PianoProcessor`] offers all the functionalities of [`Pop2PianoFeatureExtractor`] and [`Pop2PianoTokenizer`].
See the docstring of [`~Pop2PianoProcessor.__call__`] and [`~Pop2PianoProcessor.decode`] for more information.

Args:
    feature_extractor (`Pop2PianoFeatureExtractor`):
        An instance of [`Pop2PianoFeatureExtractor`]. The feature extractor is a required input.
    tokenizer (`Pop2PianoTokenizer`):
        An instance of ['Pop2PianoTokenizer`]. The tokenizer is a required input.
feature_extractor	tokenizerPop2PianoFeatureExtractorPop2PianoTokenizerc                 $   > [         TU ]  X5        g N)super__init__)selfr   r   	__class__s      j/var/www/auris/envauris/lib/python3.13/site-packages/transformers/models/pop2piano/processing_pop2piano.pyr   Pop2PianoProcessor.__init__1   s    *6    audiosampling_ratesteps_per_beatresamplenotespadding
truncation
max_lengthpad_to_multiple_ofverbosereturnc           
          Uc  Uc  Uc  [        S5      eUb  Ub  U R                  " SUUUUS.UD6nUb  U R                  " SUUUUU	U
S.UD6nUc  W$ Ub  Uc  W$ WS   WS'   U$ )a  
This method uses [`Pop2PianoFeatureExtractor.__call__`] method to prepare log-mel-spectrograms for the model,
and [`Pop2PianoTokenizer.__call__`] to prepare token_ids from notes.

Please refer to the docstring of the above two methods for more information.
z{You have to specify at least audios and sampling_rate in order to use feature extractor or notes to use the tokenizer part.)r$   r%   r&   r'   )r(   r)   r*   r+   r,   r-   	token_ids )
ValueErrorr   r   )r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   kwargsinputsencoded_token_idss                 r!   __call__Pop2PianoProcessor.__call__4   s    . Mm3%-3 
 !:++ +-!	
 F  $ !%%#5! ! =M]m3$$ #4K"@F;Mr#   feature_extractor_outputreturn_midic                 6    U R                   R                  XUS9$ )z
This method uses [`Pop2PianoTokenizer.batch_decode`] method to convert model generated token_ids to midi_notes.

Please refer to the docstring of the above two methods for more information.
)r0   r8   r9   )r   batch_decode)r   r0   r8   r9   s       r!   r;   Pop2PianoProcessor.batch_decoden   s&     ~~**`k + 
 	
r#   c                     U R                   R                  nU R                  R                  n[        [        R                  X-   5      5      $ r   )r   model_input_namesr   listdictfromkeys)r   tokenizer_input_namesfeature_extractor_input_namess      r!   r>   $Pop2PianoProcessor.model_input_names~   s<     $ @ @(,(>(>(P(P%DMM"7"WXYYr#   c                    > [         R                  R                  U5      (       a  [        SU S35      e[         R                  " USS9  [
        TU ]  " U40 UD6$ )NzProvided path (z#) should be a directory, not a fileT)exist_ok)ospathisfiler2   makedirsr   save_pretrained)r   save_directoryr3   r    s      r!   rK   "Pop2PianoProcessor.save_pretrained   sO    77>>.))~.>>abcc
NT2w&~@@@r#   c                 2    U R                   " U40 UD6nU " U6 $ r   )_get_arguments_from_pretrained)clspretrained_model_name_or_pathr3   argss       r!   from_pretrained"Pop2PianoProcessor.from_pretrained   s#    112OZSYZDzr#   r1   )
NN   TNFNNNT)T) __name__
__module____qualname____firstlineno____doc__
attributesfeature_extractor_classtokenizer_classr   r   npndarrayr   floatr   intboolr   strr
   r   r   r	   r6   r;   propertyr>   rK   classmethodrS   __static_attributes____classcell__)r    s   @r!   r   r      sx    &{3J9*O7
 CG9=#')-5:;?$(,08RZZed2::.>>?8  c49n 568 	8
 4.8 T:%&8 tS/128 $%7788 SM8 %SM8 8 
|]*	+8| !	
 #/
 	

 

  Z Z
A  r#   r   )rZ   rG   typingr   r   r   numpyr^   feature_extraction_utilsr   processing_utilsr   tokenization_utilsr	   r
   r   utilsr   utils.import_utilsr   r   __all__r1   r#   r!   <module>rp      sX    % 	 ( (  4 . T T  * 
KLo o Mod  
 r#   