o "e\@sddlZddlZddlmZd/ddZd0dd Zd d Zd d ZddZ ddZ ddZ d1ddZ d2ddZ d3ddZd3ddZd4dd Zd!d"Zejjd#d$Zd%d Zd&d'Zd5d(d)Zd*d+Zd6d-d.ZdS)7N) functional{Gz?cCs.|jj}|ddkr|jj||dSdS)NConv) __class____name__findweightdatanormal_)mmeanstd classnamer/workspace/OpenVoice/commons.py init_weightssrcCst|||dS)N)int) kernel_sizedilationrrr get_padding srcC |ddd}dd|D}|S)NrcSg|] }|D]}|qqSrr.0sublistitemrrr %convert_pad_shape..r pad_shapelayerrrrconvert_pad_shaper&cCs(|gt|dd}||ddd<|S)Nrr)len)lstrresultrrr interspersesr+cCs@||d}|dtd|||dtd|7}|S)zKL(P||Q)g?g@rg)torchexp)m_pZlogs_pZm_qZlogs_qklrrr kl_divergences *r0cCs&t|dd}tt|  S)z)r,randlog)shapeZuniform_samplesrrr rand_gumbel%sr4cCst|j|j|jd}|SNdtypedevice)r4sizetor7r8)xgrrrrand_gumbel_like+sr=cCsbt|ddddd|f}t|dD]}||}||}||dd||f||<q|SNr)r, zeros_likeranger9)r;ids_str segment_sizeretiidx_strZidx_endrrrslice_segments0s rGc Cs^|\}}}|dur |}||d}t|gj|jd|jtjd}t|||}||fS)Nr)r8r7)r9r,r1r:r8longrG) r;Z x_lengthsrCbdtZ ids_str_maxrBrDrrrrand_slice_segments9s $ rM?@c Cstj|tjd}|d}tt|t||d}|ttj|tjd| }|d|d}tt|t |gd} t | ddd|dg} | d||} | S)NrHrrr) r,arangefloatmathr2r- unsqueezecatsincosFpadview) lengthchannels min_timescale max_timescalepositionZnum_timescaleslog_timescale_incrementinv_timescales scaled_timesignalrrrget_timing_signal_1dCsrccCs2|\}}}t||||}||j|j|jdSr5)r9rcr:r7r8)r;r\r]rJr[rZrbrrradd_timing_signal_1dSsrdcCs:|\}}}t||||}t||j|j|jdg|Sr5)r9rcr,rTr:r7r8)r;r\r]axisrJr[rZrbrrrcat_timing_signal_1dYsrfcCs"tt||dd}|Sr?)r,trilonesrS)rZmaskrrrsubsequent_mask_srjcCs\|d}||}t|ddd|ddf}t|dd|dddf}||}|Sr?)r,tanhsigmoid)input_ainput_b n_channelsZn_channels_intZin_actZt_actZs_actZactsrrrfused_add_tanh_sigmoid_multiplyds   rpcCr)NrcSrrrrrrrr pr!r"rr#rrrr&nr'cCs<t|tddgddgddggddddddf}|S)Nrrr)rWrXr&)r;rrrshift_1dts8rqcCs8|dur|}tj||j|jd}|d|dkS)Nr6rr)maxr,rPr7r8rS)rZ max_lengthr;rrr sequence_maskysrtc Cs|j\}}}}t|d}|||}t|||j}||||}|t|t ddgddgddggddddf}| d dd|}|S)z: duration: [b, 1, t_x] mask: [b, 1, t_y, t_x] rrrNr) r3r,cumsumrYrtr:r7rWrXr&rS transpose) durationrirJ_t_yt_xZ cum_durationZcum_duration_flatpathrrr generate_paths 6r}rcCst|tjr |g}ttdd|}t|}|durt|}d}|D]}|jj|}|| |7}|durA|jjj | |dq"|d|}|S)NcSs |jduSN)grad)prrrs z"clip_grad_value_..r)minrrrN) isinstancer,TensorlistfilterrQrr normrclamp_) parameters clip_value norm_type total_normrZ param_normrrrclip_grad_value_s  r)rr)r)r>)Nr>)rNrO)rNrOrr~)r)rRr,torch.nnrrWrrr&r+r0r4r=rGrMrcrdrfrjjitscriptrprqrtr}rrrrrs.