§
    ÎÐj8R  ã            	      ó  — d dl mZ d dlmZmZmZ d dlZd dlZd dlZd dl	m
Z
mZ dadadadZdZd2d3d„Zd3d	„Zed4d5d„¦   «         Zdd
dddddddœd6d „Zd7d#„Zd8d%„Zd9d'„Zd:d(„Zd:dd)œd;d+„Zd,„ Zd2d<d-„Zd.„ Zd2d/„Z G d0„ d1¦  «        ZdS )=é    )Úannotations)Úcontrolled_model_loadingÚloading_callbackÚcheckpoint_modulesN)ÚAnyÚCallableTÚreturnÚNonec                ó&  — dd l }ddlm} |�>|                     d|¦  «         |                     ¦   «          |                     ¦   «          ~ |j                             ¦   «         r|j                             ¦   «          t          j
        ¦   «          d S )Nr   ©Úoffload_registryÚSeedVC)ÚtorchÚshared.utilsr   Úunregister_offloadobjÚ
unload_allÚreleaseÚcudaÚis_availableÚempty_cacheÚgcÚcollect)Ú	converterÚ
offloadobjr   r   s       úNC:\Users\johnn\OneDrive\Documents\AI\postprocessing\seedvc_processor\bridge.pyÚ_release_runtime_objectsr      s™   € Ø€L€L€LØ-Ð-Ð-Ð-Ð-Ð-àÐØ×.Ò.¨x¸ÑDÔDÐDØ×ÒÑÔÐØ×ÒÑÔÐØØ„z×ÒÑ Ô ð !ØŒ
×ÒÑ Ô Ð Ý„J�L„L€L€L€Ló    c                 óF   — t          t          t          ¦  «         d ad ad ad S ©N)r   Ú_persistent_converterÚ_persistent_offloadobjÚ_persistent_profile© r   r   Úrelease_modelsr$       s.   € õ Õ2Õ4JÑKÔKÐKØ ÐØ!ÐØÐÐÐr   é   é   Úpersistent_modelsÚboolÚverbose_levelÚintÚ	init_pipeúCallable[..., int] | NoneÚmodec           	     ó&  — dd l }ddlm} ddlm} ddlm}  ||¦  «        }||f}	t          �t          |	k    rt          ¦   «          | }
t          €¯| 
                    |j        |¬¦  «        }|                     |||¬¦  «        }d|                     |¦  «        i}|� ||||¦  «        }d|d	<    |j        |ft          ¦   «         |d|j        |d
œ|¤Ž}ddlm} |                     d|t          ¦  «         | r|a|a|	ant&          }t          }d}
|||
fS )Nr   )Úoffload)Úseedvc)Únormalize_mode)Údtyper-   )Ú
profile_noÚmodelr-   ÚcoTenantsMapFÚpinnedMemory)r   r3   ÚquantizeTransformerÚconvertWeightsFloatToÚverboseLevelr   r   T)r   Úmmgpr/   Úpostprocessingr0   Ú&postprocessing.seedvc_processor.assetsr1   r!   r"   r$   Ú	get_modelÚfloat16Úget_pipeÚget_cotenants_mapÚprofiler   r   r   Úregister_offloadobjr    )r'   r3   r)   r+   r-   r   r/   r0   r1   Úprofile_keyÚ
keep_aliver   ÚpipeÚoffload_kwargsr   r   s                   r   Ú_get_runtimerG   )   s©  € à€L€L€LØÐÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%ØEÐEÐEÐEÐEÐEð ˆ>˜$ÑÔ€DØ˜tÐ$€KÝÐ)Õ.AÀ[Ò.PÐ.PÝÑÔÐà"€JÝÐ%Ø×$Ò$¨5¬=¸tÐ$ÑDÔDˆ	Ø�Š¨*¸IÈDˆÑQÔQˆØ(¨&×*BÒ*BÀ4Ñ*HÔ*HÐIˆØÐ Ø"˜ 4¨¸ÑDÔDˆJØ).ˆ�~Ñ&Ø$�W”_ Tð  UÕ<LÑ<NÔ<NÐ[eð  |Að  Y^ô  Yfð  uBð  Uð  Uð  FTð  Uð  Uˆ
Ø1Ð1Ð1Ð1Ð1Ð1Ø×,Ò,¨X°zÅ>ÑRÔRÐRØð 	.Ø$-Ð!Ø%/Ð"Ø"-Ðøå)ˆ	Ý+ˆ
Øˆ
à�j *Ð,Ð,r   F)r'   r3   r)   r+   Údiffusion_stepsÚcfg_rater-   Úamplitude_match_audio_pathÚsource_audio_pathÚstrÚvoice_sample_pathÚoutput_pathrH   ú
int | NonerI   úfloat | NonerJ   ú
str | Nonec               óJ  — dd l }ddlm}m}m} ddlm}  ||	¦  «        }	t          |||||	¬¦  «        \  }}}	 t          | ¦  «        \  }}t          |¦  «        \  }}|
€|nt          |
¦  «        d         }t          ||¦  «        }d„ | 
                    ¦   «                              ¦   «         D ¦   «         }|                     ¦   «         5  t          |¦  «        5  |                     ||||||€ ||	¦  «        n||€ ||	¦  «        n|¬¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y    ||||¦  «         |�|                     ¦   «          |st!          ||¦  «         n.# |�|                     ¦   «          |st!          ||¦  «         w w xY w|S )Nr   )Úget_default_cfg_rateÚget_default_stepsr1   ©Úwrite_wav_file)r3   r)   r+   r-   c              3  óV   K  — | ]$}|                      ¦   «         D ]}|j        °	|V — ŒŒ%d S r   )ÚmodulesÚ_modules)Ú.0r4   Úmodules      r   ú	<genexpr>z%convert_audio_file.<locals>.<genexpr>Z   sE   è è € Ð~Ð~˜eÐW\×WdÒWdÑWfÔWfÐ~Ð~ÈVÐntÔn}Ð~�6Ð~Ð~Ð~Ð~Ð~Ð~Ð~r   )Úoutput_raterH   rI   )r   r<   rS   rT   r1   Úshared.utils.audio_videorV   rG   Ú_load_audio_tensorÚ_match_reference_amplitudeÚpipe_modulesÚvaluesÚinference_moder   Úconvert_tensorr   r   )rK   rM   rN   r'   r3   r)   r+   rH   rI   r-   rJ   r   rS   rT   r1   rV   r   r   rD   Úsource_audioÚsource_rateÚreference_audioÚreference_rateÚamplitude_audiorX   Ú	converteds                             r   Úconvert_audio_filerk   N   sÃ  € Ø€L€L€LØnÐnÐnÐnÐnÐnÐnÐnÐnÐnØ7Ð7Ð7Ð7Ð7Ð7àˆ>˜$ÑÔ€DÝ(4Ð5FÐS]Ðmzð  GPð  W[ð  )\ñ  )\ô  )\Ñ%€Iˆz˜:ð<Ý$6Ð7HÑ$IÔ$IÑ!ˆ�kÝ*<Ð=NÑ*OÔ*OÑ'ˆ˜Ø*DÐ*L˜,˜,ÕRdÐeñ  SAô  SAð  BCô  SDˆÝ4°_ÀoÑVÔVˆØ~Ð~ y×'=Ò'=Ñ'?Ô'?×'FÒ'FÑ'HÔ'HÐ~Ñ~Ô~ˆØ×!Ò!Ñ#Ô#ð 		ð 		Õ%7¸Ñ%@Ô%@ð 		ð 		Ø!×0Ò0ØØØØØ'Ø;JÐ;RÐ 1Ð 1°$Ñ 7Ô 7Ð 7ÐXgØ7?Ð7GÐ-Ð-¨dÑ3Ô3Ð3ÈXð 1ñ ô ˆIð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 	ˆ�{ I¨{Ñ;Ô;Ð;àÐ!Ø×!Ò!Ñ#Ô#Ð#Øð 	<Ý$ Y°
