§
    Û×j×7  ã            	       ó¾   — d Z ddlZddlZddlZddlZddlmZ ddlZddlZ	ddl
mZ dZ ej        d¦  «        Zdddd	d
ddddœd„Zd\  ZZdddddddœd„Zdddœd„ZdS )zCStreaming CPU measurements and bounded previews of an audio stream.é    N)ÚPath)Ú_get_ffmpeg_pathéX  z7\bt:\s*([\d.]+)\s+TARGET:.*?\bM:\s*(-?[\d.]+|-?inf|nan)é   ç        g      IÀgš™™™™™É?g      $@)Úaudio_track_noÚ
start_timeÚdurationÚ
silence_dbÚmin_silenceÚpreview_pathÚpreview_secondsÚwindow_sc                ó  ‡‡‡-‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7‡8— ‰|‰|g|€g n|g¢|€g n|g¢}	t          d„ |	D ¦   «         ¦  «        r‰dk     s|�|dk    rt          d¦  «        ‚d|cxk    rdk    r*n n'‰dk    s!d|cxk     rdk    rn n|�d|cxk    rdk    sn t          d¦  «        ‚t          ¦   «         }
t          j        t          | ¦  «        ¦  «        }d	„ |                     d
g ¦  «        D ¦   «         }d|cxk    rt          |¦  «        k    s"n t          dt          |¦  «        › d�¦  «        ‚||dz
           }t          |d         ¦  «        t          |d         ¦  «        }}|                     di ¦  «        }t          dt          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        z
  ¦  «        }|                     d¦  «        dvrt          |d         ¦  «        nd }|�‰|z   nd }|�|�t          |||z   ¦  «        n||z   }t          ‰|¦  «        Š|�|‰z
  nd }|�|dk    rt          d¦  «        ‚|
ddddddt          ‰¦  «        dt          | ¦  «        dd|dz
  › �dg}|�|d t          |¦  «        gz  }t          dt          |d!z  ¦  «        ¦  «        }|�(|�&||z  t          k    rt          d"t          › d#�¦  «        ‚t          j        |¦  «        t          j        |¦  «        t          j        |t          j        ¬$¦  «        cŠ4Š7Š-i Š/dd ddg f\  Š0Š5Š6Š1Š2ˆ1ˆ2ˆˆ5ˆ6ˆfd%„}|�d&t          ||z  ¦  «        › �gng d'|�d(nd)› �gz   }t#          j        ¦   «         5 }t'          j        |d*d+                     |¦  «        d,d-d.d/d0gz   t&          j        |¬1¦  «        }	 |j                             ||z  d2z  ¦  «        x}�rMt          j        |d3¬$¦  «                             d4|¦  «                             t          j        ¦  «        }t          j        |¦  «                              ¦   «         st          d5¦  «        ‚t          j        |¦  «        }t          j        ‰4| 	                    d¬6¦  «        ¦  «        Š4‰7t          j         |¦  «         !                    d¬6¦  «        z  Š7‰-|d7k     !                    d¬6¦  «        z  Š-t          j"        t          j         |¦  «         #                    ¦   «         ¦  «        d8|d9z  z  k    }|�¹‰/ $                    t          ‰0|z  |z  ¦  «        g d:¢¦  «        }|dxx         t          t          j         |¦  «         !                    ¦   «         ¦  «        z  cc<   |dxx         |j%        z  cc<   t          |d;         t          | 	                    ¦   «         ¦  «        ¦  «        |d;<   |r‰5€‰0|z  Š5n|s |‰0|z  ¦  «         ‰0t          |¦  «        z  Š0|j                             ||z  d2z  ¦  «        x}�°M| &                    ¦   «         }|j         '                    ¦   «          | (                    ¦   «         €(| )                    ¦   «          | &                    ¦   «          n[# |j         '                    ¦   «          | (                    ¦   «         €)| )                    ¦   «          | &                    ¦   «          w w xY w| *                    d¦  «         |                     ¦   «          +                    d<d=¬>¦  «        } |rt          d?| d@d …         › �¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   ‰0st          d¦  «        ‚ |‰0|z  ¦  «         dA„ Š.|  ,                    dBd¦  «        d4         }!t[          j.        dC|!¦  «        }"t[          j.        dD|!¦  «        }#dE„ }$dF||||                     dG¦  «        |                     d¦  «        dvrt          |d         ¦  «        nd ||‰‰‰0|z  z   ‰0|z  ‰0dHœˆ-ˆ.ˆ0ˆ4ˆ7fdI„t_          |¦  «        D ¦   «         dJ |$|"¦  «         |$|#¦  «        dKœ|||z  ‰‰6‰1‰2‰1t          ‰2¦  «        k    dLœdMdNœ}% |$|#¦  «        pdOd4k    sta          ‰-¦  «        rdP|%dQ<   |rót          |‰0|z  ¦  «        }&| 1                    ¦   «         }'|�
|'d dR…         }'t'          j2        |'d t          |&¦  «        dSdTdUdVdWdXdYt          |¦  «        g
z   dZ¬[¦  «        }(|(j3        rSti          |¦  «         5                    dZ¬\¦  «         t          |(j6         +                    d=¬>¦  «        d@d …         ¦  «        ‚|% 7                    t          |¦  «        ‰|&d]d;d^œ¬_¦  «         |��nt          ‰/¦  «        t          k    rt          d"t          › d#�¦  «        ‚i Š3tp           9                    | ¦  «        D ]«\  })Š8tu          j        t          ‰8¦  «        x}*¦  «        rƒ|*d`k    r}t          t          t          t          |)¦  «        daz
  d¦  «        |z  ¦  «        t          ‰/¦  «        ¦  «        }+t          ‰3                     |+tt          j;         ¦  «        |*¦  «        ‰3|+<   Œ¬ˆ/fdb„t_          t          ‰/¦  «        dz   ¦  «        D ¦   «         },|‰ˆ.ˆ8fdc„|,D ¦   «         ˆ.ˆ8fdd„|,D ¦   «         ˆ3fde„t_          t          |,¦  «        ¦  «        D ¦   «         dfœ|%dg<   |%S )hNc              3   ó>   K  — | ]}t          j        |¦  «        V — Œd S )N)ÚmathÚisfinite)Ú.0Úvalues     úEC:\Users\johnn\OneDrive\Documents\AI\shared\deepy\audio_inspection.pyú	<genexpr>z inspect_audio.<locals>.<genexpr>   s,   è è € Ð9Ð9¨�tŒ}˜UÑ#Ô#Ð9Ð9Ð9Ð9Ð9Ð9ó    r   zLTimes must be finite; start_time must be non-negative and duration positive.iˆÿÿÿé   gš™™™™™¹?r   zhsilence_db must be -120..0, min_silence positive, preview_seconds in (0, 30] and window_s in [0.1, 600].c                 óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS )Ú
