Ë
     çi
  ã                   ó$   — d dl mZ  G d„ d«      Zy)é    )Únnc                   ó   — e Zd Zd„ Zdd„Zy)ÚTinySileroVADc                 ó(  — d| _         d| _        d| _        t        | j                   dz  «      dz   | _        t        j                  ddd| j                  dd¬	«      | _        t        j                  d
dddd¬«      | _        t        j                  ddddd¬«      | _	        t        j                  ddddd¬«      | _
        t        j                  ddddd¬«      | _        t        j                  dd«      | _        t        j                  ddd«      | _        y)zâ
        from tinygrad.nn.state import safe_load, load_state_dict

        tiny_model = TinySileroVAD()
        state_dict = safe_load('data/silero_vad_16k.safetensors')
        load_state_dict(tiny_model, state_dict)
        é   é€   é@   é   é   i  r   F)Úkernel_sizeÚstrideÚpaddingÚbiasé�   é   )r   r   r   N)Ún_fftr   ÚpadÚintÚcutoffr   ÚConv1dÚ	stft_convÚconv1Úconv2Úconv3Úconv4ÚLSTMCellÚ	lstm_cellÚ
final_conv)Úselfs    ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/silero_vad/tinygrad_model.pyÚ__init__zTinySileroVAD.__init__   sØ   € ð ˆŒ
ØˆŒØˆŒÜ˜$Ÿ*™*¨™/Ó*¨QÑ.ˆŒäŸ™ 1 c°sÀ4Ç;Á;ÐXYÐ`eÔfˆŒÜ—Y‘Y˜s C°Q¸qÈ!ÔLˆŒ
Ü—Y‘Y˜s B°A¸aÈÔKˆŒ
Ü—Y‘Y˜r 2°1¸QÈÔJˆŒ
Ü—Y‘Y˜r 3°A¸aÈÔKˆŒ
äŸ™ S¨#Ó.ˆŒÜŸ)™) C¨¨AÓ.ˆ�ó    Nc                 ón  — |�
|d   |d   f}|j                  d| j                   fd«      j                  d«      }| j                  |«      }|dd…d| j                  …dd…f   dz  |dd…| j                  d…dd…f   dz  z   j	                  «       }| j                  |«      j                  «       }| j                  |«      j                  «       }| j                  |«      j                  «       }| j                  |«      j                  «       j                  d«      }| j                  ||«      \  }}|j                  d«      }|j                  |d¬«      }|j                  «       }| j                  |«      j                  «       }|j                  d«      j                  d¬«      j                  d«      }||fS )	a»  
        # full audio example:
        import torch
        from tinygrad import Tensor

        wav = read_audio(audio_path, sampling_rate=16000).unsqueeze(0)
        num_samples = 512
        context_size = 64
        context = Tensor(np.zeros((1, context_size))).float()
        outs = []
        state = None
        if wav.shape[1] % num_samples:
            pad_num = num_samples - (wav.shape[1] % num_samples)
            wav = torch.nn.functional.pad(wav, (0, pad_num), 'constant', value=0.0)

        wav = torch.nn.functional.pad(wav, (context_size, 0))

        wav = Tensor(wav.numpy()).float()

        for i in tqdm(range(context_size, wav.shape[1], num_samples)):
            wavs_batch = wav[:, i-context_size:i+num_samples]
            out_chunk, state = tiny_model(wavs_batch, state)
            #outs.append(out_chunk.numpy())
            outs.append(out_chunk)

        predict = outs[0].cat(*outs[1:], dim=1).numpy()
        
        Nr   r   Úreflectr
   éÿÿÿÿ)Údim)Úaxis)r   Ú	unsqueezer   r   Úsqrtr   Úrelur   r   r   Úsqueezer   Ústackr   ÚsigmoidÚmean)r   ÚxÚstateÚhÚcs        r    Ú__call__zTinySileroVAD.__call__   sw  € ð: ÐØ˜1‘X˜u Q™xÐ(ˆEØ�E‰E�1�d—h‘h�- Ó+×5Ñ5°aÓ8ˆØ�N‰N˜1ÓˆØŠq�,�4—;‘;�,¢Ð!Ñ" AÑ%¨ª!¨T¯[©[©\º1Ð*<Ñ(=¸qÑ(@Ñ@×FÑFÓHˆØ�J‰J�q‹M×ÑÓ ˆØ�J‰J�q‹M×ÑÓ ˆØ�J‰J�q‹M×ÑÓ ˆØ�J‰J�q‹M×ÑÓ ×(Ñ(¨Ó,ˆØ�~‰~˜a Ó'‰ˆˆ1Ø�K‰K˜‹OˆØ—‘˜˜q�Ó!ˆØ�F‰F‹HˆØ�O‰O˜AÓ×&Ñ&Ó(ˆØ�I‰I�a‹L×Ñ 1ÐÓ%×/Ñ/°Ó2ˆØ�%ˆxˆr"   )N)Ú__name__Ú
__module__Ú__qualname__r!   r3   © r"   r    r   r      s   „ ò/ô,,r"   r   N)Útinygradr   r   r7   r"   r    Ú<module>r9      s   ðÝ ÷Cò Cr"   