Ñ;Ô;Ð;øøð Ð!Ø×!Ò!Ñ#Ô#Ð#Øð 	<Ý$ Y°
Ñ;Ô;Ð;Ð;ð	<øøøàÐsT   ¹BE5 Ã
D4Ã7DÄD4ÄD!	Ä!D4Ä$D!	Ä%D4Ä(E5 Ä4D8Ä8E5 Ä;D8Ä<E5 Å5+F Ú
output_dirÚprefixc                óŽ   — t          j        | d¬¦  «         t          j        |d| ¬¦  «        \  }}t          j        |¦  «         |S )NT)Úexist_okz.wav)rm   ÚsuffixÚdir)ÚosÚmakedirsÚtempfileÚmkstempÚclose)rl   rm   ÚfdÚpaths       r   Ú_make_temp_wavry   n   sD   € Ý„K�
 TÐ*Ñ*Ô*Ð*ÝÔ v°fÀ*ÐMÑMÔM�H€BˆÝ„HˆR�L„L€LØ€Kr   Ú
audio_pathc                ó"  — dd l }dd l}dd l}|                     t	          j        | ¦  «        d d¬¦  «        \  }}|                     ||j        ¬¦  «        }|j        dk    r|d d d …f         }| 	                    |¦  «        t          |¦  «        fS )Nr   F)ÚsrÚmono©r2   r&   )ÚlibrosaÚnumpyr   Úloadrr   ÚfspathÚasarrayÚfloat32ÚndimÚ
from_numpyr*   )rz   r   Únpr   Ú
audio_dataÚsample_rates         r   r_   r_   u   sž   € Ø€N€N€NØÐÐÐØ€L€L€Là%Ÿlšl­2¬9°ZÑ+@Ô+@ÀTÐPU˜lÑVÔVÑ€J�Ø—’˜J¨b¬j�Ñ9Ô9€JØ„˜!ÒÐØ  a a a Ô(ˆ
Ø×Ò˜JÑ'Ô'­¨[Ñ)9Ô)9Ð9Ð9r   Úchannels_firstc               ó:  — dd l }t          | d¦  «        rJ|                      ¦   «                              ¦   «                              ¦   «                               ¦   «         } |                     | |j        ¬¦  «        } | j        dk    r| d d …d f         S |r| j        n| S )Nr   Údetachr~   r&   )	r€   ÚhasattrrŒ   ÚcpuÚfloatrƒ   r„   r…   ÚT)ÚaudiorŠ   r‡   s      r   Ú_audio_to_framesr’   �   s–   € ØÐÐÐåˆu�hÑÔð 5Ø—’‘”×"Ò"Ñ$Ô$×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4ˆØ�JŠJ�u B¤JˆJÑ/Ô/€EØ„z�Q‚€Ø�Q�Q�Q˜�WŒ~ÐØ$Ð/ˆ5Œ7ˆ7¨%Ð/r   c                óÀ  — dd l }|                     |                     | ¦  «        d¬¦  «        }|€'|                     | j        d         t
          ¬¦  «        nE|                     ||j        ¬¦  «                             d¦  «        d | j        d         …         dk    }||         }|j	        dk    r|S dt          |                     ¦   «         ¦  «        z  }|||k    z  S )Nr   r&   ©Úaxisr~   éÿÿÿÿç      à?gš™™™™™¹?)r€   ÚmeanÚabsÚonesÚshaper(   rƒ   r„   ÚreshapeÚsizer�   )rg   Ú	base_maskr‡   Ú	frame_absÚactive_maskÚ