codec_typeÚaudio©Úget)r   Ústreams     r   ú
<listcomp>z!inspect_audio.<locals>.<listcomp>   s/   € ÐdÐdÐd˜&ÀÇ
Â
È<Ñ@XÔ@XÐ\cÒ@cÐ@cˆvÐ@cÐ@cÐ@cr   Ústreamsr   zDaudio_track_no must select an available 1-based audio stream (found z).Úsample_rateÚchannelsÚformatr   r	   r
   )NzN/Az-The selected audio range contains no samples.ú-nostdinú-hide_bannerz-nostatsz-threadsÚ1ú-ssú-iz-mapz0:a:ú-vnú-tg{®Gáz”?zwindow_s gives more than zE windows for this range; use a larger window_s or a shorter duration.©Údtypec                 óž   •— ‰�G| ‰z
  ‰k    r>‰| ‰z
  z  Š‰dz  Št          ‰¦  «        dk     r‰                     ‰‰z   ‰| z   dœ¦  «         d Šd S )Nr   éÈ   )ÚstartÚend)ÚlenÚappend)r1   Úinterval_countÚ	intervalsr   Úsilence_startÚsilent_secondsr	   s    €€€€€€r   Úend_silencez"inspect_audio.<locals>.end_silence5   sr   ø€ àÐ$¨¨}Ñ)<ÀÒ)KÐ)KØ˜c MÑ1Ñ1ˆNØ˜aÑˆNÝ�9‰~Œ~ Ò#Ð#Ø× Ò ¨:¸Ñ+EÈjÐ[^ÑN^Ð!_Ð!_Ñ`Ô`Ð`Øˆˆˆr   zatrim=end_sample=zebur128=peak=true:framelog=ÚinfoÚverboseú-afú,ú-fÚf32lez-acodecÚ	pcm_f32leúpipe:1)ÚstdoutÚstderré   ú<f4éÿÿÿÿz*Decoded audio contains non-finite samples.©Úaxisg      ð?é
   é   )r   r   r   é   zutf-8Úreplace©ÚerrorsúAudio decoding failed: é$úÿÿc                 ó\   — | dk    r%t          dt          j        | ¦  «        z  d¦  «        nd S )Nr   rI   rJ   )Úroundr   Úlog10)r   s    r   Údbzinspect_audio.<locals>.dbc   s.   € Ø38¸1²9°9�u�R�$œ* UÑ+Ô+Ñ+¨QÑ/Ô/Ð/À$ÐFr   zSummary:z\bI:\s*([-+\w.]+)\s*LUFSzPeak:\s*([-+\w.]+)\s*dBFSc                 óh   — | rt          | d         ¦  «        nd }|�t          j        |¦  «        r|nd S ©Nr   )Úfloatr   r   )Úmatchr   s     r   Úmeasuredzinspect_audio.<locals>.measuredj   s8   € Ø#(Ð2•�e˜A”h‘”�¨dˆØÐ)­d¬m¸EÑ.BÔ.BÐ)ˆuˆuÈÐLr   ÚdoneÚchannel_layout)r	   Úend_timeÚduration_secondsÚsamples_per_channelc           
      ó°   •— g | ]R}|d z    ‰‰|         ¦  «         ‰t          j        ‰|         ‰z  ¦  «        ¦  «        t          ‰|         ¦  «        dœ‘ŒSS )r   )ÚchannelÚ	peak_dbfsÚrms_dbfsÚfull_scale_samples)r   ÚsqrtÚint)r   ÚindexÚclippedrS   ÚframesÚpeakÚsquaress     €€€€€r   r    z!inspect_audio.<locals>.<listcomp>r   s·   ø€ ð  Pð  Pð  Pð  w|¨%°!©)À"À"ÀTÈ%Ä[Á/Ä/Ð_aÐ_aÕbfÔbkÐlsÐtyÔlzð  ~Dñ  mDñ  cEô  cEñ  `Fô  `Fõ  ^að  bið  joô  bpñ  ^qô  ^qð  rð  rð  Pð  Pð  Pr   zFFmpeg EBU R128)ÚmethodÚintegrated_lufsÚtrue_peak_dbfs)Úthreshold_dbfsÚwindow_secondsÚminimum_secondsr\   r4   r5   Ú	truncatedz®Times are relative to the source file. Silence: all-channel RMS below the threshold in 20 ms windows. Full-scale samples suggest possible clipping. Null dBFS: zero amplitude.)Ústatusr   r"   r#   rZ   Úsource_duration_secondsÚaudio_start_time_secondsÚaudio_duration_secondsÚcoverageÚper_channelÚloudnessÚsilenceÚnoteiœÿÿÿz±Peaks are above -1 dBTP: remux_media with mode "mix" and this one file (optionally normalize_lufs) masters it below the ceiling with its true-peak limiter, without regenerating.Úfixéþÿÿÿú-acÚ2ú-arÚ24000z-c:aÚ	pcm_s16lez-yT©Úcapture_output)Ú
