§
    nF§j­  ã                   óH   — d dl mZmZ d dlmZmZmZmZ  G d„ d¦  «        ZdS )é    )ÚAnyÚCallable)ÚAUDIO_PROCESSOR_TYPE_SOUNDTRACKÚMMAUDIO_METHODÚmethod_metadataÚread_config_sectionc                   óö  — e Zd ZdZdZdZdeeef         fd„Z	e
deeef         fd„¦   «         Ze
deeef         fd„¦   «         Ze
d	eeef         deeef         fd
„¦   «         Zddeeef         dz  deeef         fd„Zdefd„Zdd	eeef         dz  deeeeedz  edz  f         fd„Zd defd„Zd!dedeeeef                  fd„Zd"dedef         defd„Zd#defd„Zddœd	eeef         defd„Zd$d„ZdS )%ÚMMAudioProcessorr   é   é   Úserver_configc                 ó"   — || _         || _        d S ©N)r   Úfiles_locator)Úselfr   r   s      ú?C:\Users\johnn\Wan2GP\postprocessing\mmaudio\audio_processor.pyÚ__init__zMMAudioProcessor.__init__   s   € Ø*ˆÔØ*ˆÔÐÐó    Úreturnc                 óŒ   — dt           fdt          fgt          t           fit          dit          dit          dit          diddddœS )	NÚMMAudioz/MMAudio (generate Audio Based on Video Content)TzMMAudio Soundtrack GenerationÚmmaudioé   zHGenerate and remux a soundtrack that follows the video's visual content.)ÚnameÚprocessor_typesÚmethodsÚmethod_typesÚneeds_promptÚneeds_negative_promptÚsupports_repeatÚstatusÚ
config_keyÚposÚdescription)r   r   )Úclss    r   Úquery_audio_processor_defz*MMAudioProcessor.query_audio_processor_def   s]   € ð Ý ?ÐAØJÍNÐ[Ð\Ý+Õ.MÐ-OÐPÝ+¨TÐ2Ý&4°dÐ%;Ý .°Ð5Ý%Ð'FÐGØ#ØØeð
ð 
ð 	
r   c                 ó   — ddl m} d|iS )Nr   ©ÚMMAUDIO_DEFAULT_MODEÚmode)Úpostprocessing.mmaudior)   )r%   r)   s     r   Údefault_configzMMAudioProcessor.default_config$   s    € à?Ð?Ð?Ð?Ð?Ð?àÐ,Ð-Ð-r   Úconfigc                 ó¶   — ddl m}m} ddl m} |                     d|¦  «        }	 t          |¦  «        }n# t          t          f$ r |}Y nw xY w|||fvr|}d|iS )Nr   )ÚMMAUDIO_MODE_NEWÚMMAUDIO_MODE_V2r(   r*   )r+   r/   r0   r)   ÚgetÚintÚ	TypeErrorÚ
ValueError)r%   r-   r/   r0   r)   r*   s         r   Únormalize_config_sectionz)MMAudioProcessor.normalize_config_section*   s›   € àLÐLÐLÐLÐLÐLÐLÐLà?Ð?Ð?Ð?Ð?Ð?à�zŠz˜&Ð"6Ñ7Ô7ˆð	(Ý�t‘9”9ˆDˆDøÝ�:Ð&ð 	(ð 	(ð 	(Ø'ˆDˆDˆDð	(øøøà˜Ð)9Ð:Ð:Ð:Ø'ˆDØ˜ˆ~Ðs   ¦6 ¶AÁANc                 ó4   — t          |€| j        n|| ¦  «        S r   )r   r   )r   r   s     r   r-   zMMAudioProcessor.config9   s!   € Ý"¸Ð9N 4Ô#5Ð#5ÐTaÐcgÑhÔhÐhr   c                 ó   — dS )NT© )r   s    r   ÚenabledzMMAudioProcessor.enabled<   s   € Øˆtr   c                 ó8  — ddl m}m}m}m} ddlm} |€|                      ¦   «         n|                      |¦  «        }t          |d         ¦  «        }| 
                    | j        ¦  «        r| j        n| j        }	||k    rd||	d|fS ||k    rd||	d|fS d||	d d fS )	Nr   )ÚMMAUDIO_ALTERNATEr/   r0   ÚMMAUDIO_STANDARD)Úaudio_processorsr*   TÚlarge_44k_v2Ú	large_44kF)r+   r;   r/   r0   r<   Úpostprocessingr=   r-   r5   r2   Úpersistent_modelsr   ÚPERSIST_RAMÚPERSIST_UNLOAD)