active_absÚ	thresholds          r   Ú_reference_active_maskr£   Œ   s&  € ØÐÐÐà—’˜Ÿš˜Ñ/Ô/°a�Ñ8Ô8€IØCLÐCT�"—'’'˜/Ô/°Ô2½$�'Ñ?Ô?Ð?ÐZ\×ZdÒZdÐenÐvxô  wAÐZdñ  [Bô  [B÷  [Jò  [Jð  KMñ  [Nô  [Nð  Ohð  P_ô  Peð  fgô  Phð  Ohô  [ið  loò  [o€KØ˜;Ô'€JØ„˜!ÒÐØÐØ•e˜JŸOšOÑ-Ô-Ñ.Ô.Ñ.€IØ˜) iÒ/Ñ0Ð0r   ©rŠ   r�   c          	     ó¬  — dd l }t          | |¬¦  «        } |€t          | ¦  «        }nB|                     |t          ¬¦  «                             d¦  «        d | j        d         …         }| d |j        d         …         |         }|j        rHt          | 	                    | 
                    |                     |¦  «        ¦  «        ¦  «        ¦  «        ndS )Nr   r¤   r~   r–   ç        )r€   r’   r£   rƒ   r(   rœ   r›   r�   r�   Úsqrtr˜   Úsquare)r‘   r    rŠ   r‡   Úactive_audios        r   Ú_active_rms_amplituderª   ˜   sÅ   € ØÐÐÐå˜U°>ÐBÑBÔB€EØÐÝ,¨UÑ3Ô3ˆˆà—j’j µD�jÑ9Ô9×AÒAÀ"ÑEÔEÀoÀuÄ{ÐSTÄ~ÀoÔVˆØÐ.˜+Ô+¨AÔ.Ð.Ô/°Ô<€LØ?KÔ?PÐY�5�—’˜Ÿš §¢¨<Ñ!8Ô!8Ñ9Ô9Ñ:Ô:Ñ;Ô;Ð;ÐVYÐYr   c                óp  — t          | d¬¦  «        }t          |d¬¦  «        }|dk    s|dk    r|S ||z  }t          |                     ¦   «                              ¦   «                              ¦   «                              ¦   «         ¦  «        }|dk    rt          |d|z  ¦  «        }|t          |¦  «        z  S )NTr¤   ç:Œ0âŽyE>r¦   ç      ð?)rª   r�   rŒ   r™   ÚmaxÚitemÚmin)re   rg   Úsource_activeÚreference_activeÚgainÚpeaks         r   r`   r`   ¤   s¸   € Ý)¨,ÀtÐLÑLÔL€MÝ,¨_ÈTÐRÑRÔRÐØ˜ÒÐÐ 0°DÒ 8Ð 8ØÐØÐ+Ñ+€DÝ�×'Ò'Ñ)Ô)×-Ò-Ñ/Ô/×3Ò3Ñ5Ô5×:Ò:Ñ<Ô<Ñ=Ô=€DØˆc‚z€zÝ�4˜˜t™Ñ$Ô$ˆØ�U 4™[œ[Ñ(Ð(r   c                óô  — dd l }dd l}ddlm} |                     t          j        | ¦  «        dd¬¦  «        \  }}|                     t          j        |¦  «        dd¬¦  «        \  }	}
|�t          ||||j        d         ¦  «        nd }t          ||¦  «        }t          | 
                    |j        ¦  «        ||
