
    6Fi                     x    d dl Zd dlZd dlZd dlmZmZ dZdZ	dZ
dZdZdd	Zd
 ZddZddZd Zd Zd Zd ZdS )    N)buttersosfiltg      0       @i>  d   g&.> }  c                     t          j        | |d          \  }}t          |dz  z  }t          d|dd          }t	          ||          }||fS )NT)srmonor      highpasssos)NWnbtypeoutput)librosaloadHPFr   r   )path	target_sryr	   wnr   s         @D:\xampp\htdocs\new-grp\engine\services\proctor\voice_quality.py	load_monor      sX    L)$777EAr 
S	B
1:e
<
<
<CQAb5L    c                 T    t          j        |          }|                    |           S )N)pylnMeterintegrated_loudness)r   r	   meters      r   integrated_lufsr!      s#    JrNNE$$Q'''r     X        c                    t          j        t          j        | ||                    dz  }t          j        ||          }||k    ||k     z  }	||k    ||k    z  }
||	                                         }||
                                         }|||k    ||k    z                                           t          z   }||z  S )N)n_fft
hop_lengthr   )r	   r'   )npabsr   stftfft_frequenciessumEPS)r   r	   f_lowf_splitf_high	frame_lenhopSfreqslohilo_ehi_etotals                 r   band_energy_ratior;      s    
w|AY3???@@!CA#r;;;E
5.UW_	-B
7
u	/BR599;;DR599;;D5F?3499;;cAE%<r      皙?c                    t          ||z  dz            }t          j                            | ||dz  d          }t	          j        |dz                      d          t          z             }t	          j        ||          }t	          j	        |          }dt	          j
        |t          z   |t          z   z            z  }	t          t	          j        |	dd	                    S )
Ni  r   r   )frame_lengthr(   axis   )r@      i<   )intr   utilframer)   sqrtmeanr.   quantilemedianlog10floatclip)
r   r	   frame_mssilence_quantiler2   framesrmsnoisesignalsnrs
             r   	snr_proxyrU   %   s    BMD())I\	iQRlYZ[[F
'619"""**S0
1
1CK-..EYs^^F
RXv|eck233
3Cc2&&'''r   c                     t          j        | g dg d          }t          j        |g dg d          }d|z  d|z  z   S )N)gQ?皙?ffffff?      ?)        g      ?ffffff?      ?)   
   rB   r<   rY   )r)   interp)hfersnr_db	hfer_partsnr_parts       r   clarity_scorerd   /   sV     	$ 8 8 8:O:O:OPPI	&///3H3H3HIIHy=3x<''r   c                     t          | t          z
            }t          t          j        t          j        |dt          ddgg d          dd                    S )Nr         )r\   r[   rW   rZ   rA   )r*   TARGET_LUFSrL   r)   rM   r_   OK_RANGE)lufsdiffs     r   loudness_scorerl   7   sP    tk!""D4!Xq")=?S?S?STTVWYZ[[\\\r   c                 L    d| z  d|z  z   }|dk     rdS |dk     rdS |dk     rdS dS )	Ng333333?g?rX   poormoderateg?good	excellent )clarityloudss      r   fuse_scoresrv   =   s@    Gc$hA4xx3ww

3ww;r   c           	         t          | t          t          d                    \  }}t          j        t          j        |                    dk     rdd ddS t          ||          }t          ||          }t          ||          }t          ||          }t          |          }t          ||          }g }	|v|t          t          z
  k     r|	                    d|dd	           nH|t          t          z   k    r|	                    d
|dd	           n|	                    d|dd	           |	                    d|d           |	                    d|dd           |t          |d          t          |d          t          |d          t          |d          t          |d          d                    |	          dS )Nr   )r   g-C6?rn   zAudio is near-silent.)ratingrj   notesztoo quiet (z.1fz LUFS)z
too loud (zvolume near target (z	HF ratio z.2fzSNR z dBrA      z; )rx   rj   r`   ra   rd   rl   ry   )r   maxFS_MINr)   r*   r!   r;   rU   rd   rl   rv   rh   ri   appendroundjoin)
r   r   r	   rj   r`   rT   cscorelscorerx   ry   s
             r   judge_audio_qualityr   E   s   dc&%&8&8999EAr	vbfQii4 $9PQQQ1b!!DQ##DQC4%%FD!!F((FE+(((LL7t77778888K(***LL6d66667777LL@@@@@AAA	LL'T'''(((	LL$$$$$%%% dAdAQ--vq))**5!!  r   )r   )r   r"   r#   r$   r%   )r<   r=   )numpyr)   r   
pyloudnormr   scipy.signalr   r   rh   ri   r|   r   r.   r   r!   r;   rU   rd   rl   rv   r   rr   r   r   <module>r      s             ( ( ( ( ( ( ( (		
	 	 	 	( ( (   ( ( ( (( ( (] ] ]  ! ! ! ! !r   