missing_okiÀ]  )r	   r\   r"   r#   )Úoutput_fileÚpreviewiºÿÿÿgš™™™™™©?c                 ó    •— g | ]
}‰|         ‘ŒS © r‡   )r   re   Úenvelopes     €r   r    z!inspect_audio.<locals>.<listcomp>�   s   ø€ ÐIÐIÐI u�8˜E”?ÐIÐIÐIr   c                 ó€   •— g | ]:\  }}} ‰t          j        ||z  ¦  «        ¦  «        xŠ€d nt          ‰d¦  «        ‘Œ;S rU   )r   rc   rQ   )r   ÚtotalÚcountÚ_rS   r   s       €€r   r    z!inspect_audio.<locals>.<listcomp>Ž   s¼   ø€ ð  XEð  XEð  XEñ  jyð  joð  qvð  xyÐjlÐjlÕmqÔmvÐw|ð  @Eñ  xEñ  nFô  nFñ  kGô  kGð  bGÐafð  aPÐX\ÐX\õ  V[ð  \að  cdñ  Veô  Veð  XEð  XEð  XEr   c                 óV   •— g | ]%\  }}} ‰|¦  «        xŠ€d nt          ‰d¦  «        ‘Œ&S rU   )rQ   )r   rŒ   ÚtoprS   r   s      €€r   r    z!inspect_audio.<locals>.<listcomp>�   sF   ø€ Ð+}Ð+}Ð+}ÑhqÐhiÐklÐnq¸b¸bÀ¹g¼gÐ5E°UÐ4N¨D¨DÕTYÐZ_ÐabÑTcÔTcÐ+}Ð+}Ð+}r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r‡   r   )r   re   Ú	momentarys     €r   r    z!inspect_audio.<locals>.<listcomp>�   s^   ø€ ð  VMð  VMð  VMð  puð  W`÷  Wdò  Wdð  ejñ  Wkô  Wkð  VMð  VMð  VMr   )r   Ústart_sra   r`   Úmomentary_max_lufsrˆ   )<ÚallÚ
ValueErrorr   ÚffmpegÚprobeÚstrr   r2   rd   ÚmaxrV   ÚminrQ   ÚMAX_ENVELOPE_WINDOWSÚnpÚzerosÚint64ÚtempfileÚTemporaryFileÚ
subprocessÚPopenÚjoinÚPIPErA   ÚreadÚ
frombufferÚreshapeÚastypeÚfloat64r   ÚabsÚmaximumÚsquareÚsumrc   ÚmeanÚ
setdefaultÚsizeÚwaitÚcloseÚpollÚkillÚseekÚdecodeÚrsplitÚreÚsearchÚrangeÚanyÚcopyÚrunÚ
returncoder   ÚunlinkrB   ÚupdateÚ
_FRAME_LOGÚfindallr   Úinf)9Úpathr   r	   r
   r   r   r   r   r   ÚnumbersÚbinaryr–   r!   r   Úrater#   Ú	containerÚaudio_startÚaudio_durationr[   ÚcommandÚwindowr8   ÚfiltersÚlogÚprocessÚdataÚsamplesÚabsoluteÚquietÚbucketÚcodeÚdiagnosticsÚsummaryÚ