r   r-   r;   r/   r0   r<   Úaudio_processor_apiÚvaluesr*   Úpersistences
             r   Ú	_settingszMMAudioProcessor._settings?   sá   € ØqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqØJÐJÐJÐJÐJÐJà"( .�—’‘”�°d×6SÒ6SÐTZÑ6[Ô6[ˆÝ�6˜&”>Ñ"Ô"ˆØ*=×*OÒ*OÐPTÔPbÑ*cÔ*cÐ|�dÔ&Ð&ÐimÔi|ˆØ�?Ò"Ð"Ø˜˜{¨NÐ<LÐLÐLØÐ#Ò#Ð#Ø˜˜{¨KÐ9JÐJÐJØ�d˜K¨¨tÐ3Ð3r   c                 ó(  — |                       ¦   «         \  }}}}}|sdS |�ddlm}	  |	|¦  «        \  }}}}n2|�0	 t          |¦  «        dk    rdndS # t          t
          f$ r Y dS w xY w|�|€dS |t          t          |¦  «        ¦  «        k    rdndS )Nú1MMAudio is disabled in Configuration > Extensionsr   )Úget_video_infor   Ú zIMMAudio can generate an Audio track only if the Video is at least 1s long)rG   Úshared.utils.utilsrJ   Úfloatr3   r4   Úround)
r   ÚmethodÚvideo_sourceÚframes_countÚfpsÚdurationÚ_kwargsr9   Ú_rJ   s
             r   Úvalidate_methodz MMAudioProcessor.validate_methodL   sè   € Ø"ŸnšnÑ.Ô.Ñˆ��A�q˜!Øð 	GØFÐFØÐ#Ø9Ð9Ð9Ð9Ð9Ð9à&4 n°\Ñ&BÔ&BÑ#ˆC��A�|�|ØÐ!ðÝ" 8™_œ_°Ò1Ð1�r�rð  8Cð  CøÝ�zÐ*ð ð ð Ø�r�rðøøøàÐ 3 ;Ø�2Ø!¥U­5°©:¬:Ñ%6Ô%6Ò6Ð6ˆrˆrð  =Hð  	Hs   »A ÁA'Á&A'TÚenabled_onlyc                 ó    — ddl m}m}m} |                      ¦   «         \  }}}}}|r|sg S |r||k    r|n|gn||g}dg d¢ddg|¢ddgd	d
