U Ad@@sddlZddlZddlmZd4ddZd5ddZd6d d Zd7d dZddZ ddZ ddZ ddZ ddZ d8ddZd9ddZd:ddZd;d!d"Zdd-d.Zd/d0Zd?d2d3ZdS)@N) functionalcCsVt|ddd|f}t|dD](}||}||}||||f||<q(|SNrtorch zeros_likerangesizexids_str segment_sizeretiidx_stridx_endrAC:\Green_Program_Files\So-VITS-SVC-Shengshuyan\modules\commons.pyslice_pitch_segmentss rc Csl|\}}}|dkr|}||d}t|gj|jd|jtjd}t|||} t|||} | | |fSNdevicedtype)r rrandtorlongslice_segmentsr) r pitch x_lengthsr bdt ids_str_maxr rZ ret_pitchrrrrand_slice_segments_with_pitchs $  r%{Gz?cCsX|jj}d|kr6|jjj|||jjj||n|ddkrT|jj||dS)NZDepthwise_SeparableConv) __class____name__Z depth_convweightdatanormal_Z point_convfind)mmeanstd classnamerrr init_weightss r4rcCst|||dS)N)int) kernel_sizedilationrrr get_padding!sr9cCs |ddd}dd|D}|S)Nr)cSsg|]}|D]}|q qSrr).0sublistitemrrr 'sz%convert_pad_shape..r) pad_shapelrrrconvert_pad_shape%sr@cCs(|gt|dd}||ddd<|S)Nr5r)len)lstr<resultrrr intersperse+srDcCs@||d}|dtd|||dtd|7}|S)zKL(P||Q)g?g@r5g)rexp)m_plogs_pm_qlogs_qklrrr kl_divergence1s 0rKcCs&t|dd}tt|  S)z)rrlog)shapeZuniform_samplesrrr rand_gumbel8srNcCst|j|j|jd}|SNrr)rNr rrr)r grrrrand_gumbel_like>srRcCsbt|ddddd|f}t|dD].}||}||}||dd||f||<q.|Srrr rrrrCs  rc Cs^|\}}}|dkr|}||d}t|gj|jd|jtjd}t|||}||fSrr rrrrrr r r r r!r"r#r$r rrrrrand_slice_segmentsLs $ rUc CsZ|\}}}|dkr|}||}t|gj|jd|jtjd}t|||}||fS)NrrrSrTrrrrand_spec_segmentsVs$ rV?@c Cstj|tjd}|d}tt|t||d}|ttj|tjd| }|d|d}tt|t |gd} t | ddd|dg} | d||} | S)Nrr5rr) rarangefloatmathrLrE unsqueezecatsincosFpadview) lengthchannels min_timescale max_timescalepositionZnum_timescalesZlog_timescale_incrementZinv_timescalesZ scaled_timesignalrrrget_timing_signal_1d`sricCs2|\}}}t||||}||j|j|jdSrO)r rirrr)r rerfr!rdrcrhrrradd_timing_signal_1dpsrjcCs:|\}}}t||||}t||j|j|jdg|SrO)r rirr]rrr)r rerfaxisr!rdrcrhrrrcat_timing_signal_1dvsrlcCs"tt||dd}|Sr)rtrilonesr\)rcmaskrrrsubsequent_mask|srpcCs\|d}||}t|ddd|ddf}t|dd|dddf}||}|Sr)rtanhsigmoid)input_ainput_b n_channelsZn_channels_intZin_actZt_actZs_actZactsrrrfused_add_tanh_sigmoid_multiplys   rvcCs<t|tddgddgddggddddddf}|S)Nrrr))r`rar@)r rrrshift_1ds8rwcCs8|dkr|}tj||j|jd}|d|dkS)NrPrr)maxrrYrrr\)rc max_lengthr rrr sequence_masksrzc Cs|j\}}}}t|d}|||}t|||j}||||}|t|t ddgddgddggddddf}| d dd|}|S)z4 duration: [b, 1, t_x] mask: [b, 1, t_y, t_x] r)rrNr5) rMrcumsumrbrzrrr`rar@r\ transpose) durationror!_t_yt_xZ cum_durationZcum_duration_flatpathrrr generate_paths 6rr5cCst|tjr|g}ttdd|}t|}|dk r}|jj|}|| |7}|dk rD|jjj | |dqD|d|}|S)NcSs |jdk S)N)grad)prrrz"clip_grad_value_..r)minrxrW) isinstancerTensorlistfilterrZrr-normr<clamp_) parameters clip_value norm_type total_normrZ param_normrrrclip_grad_value_s  r)r)Nr)r&r')r)r)Nr)Nr)rWrX)rWrX)rWrXr)N)r5)r[rtorch.nnrr`rr%r4r9r@rDrKrNrRrrUrVrirjrlrpjitscriptrvrwrzrrrrrrs4