
    (HJj	                         d dl Z d dlmZ d dlmZ d dlZe G d d             Zd Z	d Z
e G d d             Ze G d	 d
             Zy)    N)	dataclassc                       e Zd Zed        Zy)BaseModelArgsc                      | di |j                         D ci c])  \  }}|t        j                  |       j                  v r||+ c}}S c c}}w )N )itemsinspect	signature
parameters)clsparamskvs       c/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/mlx_audio/tts/models/base.py	from_dictzBaseModelArgs.from_dict
   s]     
 #LLN*DAq))#.999 1*
 	
s   .AN)__name__
__module____qualname__classmethodr   r       r   r   r      s    
 
r   r   c                 f    | j                   }t        |      dk7  ry|\  }}}||k\  r||k\  r||k(  ryy)N   FT)shapelen)arrr   out_channelskHKWs        r   check_array_shaper      sD    IIE 5zQ L"b 	!3"(r   c                    t        | t        j                        st        j                  |       } | j                  d   }t	        ||z        }t        j
                  |      }t        j                  d|dz
  |      }t        j                  |      j                  t        j                        }t        j                  |dz   |dz
        }||z
  }d|z
  }	|	j                  dd      | |   z  |j                  dd      | |   z  z   }
|
S )zo
    Adjust the speed of the audio by resampling
    speed_factor > 1: faster
    speed_factor < 1: slower
    r      g      ?)
isinstancemxarrayr   intarangelinspacefloorastypeint32minimumreshape)audio_arrayspeed_factor
old_length
new_lengthold_indicesnew_indicesindices_floorindices_ceilweights_ceilweights_floorresults              r   adjust_speedr9   %   s     k288,hh{+ ""1%JZ,./J ))J'K++aa<K HH[)00:M::ma/a@L.L,&M 	b!${='AA


r1
%L(A
A	B 
 Mr   c                       e Zd ZU ej                  ed<   eed<   eed<   eed<   eed<   eed<   eed<   e	ed<   e	ed	<   eed
<   eed<   dZ
eed<   dZeed<   y)GenerationResultaudiosamplessample_ratesegment_idxtoken_countaudio_durationreal_time_factorpromptaudio_samplesprocessing_time_secondspeak_memory_usageFis_streaming_chunkis_final_chunkN)r   r   r   r$   r%   __annotations__r&   strfloatdictrG   boolrH   r   r   r   r;   r;   G   sZ    88OLL""$$ ND r   r;   c                       e Zd ZU ej                  ed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   d	Z	e
ed
<   d	Ze
ed<   y)BatchGenerationResultr<   sequence_idxr=   r>   r@   rA   rE   rF   FrG   rH   N)r   r   r   r$   r%   rI   r&   rJ   rK   rG   rM   rH   r   r   r   rO   rO   X   sI    88OL""$$ ND r   rO   )r	   dataclassesr   mlx.corecorer$   numpynpr   r   r9   r;   rO   r   r   r   <module>rV      sg     !   	
 	
 	
 D ! ! !  
! 
! 
!r   