o
    :i
                     @   sL   d dl mZ d dlZd dlmZ d dlmZ d dlmZ G dd deZ	dS )    )ListN)DistillEulerSolver)TTSZipformer)ZipVoicec                       sl   e Zd ZdZ fddZ		ddeee  dejdejd	ejd
ejde	de	dedejdejfddZ
  ZS )ZipVoiceDistillzZipVoice-Distill model.c                    s   t  j|i   h d} fdd|D }|r"tdd| t d d  d  d  d	  d
  d  d  d  d  d  d  d d d dd| _t| dd| _d S )N>   pos_dimfeat_dimpos_head_dimfm_decoder_dimquery_head_dimtime_embed_dimvalue_head_dimfm_decoder_num_headsfm_decoder_num_layersfm_decoder_feedforward_dimfm_decoder_cnn_module_kernelfm_decoder_downsampling_factorc                    s   g | ]}| vr|qS  r   ).0pkwargsr   7/home/ubuntu/LuxTTS/zipvoice/models/zipvoice_distill.py
<listcomp>0   s    z,ZipVoiceDistill.__init__.<locals>.<listcomp>zMissing required parameters: z, r      r   r   r   r
   r   r   r   r	   r   r   Tr   )in_dimout_dimdownsampling_factornum_encoder_layerscnn_module_kernelencoder_dimfeedforward_dim	num_headsr   r	   r   r   use_time_embedr   use_guidance_scale_embedforward_fm_decoder)	func_name)super__init__
ValueErrorjoinr   
fm_decoderr   solver)selfargsr   required_paramsmissing	__class__r   r   r(      s.   
zZipVoiceDistill.__init__   Ntokensfeaturesfeatures_lensnoisespeech_condition_maskt_startt_endnum_stepguidance_scalereturnc
           
      C   s   | j |||||||||	d	S )N)	r4   r5   r6   r7   r8   r9   r:   r;   r<   )sample_intermediate)
r-   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r   r   forwardG   s   zZipVoiceDistill.forward)r3   N)__name__
__module____qualname____doc__r(   r   inttorchTensorfloatr?   __classcell__r   r   r1   r   r      s4    2
	
r   )
typingr   rE   zipvoice.models.modules.solverr   !zipvoice.models.modules.zipformerr   zipvoice.models.zipvoicer   r   r   r   r   r   <module>   s   