Ë
    ÿÍ:jÔ  ã                   ó   — d dl mZ 	 ddefd„Z	 	 	 	 ddedee   dee   dee   d	ee   defd
„Z	 dd„Z	 	 	 	 ddedee   dee   dee   d	ee   defd„Z	 ddefd„Z	 	 	 	 ddedee   dee   dee   d	ee   defd„Zy)é    )ÚListÚreturnc                 ó6   — d| d|z  z   ||dz
  z  z
  dz
  |z  z   S )aô  Compute expected number of frames after 1D convolution

    Parameters
    ----------
    num_samples : int
        Number of samples in the input signal
    kernel_size : int
        Kernel size
    stride : int
        Stride
    padding : int
        Padding
    dilation : int
        Dilation

    Returns
    -------
    num_frames : int
        Number of frames in the output signal

    Source
    ------
    https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html#torch.nn.Conv1d
    é   é   © )Únum_samplesÚkernel_sizeÚstrideÚpaddingÚdilations        úy/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/pyannote/audio/utils/receptive_field.pyÚconv1d_num_framesr      s1   € ð6 �˜a '™kÑ)¨H¸Àa¹Ñ,HÑHÈ1ÑLÐQWÑWÑWÐWó    Nr	   r
   r   r   r   c                 óZ   — | }t        ||||«      D ]  \  }}}}	t        |||||	¬«      }Œ |S )N)r
   r   r   r   )Úzipr   )
r	   r
   r   r   r   Ú
num_framesÚkÚsÚpÚds
             r   Úmulti_conv_num_framesr   8   sH   € ð €JÜ˜+ v¨w¸ÓAò 
‰
ˆˆ1ˆa�Ü&Ø A¨a¸ÀQô
‰
ð
ð
 Ðr   c                 ó:   — d|dz
  |z  z   }|| dz
  |z  z   d|z  z
  S )ae  Compute size of receptive field

    Parameters
    ----------
    num_frames : int, optional
        Number of frames in the output signal
    kernel_size : int
        Kernel size
    stride : int
        Stride
    padding : int
        Padding
    dilation : int
        Dilation

    Returns
    -------
    size : int
        Receptive field size
    r   r   r   )r   r
   r   r   r   Úeffective_kernel_sizes         r   Úconv1d_receptive_field_sizer   H   s5   € ð0  ¨q¡°HÑ <Ñ<ÐØ  J°¡N°fÑ#<Ñ<¸qÀ7¹{ÑJÐJr   r   c           
      ó~   — | }t        t        t        ||||«      «      «      D ]  \  }}}}	t        |||||	¬«      }Œ |S )N)r   r
   r   r   r   )ÚreversedÚlistr   r   )
r   r
   r   r   r   Úreceptive_field_sizer   r   r   r   s
             r   Úmulti_conv_receptive_field_sizer    d   sX   € ð &Ðäœt¤C¨°V¸WÀhÓ$OÓPÓQò 
‰
ˆˆ1ˆa�Ü:Ø+ØØØØô 
Ñð
ð  Ðr   c                 ó:   — d|dz
  |z  z   }| |z  |dz
  dz  z   |z
  S )aK  Compute center of receptive field

    Parameters
    ----------
    frame : int
        Frame index
    kernel_size : int
        Kernel size
    stride : int
        Stride
    padding : int
        Padding
    dilation : int
        Dilation

    Returns
    -------
    center : int
        Index of receptive field center
    r   r   r   )Úframer
   r   r   r   r   s         r   Úconv1d_receptive_field_centerr#   x   s7   € ð0  ¨q¡°HÑ <Ñ<ÐØ�6‰>Ð2°QÑ6¸1Ñ<Ñ<¸wÑFÐFr   r"   c           
      ó~   — | }t        t        t        ||||«      «      «      D ]  \  }}}}	t        |||||	¬«      }Œ |S )N)r"   r
   r   r   r   )r   r   r   r#   )
r"   r
   r   r   r   Úreceptive_field_centerr   r   r   r   s
             r   Ú!multi_conv_receptive_field_centerr&   ”   sX   € ð #ÐÜœt¤C¨°V¸WÀhÓ$OÓPÓQò 
‰
ˆˆ1ˆa�Ü!>Ø(ØØØØô"
Ñð
ð "Ð!r   )é   r   r   r   )NNNN)r   r'   r   r   r   )r   r'   r   r   r   )	Útypingr   Úintr   r   r   r    r#   r&   r   r   r   ú<module>r*      sR  ðõ. ð ?@ñXàóXð@ "ØØØñØðà�c‘ðð �‰Iðð �#‰Yð	ð
 �3‰iðð 	óð" @AóKð< "ØØØñ Øð à�c‘ð ð �‰Ið ð �#‰Yð	 ð
 �3‰ið ð 	ó ð* ;<ñGàóGð< "ØØØñ"Øð"à�c‘ð"ð �‰Ið"ð �#‰Yð	"ð
 �3‰ið"ð 	ô"r   