|	j        d         ¦  «        dk    }t          ||¦  «        }t          |	|¦  «        }|dk    s|dk    r|S ||z  }|	j        r5t          |                     |                     |	¦  «        ¦  «        ¦  «        nd}|dk    rt#          |d	|z  ¦  «        } |||	t          |¦  «        z  |
¦  «        S )
Nr   rU   r„   T©r2   Ú	always_2dr—   r¬   r¦   r­   )r€   Ú	soundfiler^   rV   Úreadrr   r‚   Ú_fit_audio_mask_to_audior›   r£   Úastyper„   rª   r�   r�   r®   r™   r°   )Úreference_pathrz   r    Úmask_sample_rater‡   ÚsfrV   rg   rh   r‘   Ú
audio_rateÚreference_maskÚreference_activityÚaudio_activityr²   Úaudio_activer³   r´   s                     r   Ú_match_audio_file_amplituderÄ   °   s²  € ØÐÐÐØÐÐÐØ7Ð7Ð7Ð7Ð7Ð7à&(§g¢g­b¬i¸Ñ.GÔ.GÈyÐdh gÑ&iÔ&iÑ#€O�^ØŸš¥¤	¨*Ñ 5Ô 5¸YÐRV˜ÑWÔWÑ€Eˆ:ð {Fð  {RÕ-¨kÐ;KÈ^Ð]lÔ]rÐstÔ]uÑvÔvÐvð  X\€NÝ/°ÀÑPÔPÐÝ-Ð.@×.GÒ.GÈÌ
Ñ.SÔ.SÐUcÐeoÐqvÔq|Ð}~Ôqñ  Aô  Að  DGò  G€NÝ,¨_Ð>PÑQÔQÐÝ(¨°Ñ?Ô?€LØ˜4ÒÐ <°4Ò#7Ð#7ØÐØ˜lÑ*€DØ+0¬:Ð>�5�—’˜Ÿš˜u™œÑ&Ô&Ñ'Ô'Ð'¸3€DØˆc‚z€zÝ�4˜˜t™Ñ$Ô$ˆØˆ>˜* e­e°D©k¬kÑ&9¸:ÑFÔFÐFr   c                ó²  — dd l }ddlm} |                     | |j        ¬¦  «                             d¦  «        } t          |¦  «        t          |¦  «        k    r' || t          |¦  «        t          |¦  «        ¦  «        } |                     | dd¦  «        } | j        d         |k     r&| 	                    | d|| j        d         z
  f¦  «        } | d |…         S )Nr   )Úresample_audio_arrayr~   r–   r¦   r­   )
r€   r^   rÆ   rƒ   r„   rœ   r*   Úclipr›   Úpad)Úmaskr½   Útarget_sample_rateÚtarget_lengthr‡   rÆ   s         r   rº   rº   Å   sà   € ØÐÐÐØ=Ð=Ð=Ð=Ð=Ð=à�:Š:�d "¤*ˆ:Ñ-Ô-×5Ò5°bÑ9Ô9€DÝ
ÐÑÔ¥Ð$6Ñ 7Ô 7Ò7Ð7Ø#Ð# D­#Ð.>Ñ*?Ô*?ÅÐEWÑAXÔAXÑYÔYˆØ�7Š7�4˜˜cÑ"Ô"€DØ„z�!„}�}Ò$Ð$Ø�vŠv�d˜Q °´
¸1´Ñ =Ð>Ñ?Ô?ˆØ���ÔÐr   c           	     óö  — dd l }dd l}ddlm}m} d }d}	d}
t          | ¦  «        D �]±\  }}|                     t          j        |¦  «        dd¬¦  «        \  }}|€Ft          |¦  «        }	|j
        d         }
|                     |j
        d         |
f|j        ¬¦  «        }nDt          |¦  «        |	k    r1 ||t          |¦  «        |	¦  «        }|j        dk    r|d d …d f         }|j
        d         |
k    rC|j
        d         dk    r$|                     |d d …d d…f         |
d¬¦  «        n|d d …d |
…f         }|�0|t          ||         ||	|j
        d         ¦  «        d d …d f         z  }|j
        d         |j
        d         k    r3|                     |d|j
        d         |j
        d         z
  fd	f¦  «        }|d |j
        d         …xx         |z  cc<   �Œ³ |||                     |d
