
    Pi                         d dl Z d dlZd dlmZ d dlZddeej                 dede	de	dej        f
d	Z
ddededee         fdZddededefdZdS )    N)List        chunkssr	silence_pcrossfade_preturnc                    | s t          j        g t           j                  S t          |           dk    r| d         S t	          ||z            }t	          ||z            }| d         }t          dt          |                     D ]8}| |         }|dk    r8t          j        |t           j                  }	t          j        ||	|g          }I|dk    rt          t          |          t          |          |          }
|
dk    rt          j	        dd|
t           j                  }t          j	        dd|
t           j                  }||
 d         |z  |d|
         |z  z   }t          j        |d|
          |||
d         g          }
t          j        ||g          }"t          j        ||g          }:|S )z@Join audio chunks with optional silence padding and crossfading.)dtype   r   g      ?r   N)
nparrayfloat32lenintrangezerosconcatenateminlinspace)r   r   r   r   silence_samplescrossfade_samples	final_wavi
next_chunksilenceoverlapfade_outfade_inblendeds                 k/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vieneu_utils/core_utils.pyjoin_audio_chunksr"      s    .x"*----
6{{aay"y.))OB,--q	I1c&kk"" @ @AY
QhbjAAAG	7J'GHHII""#i..#j//;LMMG{{;sC
KKK+c3rzJJJ$gXYY/(:Z=QT[=[[Nixi(wxx(,  		 NIz+BCC		 	:'>??II       text	max_charsc                 .   t          j        d|                                           }g }|D ]}|                                }|st          j        d|          }d}|D ]}|                                }|st          |          |k    r|r|                    |           d}t          j        d|          }|D ]}	|	                                }	|	st          |          dz   t          |	          z   |k    r|r|dz   |	z   n|	}L|r|                    |           |	}t          |          |k    ri|                                }
d}|
D ]N}|r>t          |          dz   t          |          z   |k    r|                    |           |}B|r|dz   |z   n|}O|}B|r?t          |          dz   t          |          z   |k    r|                    |           |}|r|dz   |z   n|}|r|                    |           d}d |D             S )z>
    Split raw text into chunks no longer than max_chars.
    z[\r\n]+u   (?<=[\.\!\?\…])\s+ u   (?<=[\,\;\:\-\–\—])\s+r    c                 ^    g | ]*}|                                 |                                 +S  )strip).0cs     r!   
<listcomp>z*split_text_into_chunks.<locals>.<listcomp>o   s-    999!qwwyy9AGGII999r#   )resplitr,   r   append)r%   r&   
paragraphsfinal_chunkspara	sentencesbuffersentence	sub_partspartwordscurrentwords                r!   split_text_into_chunksr>   .   s   
 *djjll33JL 7 7zz|| 	 H4d;;	! )	O )	OH~~''H  8}}y((   ''///F H%BHMM	% - -D::<<D)6{{QT2i??:@!J&3,"5"5d!><#6#6v#>#>#>!% v;;22$*LLNNE&(G(- Z Z#* !Zs7||a/?#d))/Ki/W/W$0$7$7$@$@$@.2GGHO.Yw}t/C/CUYGG%,F)-.  Oc&kkAoH=	II ''///%FF:@NfslX55hFF  	'''F99|9999r#   Fnamedefaultc                     t          j        |           }||S |                                                                dv S )N)1trueyesyon)osgetenvr,   lower)r?   r@   vs      r!   env_boolrK   q   s7    
	$Ay7799?? ???r#   )r   r   )r$   )F)r0   rG   typingr   numpyr   listndarrayr   floatr"   strr>   boolrK   r+   r#   r!   <module>rS      s    				 				          & &d2:. &C &E &^c &npnx & & & &PA: A: A: A:tCy A: A: A: A:F@ @3 @ @$ @ @ @ @ @ @r#   