ggdœgS )Nr   )r;   r0   r<   zDeepBeepMeep/Wan2.1)r   zDFN5B-CLIP-ViT-H-14-378Úbigvgan_v2_44khz_128band_512xzsynchformer_state_dict.pthz	v1-44.pthzopen_clip_config.jsonzopen_clip_pytorch_model.binzconfig.jsonzbigvgan_generator.pt)ÚrepoIdÚsourceFolderListÚfileList)r+   r;   r0   r<   rG   )	r   rW   r;   r0   r<   r9   r*   rU   Úmodel_filess	            r   Úquery_download_defsz$MMAudioProcessor.query_download_defs]   sà   € Ø_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_à!%§¢Ñ!1Ô!1Ñˆ��q˜!˜QØð 	 ð 	ØˆIØ^jð  V¨4°?Ò+BÐ+BÐ'Ð'ÐHYÐZÐZð  rBð  DUð  qVˆà+Ø gÐ gÐ gØ6¸ÐRÀkÐRÐUlð  oLð  UMð  P]ð  _uð  Ovð  wð
ð 
ð ð 	r   Úprocess_files.c                 óp   — ddl m} |                      d¬¦  «        } ||r|d         nd ||pd|¬¦  «        S )Nr   )Úprocess_files_def_if_neededT)rW   z"Downloading MMAudio model files...)Úsend_cmdÚstatus_textr_   )Úshared.utils.downloadra   r^   )r   rO   r_   rb   rc   rT   ra   Údefss           r   ÚdownloadzMMAudioProcessor.downloadj   sq   € ØEÐEÐEÐEÐEÐEà×'Ò'°TÐ'Ñ:Ô:ˆØ*Ð*°dÐ+D¨4°¬7¨7ÀÈxÐepð  fYð  uYð  ivð  wñ  wô  wð  	wr   rK   éÿÿÿÿÚaac_128c                 óì   — |                       ¦   «         \  }}}}}|st          d¦  «        ‚|	� |	t          |¦  «        d         ¦  «         ddlm}  |||||dd|||| j        k    d|
|||¬¦  «         |S )	NrI   r!   r   )Úvideo_to_audioé   g      @T)ÚpromptÚnegative_promptÚseedÚ	num_stepsÚcfg_strengthrS   Ú	save_pathrA   Úaudio_file_onlyÚverboseLevelÚ
model_nameÚ
model_pathÚaudio_codec_key)rG   ÚRuntimeErrorr   Úpostprocessing.mmaudio.mmaudiorj   rB   )r   rO   Ú
video_pathrl   rm   rn   rS   Úoutput_pathrb   Ústatus_callbackÚverbose_levelrv   rT   r9   rU   rF   rt   ru   rj   s                      r   Úgenerate_soundtrackz$MMAudioProcessor.generate_soundtrackp   s¼   € Ø:>¿.º.Ñ:JÔ:JÑ7ˆ��K ¨ZØð 	TÝÐRÑSÔSÐSØÐ&ØˆO�O¨FÑ3Ô3°HÔ=Ñ>Ô>Ð>ØAÐAÐAÐAÐAÐAàˆØØØ+ØØØØØ!Ø)¨TÔ-=Ò=Ø Ø&Ø!Ø!Ø+ð	
ñ 	
ô 	
ð 	
ð  Ðr   F)Úlock_configr~   c                ó¢   — ddl m}m} |                      |¦  «        }|                     ||                     d|¦  «        d| ¬¦  «        }d|fgS )Nr   )r)   ÚMMAUDIO_MODE_CHOICESr*   z<MMAudio Soundtrack Generation (requires 10GB extra download))ÚchoicesÚvalueÚlabelÚinteractive)r+   r)   r€   r5   ÚDropdownr1   )r   Úgrr-   r~   r)   r€   r*   s          r   Úcreate_config_uiz!MMAudioProcessor.create_config_uiŠ   sz   € ØUÐUÐUÐUÐUÐUÐUÐUà×.Ò.¨vÑ6Ô6ˆØ�{Š{Ð#7¸v¿zºzÈ&ÐRfÑ?gÔ?gð  pnð  @Kð  |Kˆ{ñ  Lô  LˆØ˜�ÐÐr   c                 óJ   — 	 ddl m}  |¦   «          d S # t          $ r Y d S w xY w)Nr   )Úrelease_models)rx   r‰   ÚImportError)r   r‰   s     r   Úrelease_vramzMMAudioProcessor.release_vram‘   sO   € ð	ØEÐEÐEÐEÐEÐEàˆNÑÔÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ”
"¡"r   )NNNN)T)NN)	rK   rK   rg   r   NNNr   rh   )r   N)Ú__name__Ú
__module__Ú__qualname__ÚMODE_OFFrC   rB   ÚdictÚstrr   r   Úclassmethodr&   r,   r5   r-   Úboolr9   Útupler2   rG   rV   Úlistr^   r   rf   r}   r‡   r‹   r8   r   r   r
   r
      sš  € € € € € Ø€HØ€NØ€Kð+ d¨3°¨8¤nð +ð +ð +ð +ð ð
¨$¨s°C¨x¬.ð 
ð 
ð 
ñ „[ð
ð ð.˜t C¨ Hœ~ð .ð .ð .ñ „[ð.ð
 ð¨d°3¸°8¬nð ÀÀcÈ3ÀhÄð ð ð ñ „[ððið i D¨¨c¨¤N°TÑ$9ð iÀTÈ#ÈsÈ(Ä^ð ið ið ið ið˜ð ð ð ð ð4ð 4  S¨# X¤°Ñ 5ð 4ÀÀtÈSÐRUÐWZÐ]aÑWaÐcfÐimÑcmÐGmÔAnð 4ð 4ð 4ð 4ðHð HÐsvð Hð Hð Hð Hð"ð °ð ÀÀTÈ#ÈsÈ(Ä^Ô@Tð ð ð ð ðwð w¨h°s¸C°xÔ.@ð wÐquð wð wð wð wðð ð  \_ð ð ð ð ð4 SXð  ð  ð  ¨4°°S°¬>ð  È4ð  ð  ð  ð  ðð ð ð ð ð r   r
   N)	Útypingr   r   Úpostprocessing.audio_processorsr   r   r   r   r
   r8   r   r   ú<module>r˜      s•   ðØ  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ðLð Lð Lð Lð Lñ Lô Lð Lð Lð Lr   