d¦  «        |	¦  «        S )Nr   )rÆ   rV   r&   r„   Tr¶   r~   r”   )r   r   g      ð¿r­   )r€   r¸   r^   rÆ   rV   Ú	enumerater¹   rr   r‚   r*   r›   Úzerosr„   r…   Úrepeatrº   rÈ   rÇ   )Úaudio_pathsrN   Úmasksr½   r‡   r¾   rÆ   rV   Úmixed_audioÚtarget_rateÚtarget_channelsÚtrack_norz   rˆ   r‰   s                  r   Ú_merge_audio_files_to_wavrÖ   Ò   s¤  € ØÐÐÐØÐÐÐØMÐMÐMÐMÐMÐMÐMÐMà€KØ€KØ€OÝ )¨+Ñ 6Ô 6ð 8ñ 8Ñˆ�*Ø"$§'¢'­"¬)°JÑ*?Ô*?ÀyÐ\` 'Ñ"aÔ"aÑˆ
�KØÐÝ˜kÑ*Ô*ˆKØ(Ô.¨qÔ1ˆOØŸ(š( JÔ$4°QÔ$7¸Ð#IÐQSÔQ[˜(Ñ\Ô\ˆKˆKÝ�ÑÔ Ò,Ð,Ø-Ð-¨j½#¸kÑ:JÔ:JÈKÑXÔXˆJØŒ !Ò#Ð#Ø'¨¨¨¨4¨Ô0�
ØÔ˜AÔ /Ò1Ð1ØR\ÔRbÐcdÔReÐijÒRjÐRj˜Ÿš :¨a¨a¨a°°!°¨eÔ#4°oÈA˜ÑNÔNÐNÐpzÐ{|Ð{|Ð{|ð  Oð  @Oð  Oð  |Oô  qPˆJØÐØ#Õ&>¸uÀX¼ÐP`ÐbmÐoyÔoð  ABô  pCñ  'Dô  'Dð  EFð  EFð  EFð  HLð  ELô  'Mñ  MˆJØÔ˜AÔ Ô!2°1Ô!5Ò5Ð5ØŸ&š& °°:Ô3CÀAÔ3FÈÔIZÐ[\ÔI]Ñ3]Ð/^Ð`fÐ.gÑhÔhˆKØÐ(�ZÔ% aÔ(Ð(Ð)Ð)Ô)¨ZÑ7Ð)Ð)Ñ)Ñ)Øˆ>˜+ r§w¢w¨{¸DÀ#Ñ'FÔ'FÈÑTÔTÐTr   c                  óÜ   — e Zd ZdZdZdZdZdZdZdZ	ededediZ
d;d„Zed<d„¦   «         Zd=d>d„Zd=d?d„Zd@d„ZdAdBd„Zd@d„ZdCdDd!„Zd"ddd#d$œdEd/„Zd"ddddd#d0œdFd2„Zd"ddddd3œdGd8„ZdHd:„ZdS )IÚSeedVCBridger   r&   é   é   r   zv1.0 Speechzv1.0 Singing / F0 44kz	v2 SpeechÚserver_configúdict[str, Any]c                ó"   — || _         || _        d S r   )rÛ   Úfiles_locator)ÚselfrÛ   rÞ   s      r   Ú__init__zSeedVCBridge.__init__ý   s   € Ø*ˆÔØ*ˆÔÐÐr   r	   úlist[tuple[str, int]]c                ó\   — d| j         fgd„ | j                             ¦   «         D ¦   «         ¢S )NÚOffc                ó   — g | ]	\  }}||f‘Œ
S r#   r#   )rZ   r-   Úlabels      r   ú
<listcomp>z-SeedVCBridge.mode_choices.<locals>.<listcomp>  s    € Ð(`Ð(`Ð(`¹;¸4À¨%°¨Ð(`Ð(`Ð(`r   )ÚMODE_OFFÚ	_VERSIONSÚitems)Úclss    r   Úmode_choiceszSeedVCBridge.mode_choices  s4   € à˜œÐ%ÐaÐ(`Ð(`È#Ì-×J]ÒJ]ÑJ_ÔJ_Ð(`Ñ(`Ô(`ÐaÐar   NÚconfigúdict[str, Any] | Noneútuple[int, int]c                óÀ  — |€| j         n|}|                     d| j        ¦  «        }|                     d| j        ¦  «        }	 t	          |¦  «        }n# t
          t          f$ r
 | j        }Y nw xY w	 t	          |¦  «        }n# t
          t          f$ r
 | j        }Y nw xY w|| j        vr|| j        k    r| j        }|| j        | j        fvr| j        }||d<   ||d<   ||fS )NÚseedvc_modeÚseedvc_persistence)	rÛ   Úgetrç   ÚPERSIST_UNLOADr*   Ú	TypeErrorÚ
ValueErrorrè   ÚPERSIST_RAM©rß   rì   r-   Úpersistences       r   Únormalize_configzSeedVCBridge.normalize_config  s  € Ø'- ~�Ô#Ð#¸6ˆØ�zŠz˜-¨¬Ñ7Ô7ˆØ—j’jÐ!5°tÔ7JÑKÔKˆð	!Ý�t‘9”9ˆDˆDøÝ�:Ð&ð 	!ð 	!ð 	!Ø”=ˆDˆDˆDð	!øøøð	.Ý˜kÑ*Ô*ˆKˆKøÝ�:Ð&ð 	.ð 	.ð 	.ØÔ-ˆKˆKˆKð	.øøøà�t”~Ð%Ð%¨$°$´-Ò*?Ð*?Ø”=ˆDØ˜tÔ2°DÔ4DÐEÐEÐEØÔ-ˆKØ $ˆˆ}ÑØ'2ˆÐ#Ñ$Ø�[Ð Ð s$   ÁA ÁA.Á-A.Á2B ÂBÂBútuple[bool, str | None, int]c                ó~   — |                       |¦  «        \  }}|| j        k    | j                             |¦  «        |fS r   )rù   rç   rè   rò   r÷   s       r   ÚsettingszSeedVCBridge.settings  s>   € Ø ×1Ò1°&Ñ9Ô9ÑˆˆkØ�t”}Ò$ d¤n×&8Ò&8¸Ñ&>Ô&>ÀÐKÐKr   r(   c                ó6   — |                       ¦   «         d         S )Nr   )rü   ©rß   s    r   ÚenabledzSeedVCBridge.enabled  s   € Ø�}Š}‰Œ˜qÔ!Ð!r   TÚenabled_onlyúlist[dict[str, Any]]c                ór   — |                       ¦   «         \  }}|r|| j        k    rg S ddlm}  ||¬¦  «        S )Nr   )Úquery_download_def)r-   )rù   rç   r<   r  )rß   r   r-   Ú_r  s        r   r  zSeedVCBridge.query_download_def   sV   € Ø×'Ò'Ñ)Ô)‰ˆˆaØð 	˜D D¤MÒ1Ð1ØˆIØMÐMÐMÐMÐMÐMØ!Ð! tÐ,Ñ,Ô,Ð,r   c                óŠ   ‡ — ddl m} ‰                      ¦   «         \  }} ||¦  «        }t          ˆ fd„|D ¦   «         ¦  «        S )Nr   )Úquery_required_filesc              3  óT   •K  — | ]"}‰j                              |d ¬¦  «        duV — Œ#dS )F)Úerror_if_noneN)rÞ   Úlocate_file)rZ   rx   rß   s     €r   r\   z1SeedVCBridge._assets_available.<locals>.<genexpr>,  s@   øè è € ÐtÐtÐ]a�4Ô%×1Ò1°$ÀeÐ1ÑLÔLÐTXÐXÐtÐtÐtÐtÐtÐtr   )r<   r  rù   Úall)rß   r  r-   r  Úrequired_filess   `    r   Ú_assets_availablezSeedVCBridge._assets_available'  s^   ø€ ØOÐOÐOÐOÐOÐOà×'Ò'Ñ)Ô)‰ˆˆaØ-Ð-¨dÑ3Ô3ˆÝÐtÐtÐtÐtÐesÐtÑtÔtÑtÔtÐtr   Úprocess_filesúCallable[..., Any]Ústatus_textrQ   c                óŒ  — |                       ¦   «         }|sdS d}ddlm}m}m} ddlm}	 |	                     ¦   «         s" ||d¦  «         |	                     ¦   «          d}|r/|  	                    ¦   «         s |||¦  «         |D ]
}
 |di |