integratedÚ	true_peakrX   ÚresultÚsecondsr…   Ú	completedÚ	time_textrw   re   Úwindowsrf   rS   rˆ   rg   r4   r5   r�   rh   r6   r7   ri   r   s9     `  `                                       @@@@@@@@@@@@r   Úinspect_audiorÞ      sÊ  øøøøøøøøøøøøøø€ Ø˜: {°Oð  [ÈXÐM]ÀrÀrÐdlÐcmð  [ð  yAð  yIÐrtÐrtð  PXð  OYð  [€GÝÐ9Ð9°Ð9Ñ9Ô9Ñ9Ô9ð i¸ZÈ!º^¸^ÈxÐOcÐhpÐtuÒhuÐhuÝÐgÑhÔhÐhØ�:Ð"Ð"Ò"Ð" Ò"Ð"Ð"Ð"Ð" k°QÒ&6Ð&6¸aÀ/Ð>WÐ>WÒ>WÐ>WÐUWÒ>WÐ>WÐ>WÐ>WÐ>WÐ[cÐ[oÐx{ð  @Hð  yOð  yOò  yOð  yOð  LOò  yOð  yOð  yOð  yOÝð  Dñ  Eô  Eð  	EÝÑÔ€FÝŒL�˜T™œÑ#Ô#€EØdÐd E§I¢I¨i¸Ñ$<Ô$<ÐdÑdÔd€GØ�Ð.Ð.Ò.Ð.¥# g¡,¤,Ò.Ð.Ð.Ð.ÝÐpÕ`cÐdkÑ`lÔ`lÐpÐpÐpÑqÔqÐqØ�^ aÑ'Ô(€FÝ˜ Ô.Ñ/Ô/µ°V¸JÔ5GÑ1HÔ1Hˆ(€DØ—	’	˜( BÑ'Ô'€IÝ�c�5 §¢¨L¸!Ñ!<Ô!<Ñ=Ô=ÅÀiÇmÂmÐT`ÐbcÑFdÔFdÑ@eÔ@eÑeÑfÔf€KØ28·*²*¸ZÑ2HÔ2HÐP]Ð2]Ð2]•U˜6 *Ô-Ñ.Ô.Ð.Ðcg€NØ(0Ð(<ˆz˜HÑ$Ð$À$€HØÐ!ØBJÐBV•3�x ¨~Ñ!=Ñ>Ô>Ð>Ð\gÐjxÑ\xˆÝ�Z Ñ-Ô-€JØ(0Ð(<ˆx˜*Ñ$Ð$À$€HØÐ ¨A¢ ÝÐHÑIÔIÐIØ�z >°:¸zÈ3ÐPUÕWZÐ[eÑWfÔWfÐhlÕnqÐrvÑnwÔnwÐyð  B]ð  IWð  Z[ñ  I[ð  B]ð  B]ð  _dð  e€GØÐØ�D�#˜h™-œ-Ð(Ñ(ˆÝ�•E˜$ ™+Ñ&Ô&Ñ'Ô'€FØÐ Ð 4¸ÀHÑ9LÕOcÒ9cÐ9cÝð  QÕ5Ið  Qð  Qð  Qñ  Rô  Rð  	RÝœX hÑ/Ô/µ´¸(Ñ1CÔ1CÅRÄXÈhÕ^`Ô^fÐEgÑEgÔEgÐ€Dˆ'�7Ø€HØGHÈ$ÐPSÐUVÐXZÐGZÑD€FˆM˜>¨>¸9ðð ð ð ð ð ð ð ð ð ð BJÐAUÐ<¥E¨(°T©/Ñ$:Ô$:Ð<Ð<Ð=Ð=Ð[]ð  cpð  KSð  K_ð  AGð  AGð  enð  cpð  cpð  bqñ  q€GÝ	Ô	Ñ	!Ô	!ð N SÝÔ" 7¨e°S·X²X¸gÑ5FÔ5FÈÈgÐW`ÐbmÐowÐ-xÑ#xõ  BLô  BQð  Z]ð  ^ñ  ^ô  ^ˆð	Ø!œ.×-Ò-¨f°xÑ.?À!Ñ.CÑDÔDÐD�$ñ 'Ýœ-¨°EÐ:Ñ:Ô:×BÒBÀ2ÀxÑPÔP×WÒWÕXZÔXbÑcÔc�Ý”{ 7Ñ+Ô+×/Ò/Ñ1Ô1ð SÝ$Ð%QÑRÔRÐRÝœ6 '™?œ?�Ý”z $¨¯ª¸!¨Ñ(<Ô(<Ñ=Ô=�Ø�2œ9 WÑ-Ô-×1Ò1°qÐ1Ñ9Ô9Ñ9�Ø˜H¨šO×0Ò0°aÐ0Ñ8Ô8Ñ8�Ýœ¥¤	¨'Ñ 2Ô 2× 7Ò 7Ñ 9Ô 9Ñ:Ô:¸bÀZÐRTÁ_Ñ>UÒU�ØÐ'Ø%×0Ò0µ°V¸d±]ÀXÑ5MÑ1NÔ1NÐP]ÐP]ÐP]Ñ^Ô^�FØ˜1�I�I”I¥¥r¤y°Ñ'9Ô'9×'=Ò'=Ñ'?Ô'?Ñ!@Ô!@Ñ@�I�I‘IÀ&ÈÀ)À)Ä)ÈwÌ|ÑB[À)À)Á)ÕilÐmsÐtuÔmvÕx}ð  G÷  Kò  Kñ  Mô  Mñ  yNô  yNñ  jOô  jOÐ]cÐdeÑ]fØð /˜]Ð2Ø$*¨T¡M�M�MØð /Ø�K ¨¡Ñ.Ô.Ð.Ø�#˜g™,œ,Ñ&�ð! "œ.×-Ò-¨f°xÑ.?À!Ñ.CÑDÔDÐD�$ñ 'ð" —<’<‘>”>ˆDàŒN× Ò Ñ"Ô"Ð"Ø�|Š|‰~Œ~Ð%Ø—’‘”�Ø—’‘”�øøð ŒN× Ò Ñ"Ô"Ð"Ø�|Š|‰~Œ~Ð%Ø—’‘”�Ø—’‘”��ð &øøøð 	�Š�‰ŒˆØ—h’h‘j”j×'Ò'¨¸	Ð'ÑBÔBˆØð 	NÝÐL°{À5À6À6Ô7JÐLÐLÑMÔMÐMð	Nð9Nð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð< ð JÝÐHÑIÔIÐIØ€K�˜‘ÑÔÐðGð Gð Gð × Ò  ¨QÑ/Ô/°Ô3€GÝ”Ð6¸Ñ@Ô@€JÝ”	Ð6¸Ñ@Ô@€IðMð Mð Mð °.ÐQUÐckØ &§
¢
Ð+;Ñ <Ô <ð  zC÷  zGò  zGð  HRñ  zSô  zSð  [hð  zhð  zhÕY^Ð_hÐisÔ_tÑYuÔYuÐYuð  nrØ*5ÐQ_Ø)3ÀÈfÐW[ÉmÑA[ÐqwÐz~Ñq~ð  X^ð  _ð  _ð Pð  Pð  Pð  Pð  Pð  Pð  Pð  Põ  @Eð  FNñ  @Oô  @Oð  Pñ  Pô  PØ%6È8È8ÐT^ÑK_ÔK_Ðs{Ðs{ð  }Fñ  tGô  tGð  Hð  HØ,6È&ÐSWÉ-ÐlwØ.<ÐP^Ðmvð  FTõ  WZð  [dñ  Weô  Weò  Feðfð fð GðHð H€Fð 	ˆ�ÑÔÐ#˜t rÒ)Ð)­S°©\¬\Ð)ð Nˆˆu‰Øð 
[Ý�o v°¡}Ñ5Ô5ˆà—,’,‘.”.ˆØÐØ˜c˜r˜c”lˆGÝ”N 7¨dµC¸±L´LÀ%ÈÈeÐU\Ð^dÐfqÐswÕy|ð  ~Jñ  zKô  zKð  .Lñ  $Lð  ]að  bñ  bô  bˆ	ØÔð 	PÝ�ÑÔ×%Ò%°Ð%Ñ6Ô6Ð6Ý˜YÔ-×4Ò4¸IÐ4ÑFÔFÀuÀvÀvÔNÑOÔOÐOØ�Š¥# lÑ"3Ô"3ÈJÐlsð  EJð  XYð  >Zð  >Zˆñ  	[ô  	[ð  	[ØÑÝˆx‰=Œ=Õ/Ò/Ð/Ýð  UÕ9Mð  Uð  Uð  Uñ  Vô  Vð  Vàˆ	Ý *× 2Ò 2°;Ñ ?Ô ?ð 	Rð 	RÑˆI�uÝŒ}­¨u©¬Ð5˜XÑ6Ô6ð R¸8Àcº>¸>Ý�C¥¥E¨)Ñ$4Ô$4°tÑ$;¸QÑ ?Ô ?À(Ñ JÑKÔKÍSÐQYÉ]Ì]Ñ[Ô[�Ý#& y§}¢}°U½T¼X¸IÑ'FÔ'FÈÑ#QÔ#Q�	˜%Ñ øØIÐIÐIÐIµµc¸(±m´mÀaÑ6GÑ0HÔ0HÐIÑIÔIˆØ*2¸zð  XEð  XEð  XEð  XEð  XEð  }Dð  XEñ  XEô  XEØ+}Ð+}Ð+}Ð+}Ð+}Ðu|Ð+}Ñ+}Ô+}ð  VMð  VMð  VMð  VMõ  y~õ  Bð  CJñ  Kô  Kñ  yLô  yLð  VMñ  VMô  VMðNð NˆˆzÑà€Ms.   Í6?]Î6JZØ:A]ÚA[(Û(A]Ý]Ý])i€>  i@  g      "@g¸…ëQ¸®?g333333Ã?)r	   r
   ÚisolatedÚ	margin_dbÚ
min_speechÚmin_gapc                ó<  ‡‡— t          ¦   «         dddddt          |¦  «        dt          | ¦  «        g	|rdt          |¦  «        gng ¢d‘d	‘d
‘d‘d‘d‘t          t          ¦  «        ‘d‘d‘d‘}t          j        |d¬¦  «        }|j        r3t          d|j                             d¬¦  «        dd…         › �¦  «        ‚t          j
        |j        d¬¦  «        }	|	dt          |	¦  «        t          z  t          z  …                              dt          ¦  «                             t          j        ¦  «        }
t          |
¦  «        sg S dt          j        t          j        |
¦  «                             d¬¦  «        dz   ¦  «        z  Š|€t          j        ‰d¦  «        d k     }|rFt          j        t          ‰¦  «        t-          d!‰                     ¦   «         d"z
  ¦  «        ¦  «        }nld#}ˆfd$„t/          d%t          ‰¦  «        |¦  «        D ¦   «         }t          j        t          j        ||¦  «        dt          ‰¦  «        …         |z   d!¦  «        }t          j        d&g‰|k    d&gg¦  «        }t          j        |dd…         |dd…         k    ¦  «        t          z  t          z  }g }t9          |ddd'…         |ddd'…         ¦  «        D ]?\  }}|r!||d         d         z
  |k     r||d         d<   Œ(|                     ||g¦  «         Œ@ˆfd(„|D ¦   «         S ))a<  Spans of speech as [(start, end)] seconds from start_time, from speech-band (200-4000 Hz) energy in 20 ms windows.
    In a mixture the energy must rise margin_db above the local background, the 10th percentile over the surrounding 10 s, so a
    steady music bed or noise raises the threshold instead of counting as speech. An isolated voice, whose speech may not pause
    for seconds, needs only to stay within 40 dB of its peak; by default a recording with real silence (5% of its windows below
    -60 dBFS) is treated as isolated. Energy below -55 dBFS never counts.r%   r&   ú	-loglevelÚerrorr(   r)   r+   r*   r;   zhighpass=f=200,lowpass=f=4000r|   r'   r~   r=   r>   r@   Tr�   rN   rK   rL   rO   NrD   r,   rE   rH   r   rF   çê-�™—q=é   iÄÿÿÿg     €KÀg      D@é   c           
      ór   •— g | ]3}t          j        ‰t          d |dz
  ¦  «        |dz   …         d¦  «        ‘Œ4S )r   éú   rH   )r›   Ú
percentiler˜   )r   re   Úenergys     €r   r    z$speech_intervals.<locals>.<listcomp>¬   sB   ø€ ÐxÐxÐxÐRW•"”- ¥s¨1¨e°c©kÑ':Ô':¸EÀC¹KÐ'GÔ HÈ"ÑMÔMÐxÐxÐxr   r   FrJ   c                 óœ   •— g | ]H\  }}||z
  ‰k    ¯t          t          |¦  «        d ¦  «        t          t          |¦  «        d ¦  «        f‘ŒIS )é   )rQ   rV   )r   r0   r1   rá   s      €r   r    z$speech_intervals.<locals>.<listcomp>¶   sT   ø€ ÐpÐpÐp¹z¸uÀcÐVYÐ\aÑVaÐeoÒVoÐVo�U•5˜‘<”< Ñ#Ô#¥U­5°©:¬:°qÑ%9Ô%9Ð:ÐVoÐVoÐVor   )r   r—   ÚSPEECH_RATEr    r¼   r½   r”   rB   rµ   r›   r¥   rA   r2   ÚSPEECH_FRAMEr¦   r§   r¨   rR   r«   r­   rë   Úfullr˜   r¹   rª   ÚrepeatÚconcatenateÚflatnonzeroÚzipr3   )rÃ   r	   r
   rß   rà   rá   râ   rÊ   rÛ   rÐ   rg   Ú	thresholdÚblockÚblocksÚactiveÚedgesÚspansr0   r1   rì   s        `             @r   Úspeech_intervalsrü   –   s‡  øø€ õ  Ñ!Ô! :¨~¸{ÈGÐUZÕ\_Ð`jÑ\kÔ\kÐmqÕsvÐw{Ñs|Ôs|ð |ð  Zbð  Ajð  BFõ  HKð  LTñ  HUô  HUð  AVð  AVð  hjð |Øð|Øð|Ø<ð|Ø>Cð|ØEHð|ØJOð|ÝQTÕU`ÑQaÔQað|Øcgð|Øipð|Ørzð|€Gå”˜w°tÐ<Ñ<Ô<€IØÔð hÝÐf°9Ô3C×3JÒ3JÐR[Ð3JÑ3\Ô3\Ð]bÐ]cÐ]cÔ3dÐfÐfÑgÔgÐgÝŒm˜IÔ,°EÐ:Ñ:Ô:€GØÐB•s˜7‘|”|¥|Ñ3µlÑBÐBÔC×KÒKÈBÕP\Ñ]Ô]×dÒdÕegÔeoÑpÔp€FÝˆv‰;Œ;ð Øˆ	Ø•"”(�2œ9 VÑ,Ô,×1Ò1°qÐ1Ñ9Ô9¸EÑAÑBÔBÑB€FØÐÝ”= ¨Ñ+Ô+¨cÒ1ˆØð [Ý”G�C ™KœK­¨U°F·J²J±L´LÀ4Ñ4GÑ)HÔ)HÑIÔIˆ	ˆ	àˆØxÐxÐxÐxÕ[`ÐabÕdgÐhnÑdoÔdoÐqvÑ[wÔ[wÐxÑxÔxˆÝ”J�rœy¨°Ñ7Ô7¸½#¸f¹+¼+¸ÔFÈÑRÐTYÑZÔZˆ	ÝŒ^˜e˜W f¨yÒ&8¸5¸'ÐBÑCÔC€FÝŒN˜6 ! " "œ:¨°°°¬Ò4Ñ5Ô5½ÑDÅ{ÑR€EØ€EÝ˜%   ! œ* e¨A¨D¨q¨D¤kÑ2Ô2ð 'ð '‰