¤Ž Œd}t          r+ |¦   «         } ||¦  «        r ||d¦  «          |di |¤Ž d}|S )	NFr   )Údownload_def_missing_filesÚ/query_audio_background_replacement_download_defÚsend_download_status)Ú	componentzDownloading SeedVC Component...Tz7Downloading audio background replacement model files...r#   )r  Úshared.utils.downloadr  r  r  Úpostprocessing.seedvc_processorr  Ú	installedÚensure_installedr  ÚSEEDVC_RESTORE_BACKGROUND_STEM)rß   r  Úsend_cmdr  Údownload_defsÚ
downloadedr  r  r  r  Údownload_defÚstem_download_defs               r   ÚdownloadzSeedVCBridge.download.  sn  € Ø×/Ò/Ñ1Ô1ˆØð 	Ø�5Øˆ
ð 	Lð  	Lð  	Lð  	Lð  	Lð  	Lð  	Lð  	Lð  	Lð  	Là=Ð=Ð=Ð=Ð=Ð=Ø×"Ò"Ñ$Ô$ð 	Ø Ð  Ð+LÑMÔMÐMØ×&Ò&Ñ(Ô(Ð(ØˆJØð 	 ×!7Ò!7Ñ!9Ô!9ð 	Ø Ð  ¨;Ñ7Ô7Ð7Ø -ð .ð .�Ø�Ð-Ð- Ð-Ð-Ð-Ð-ØˆJÝ)ð 	"Ø OÐ OÑ QÔ QÐØ)Ð)Ð*;Ñ<Ô<ð "Ø$Ð$ XÐ/hÑiÔiÐiØ�Ð2Ð2Ð 1Ð2Ð2Ð2Ø!�
ØÐr   r%   r0   )r3   r)   r+   rm   rK   rL   rM   rN   Úvoice_sample2_pathr)   r*   r+   r,   rm   c          
     ó  — dd l }
ddlm} ddlm} t
          j                             t
          j                             |¦  «        ¦  «        pd}t          ||	› d�¦  «        }t          ||	› d�¦  «        }t          ||	› d�¦  «        }t          ||	› d�¦  «        }||||g}	  |||||d	k    d
d
¬¦  «        \  }}}t          |                     ¦   «         ¦  «        }|                      ¦   «         \  }}t          ||||| j        k    ||||¬¦  «         t          ||||| j        k    ||||¬¦  «         t          |||d         |¬¦  «         t          |||d         |¬¦  «         ||g|}}t           rb|                     |¦  «         |                     |
                     d|
                     |d         |d         ¦  «        z
  dd¦  «        ¦  «         t)          ||||¬¦  «         ||¦  «         S #  ||¦  «         w xY w)Nr   )Úextract_dual_audio©Úcleanup_temp_audio_filesú.Ú