ˆˆsØð 	'�U˜U 2œY qœ\Ñ)¨GÒ3Ð3ØˆE�"ŒI�a‰LˆLà�LŠL˜% ˜Ñ&Ô&Ð&Ð&ØpÐpÐpÐpÈUÐpÑpÔpÐpr   )r	   r
   c                ó¤  — t          ¦   «         dddddt          |¦  «        dt          | ¦  «        g	|rdt          |¦  «        gng ¢d‘d	‘d
‘d‘d‘d‘t          t          ¦  «        ‘d‘d‘d‘}t          j        |d¬¦  «        }|j        r3t          d|j                             d¬¦  «        dd…         › �¦  «        ‚d}t          j
        |j        d¬¦  «        }|dt          |¦  «        |z  |z  …                              d|¦  «                             t          j        ¦  «        }|dt          j        t          j        |¦  «                             d¬¦  «        dz   ¦  «        z  d k             }t          |¦  «        dk     rdS ||                     dd¬!¦  «        z
  }t          j                             |d"|z  ¦  «        }	t          j                             |	t          j        |	¦  «        z  d"|z  ¦  «        dd…d|…f         }
t          d#z  t          d$z  }}|t          j        |
dd…||…f         d¬¦  «        z   }|
t          j        t          |¦  «        ¦  «        |f         |
dd…d%f         dz   z  }||d&k             }t          |¦  «        dk     rdn6t3          t5          t          j        t          |z  ¦  «        ¦  «        d¦  «        S )'a[  Median fundamental frequency (Hz) of an isolated voice (a vocal stem or speech), from the autocorrelation of its clearly
    voiced 64 ms frames between 70 and 1000 Hz, or None without enough voiced frames: female voices mostly sit above about 165 Hz,
    male ones below. Meaningless on a full mix, whose instruments dominate the autocorrelation.r%   r&   rä   rå   r(   r)   r+   r*   r;   zlowpass=f=1200r|   r'   r~   r=   r>   r@   Tr�   rN   rK   rL   rO   Ni   rD   r,   rE   rH   r   rF   ræ   iØÿÿÿ)rG   ÚkeepdimsrJ   iè  éF   r   g333333ã?)r   r—   rï   r    r¼   r½   r”   rB   rµ   r›   r¥   rA   r2   r¦   r§   r¨   rR   r«   r­   ÚfftÚrfftÚirfftÚconjÚargmaxÚarangerQ   rV   Úmedian)rÃ   r	   r
   rÊ   rÛ   r¯   rÐ   rg   ÚloudÚspectrumÚcorrelationÚlowÚhighÚlagsÚclarityÚvoiceds                   r   Úvoice_pitchr  ¹   s  € õ  Ñ!Ô! :¨~¸{ÈGÐUZÕ\_Ð`jÑ\kÔ\kÐmqÕsvÐw{Ñs|Ôs|ð mð  Zbð  Ajð  BFõ  HKð  LTñ  HUô  HUð  AVð  AVð  hjð mØðmØðmØ-ðmØ/4ðmØ69ðmØ;@ðmÝBEÅkÑBRÔBRðmØTXðmØZaðmØckðm€Gå”˜w°tÐ<Ñ<Ô<€IØÔð hÝÐf°9Ô3C×3JÒ3JÐR[Ð3JÑ3\Ô3\Ð]bÐ]cÐ]cÔ3dÐfÐfÑgÔgÐgØ€DÝŒm˜IÔ,°EÐ:Ñ:Ô:€GØÐ2•s˜7‘|”| tÑ+¨dÑ2Ð2Ô3×;Ò;¸BÀÑEÔE×LÒLÍRÌZÑXÔX€FØ�"•r”x¥¤	¨&Ñ 1Ô 1× 6Ò 6¸AÐ 6Ñ >Ô >ÀÑ FÑGÔGÑGÈ#ÒMÔN€DÝ
ˆ4�y„y�2‚~€~ØˆtØ�$—)’) ¨T�)Ñ2Ô2Ñ2€DÝŒv�{Š{˜4  T¡Ñ*Ô*€HÝ”&—,’,˜x­"¬'°(Ñ*;Ô*;Ñ;¸QÀ¹XÑFÔFÀqÀqÀqÈ%È4È%ÀxÔP€KÝ˜tÑ#¥[°BÑ%6ˆ€CØ•”˜; q q q¨#¨d¨( {Ô3¸!Ð<Ñ<Ô<Ñ<€DØ�"œ)¥C¨¡I¤IÑ.Ô.°Ð4Ô5¸ÀQÀQÀQÈÀTÔ9JÈUÑ9RÑS€GØ�'˜C’-Ô €FÝ�v‘;”; Ò#Ð#ˆ4ˆ4­­uµR´Y½{ÈVÑ?SÑ5TÔ5TÑ/UÔ/UÐWXÑ)YÔ)YÐYr   )Ú__doc__r   r·   r    rž   Úpathlibr   r•   Únumpyr›   Úshared.deepy.video_toolsr   rš   ÚcompilerÀ   rÞ   rï   rð   rü   r  r‡   r   r   ú<module>r     s6  ðà IÐ Ià €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5ð Ð ØˆRŒZÐRÑSÔS€
ð +,¸ÀdÐW\Ðjmð  }Að  SWð  bfð |ð |ð |ð |ð |ð~ 'Ñ €ˆ\ð *-°tÀdÐVYÐfjÐtxð  qð  qð  qð  qð  qðF %(°$ð Zð Zð Zð Zð Zð Zð Zr   