_speaker1_Ú
_speaker2_Ú_speaker1_seedvc_Ú_speaker2_seedvc_rÙ   T)ÚverboseÚreturn_masksÚspeech_masks_only©r'   r3   r)   r+   r-   )r    r½   r&   r­   r¦   )rÑ   r½   )r€   Úpreprocessing.speaker_separatorr"  r^   r$  rr   rx   ÚdirnameÚabspathry   Úlistrb   rù   rk   rö   rÄ   Ú(KEEP_ORIGINAL_AUDIO_OUTSIDE_TWO_SPEAKERSÚappendrÇ   ÚmaximumrÖ   )rß   rK   rM   rN   r   r  r3   r)   r+   rm   r‡   r"  r$  rl   Úsplit_track1Úsplit_track2Úconverted_track1Úconverted_track2Útemp_tracksr  Úspeaker_masksr½   Úmask_valuesr-   rø   Úmerge_tracksÚmerge_maskss                              r   Ú_replace_two_speaker_audio_filez,SeedVCBridge._replace_two_speaker_audio_fileG  s  € ØÐÐÐØFÐFÐFÐFÐFÐFØEÐEÐEÐEÐEÐEå”W—_’_¥R¤W§_¢_°[Ñ%AÔ%AÑBÔBÐIÀcˆ
Ý% j°VÐ2GÐ2GÐ2GÑHÔHˆÝ% j°VÐ2GÐ2GÐ2GÑHÔHˆÝ)¨*¸Ð6RÐ6RÐ6RÑSÔSÐÝ)¨*¸Ð6RÐ6RÐ6RÑSÔSÐØ# \Ð3CÐEUÐVˆð	2Ø1CÐ1CÐDUÐWcÐeqð  |Ið  MNò  |Nð  ]að  uyð  2zñ  2zô  2zÑ.ˆAˆ}Ð.Ý˜}×3Ò3Ñ5Ô5Ñ6Ô6ˆKØ $× 5Ò 5Ñ 7Ô 7ÑˆD�+Ý˜|Ð->Ð@PÐdoÐswô  tDò  eDð  Q[ð  kxð  DMð  TXð  Yñ  Yô  Yð  YÝ˜|Ð-?ÐAQÐepÐtxô  uEò  fEð  R\ð  lyð  ENð  UYð  Zñ  Zô  Zð  ZÝ'¨Ð6FÐT_Ð`aÔTbð  vFð  Gñ  Gô  Gð  GÝ'¨Ð6FÐT_Ð`aÔTbð  vFð  Gñ  Gô  Gð  GØ)9Ð;KÐ(LÈk˜+ˆLÝ7ð hØ×#Ò#Ð$5Ñ6Ô6Ð6Ø×"Ò" 2§7¢7¨3°·²¸KÈ¼NÈKÐXYÌNÑ1[Ô1[Ñ+[Ð]`ÐbeÑ#fÔ#fÑgÔgÐgÝ,¨\¸;ÈkÐl|Ð}Ñ}Ô}à$Ð$ [Ñ1Ô1Ð1Ð1øÐ$Ð$ [Ñ1Ô1Ð1Ð1øøøs   Â"EG2 Ç2G?)r3   r)   r+   r   Úspeaker_countrm   r?  c               ó�  — |                       ¦   «         \  }}|| j        k    rt          d¦  «        ‚|                      |¦  «         t          j                             t          j                             |¦  «        ¦  «        pd}g }|}d }|}	 t          riddl	m
} t          |d¦  «        }t          |d¦  «        }|||gz  } ||||¦  «        \  }}|||gz  }t          |d¦  «        }|                     |¦  «         t          |	¦  «        dk    r0|€t          d	¦  «        ‚|                      |||||||||
¬
¦	  «	        }n0t          ||||| j        k    ||||¬¦  «        }t#          ||¦  «         |�&t%          ||g|¦  «        |rddlm}  ||¦  «         S S ||rddlm}  ||¦  «         S S # |rddlm}  ||¦  «         w w xY w)NzCSeedVC voice replacement is disabled in Configuration > Extensions.r%  r   )Ú"extract_vocal_and_background_stemsÚseedvc_vocals_Úseedvc_background_Úseedvc_voice_rÙ   zDTwo-speaker SeedVC voice replacement requires a second voice sample.)r   r  r3   r)   r+   rm   r-  r#  )rù   rç   ÚRuntimeErrorr  rr   rx   r/  r0  r  Úpreprocessing.extract_vocalsrA  ry   r3  r*   r>  rk   rö   rÄ   rÖ   r^   r$  )rß   rK   rM   rN   r  r3   r)   r+   r   r?  rm   r-   rø   rl   r9  Úconversion_source_pathÚbackground_pathÚconversion_output_pathrA  Úrequested_vocals_pathÚrequested_background_pathÚconverted_pathr$  s                          r   Úreplace_audio_filezSeedVCBridge.replace_audio_fileb  sÔ  € Ø ×1Ò1Ñ3Ô3ÑˆˆkØ�4”=Ò Ð ÝÐdÑeÔeÐeØ�Š�mÑ$Ô$Ð$Ý”W—_’_¥R¤W§_¢_°[Ñ%AÔ%AÑBÔBÐIÀcˆ
ØˆØ!2ÐØˆØ!,Ðð	6Ý-ð 	;Ø[Ð[Ð[Ð[Ð[Ð[å(6°zÐCSÑ(TÔ(TÐ%Ý,:¸:ÐG[Ñ,\Ô,\Ð)ØÐ 5Ð7PÐQÑQ�Ø:\Ð:\Ð]nð  qFð  Hañ  ;bô  ;bÑ7Ð&¨ØÐ 6¸ÐHÑH�Ý)7¸
ÀOÑ)TÔ)TÐ&Ø×"Ò"Ð#9Ñ:Ô:Ð:å�=Ñ!Ô! QÒ&Ð&Ø%Ð-Ý&Ð'mÑnÔnÐnØ!%×!EÒ!EÐF\Ð^oð  rHð  ]oð  Lð  Ycð  s@ð  LUð  ^dÐ!Eñ  "eô  "e��å!3Ð4JÐL]Ð_uð  JUð  Y]ô  Yiò  Jið  v@ð  P]ð  irð  y}ð  "~ñ  "~ô  "~�Ý+Ð,BÀNÑSÔSÐSØÐ*Ý0°.À/Ð1RÐT_Ñ`Ô`ð ð 6ØMÐMÐMÐMÐMÐMà(Ð(¨Ñ5Ô5Ð5Ð5ð6ð "àð 6ØMÐMÐMÐMÐMÐMà(Ð(¨Ñ5Ô5Ð5Ð5ð6øˆ{ð 6ØMÐMÐMÐMÐMÐMà(Ð(¨Ñ5Ô5Ð5Ð5ð6øøøs   ÂC6F/ ÆF/ Æ/G)r3   r)   r+   r   r?  Úaudio_tracksú	list[str]rl   útuple[list[str], list[str]]c               ó  — |�t          |¦  «        dk    r|g fS g }t          |¦  «        D ]R\  }}t          ||› d|› d�¦  «        }|                     |                      ||||||||	|
|› d|› �¬¦
  «
        ¦  «         ŒS||fS )Nr   Ú_seedvc_trackr  Ú_track)r  r3   r)   r+   r   r?  rm   )ÚlenrÍ   ry   r3  rM  )rß   rN  rM   rl   rm   r  r3   r)   r+   r   r?  Úconverted_tracksrÕ   Úaudio_trackrN   s                  r   Úreplace_audio_tracksz!SeedVCBridge.replace_audio_tracksˆ  s	  € ØÐ$­¨LÑ(9Ô(9¸QÒ(>Ð(>Ø Ð#Ð#ØÐÝ%.¨|Ñ%<Ô%<ð 	xð 	xÑ!ˆH�kÝ(¨¸Ð5XÐ5XÈXÐ5XÐ5XÐ5XÑYÔYˆKØ×#Ò# D×$;Ò$;¸KÐIZÐ\gð  xEð  R\ð  lyð  ENð  cuð  ERð  ^dð  [vð  [vð  ltð  [vð  [vÐ$;ñ  %wô  %wñ  xô  xð  xð  xØÐ!1Ð1Ð1r   r
   c                ó"   — t          ¦   «          d S r   )r$   rþ   s    r   Úrelease_vramzSeedVCBridge.release_vram‘  s   € ÝÑÔÐÐÐr   )rÛ   rÜ   )r	   rá   r   )rì   rí   r	   rî   )rì   rí   r	   rú   )r	   r(   )T)r   r(   r	   r  ©NN)r  r  r  rQ   r	   r(   )rK   rL   rM   rL   rN   rL   r   rL   r  r  r)   r*   r+   r,   rm   rL   r	   rL   )rK   rL   rM   rL   rN   rL   r  r  r)   r*   r+   r,   r   rQ   r?  r*   rm   rL   r	   rL   )rN  rO  rM   rQ   rl   rL   rm   rL   r  r  r)   r*   r+   r,   r   rQ   r?  r*   r	   rP  ©r	   r
   )Ú__name__Ú
__module__Ú__qualname__rç   ÚMODE_V1ÚMODE_SINGINGÚMODE_ACCENTró   rö   ÚCURRENT_VERSION_LABELrè   rà   Úclassmethodrë   rù   rü   rÿ   r  r  r  r>  rM  rW  rY  r#   r   r   rØ   rØ   î   sö  € € € € € Ø€HØ€GØ€LØ€KØ€NØ€KØ$Ðð 	�ØÐ-Ø�[ð€Ið+ð +ð +ð +ð ðbð bð bñ „[ðbð!ð !ð !ð !ð !ð(Lð Lð Lð Lð Lð"ð "ð "ð "ð-ð -ð -ð -ð -ðuð uð uð uðð ð ð ð ð2 {|ð  STð  }Að  QYð 2ð 2ð 2ð 2ð 2ð 2ð6 UVð  mnð  W[ð  ~Bð  YZð  jrð $6ð $6ð $6ð $6ð $6ð $6ðL klð  CDð  mqð  TXð  opð 2ð 2ð 2ð 2ð 2ð 2ðð ð ð ð ð r   rØ   rZ  r[  )r%   r&   Nr&   )r'   r(   r)   r*   r+   r,   r-   r*   )rK   rL   rM   rL   rN   rL   r'   r(   r)   r*   r+   r,   rH   rO   rI   rP   r-   r*   rJ   rQ   r	   rL   )rl   rL   rm   rL   r	   rL   )rz   rL   )rŠ   r(   r   )rŠ   r(   r	   r�   )r	   rL   )Ú
__future__r   Úshared.utils.media_controlr   r   r   r   rr   rt   Útypingr   r   r    r!   r"   r2  r  r   r$   rG   rk   ry   r_   r’   r£   rª   r`   rÄ   rº   rÖ   rØ   r#   r   r   ú<module>rg     s?  ðà "Ð "Ð "Ð "Ð "Ð "Ø eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eà 	€	€	€	Ø 	€	€	€	Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ð Ð ØÐ ØÐ Ø+/Ð (Ø!%Ð ðð ð ð ð ðð ð ð ð ð!-ð !-ð !-ð !-ñ Ôð!-ðH w|ð  IJð  abð  KOð  osð  NRð  `að  LPð ð ð ð ð ð ð@ð ð ð ð	:ð 	:ð 	:ð 	:ð0ð 0ð 0ð 0ð	1ð 	1ð 	1ð 	1ð	ZÈUð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð	)ð 	)ð 	)ðGð Gð Gð Gð Gð*
 ð 
 ð 
 ðUð Uð Uð Uð8dð dð dð dð dñ dô dð dð dð dr   