o
    i@                     @   s<  d dl Z d dlZd dlZd dlZd dlZdd Z		ddefddZ	dd	d
Z
edkre ZejZeds;de Ze dej dZe
ej\ZZedksSJ dejeejdZe	eejejZejeddiedddidZe Zed d  d ZejeejdZejej ej!dd e"ej!edd dS dS )    Nc                  C   s   t jt jd} | jdtddd | jdtddd | jd	td
dd | jdtddd | jdtddd | jdtddd |  S )N)formatter_classz--server-urlzlocalhost:8000zAddress of the server)typedefaulthelpz--reference-audioz+../../infer/examples/basic/basic_ref_en.wavzWPath to a single audio file. It can't be specified at the same time with --manifest-dirz--reference-textz2Some call me nature, others call me mother nature. z--target-textzI don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring.z--model-namef5_ttsz(triton model_repo module name to requestz--output-audioztests/client_http.wavzPath to save the output audio)argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentstr
parse_args)parser r   \/home/ubuntu/.local/lib/python3.10/site-packages/f5_tts/runtime/triton_trtllm/client_http.pyget_args"   sL   r   ]  ./audio_save_dirc              	   C   s   t | jdksJ dtjt | ggtjd}| ddtj} dd| jd|  dd	|jd
| ddddgd|gddddgd|gdgi}|S )N   zwaveform should be 1Ddtypeinputsreference_wavFP32)nameshapedatatypedatareference_wav_lenINT32reference_textBYTEStarget_text)	lenr   nparrayint32reshapeastypefloat32tolist)waveformr"   r$   sample_rater   lengthsr   r   r   r   prepare_requestQ   s   r0   c                 C   sp   |dksJ dt | tr| d }| d }nt| \}}||kr4ddlm} ||tt|||  }||fS )Nr   zhard coding in serverr'   sampling_rater   )resample)
isinstancedictsfreadscipy.signalr2   intr%   )wav_pathtarget_sample_rater-   r.   r2   r   r   r   
load_audiom   s   

r;   __main__)http://zhttps://r=   z/v2/models/z/inferzsample rate hardcoded in serverr   zContent-Typezapplication/jsonF
request_id0)headersjsonverifyparamsoutputsr   T)exist_okPCM_16)r   r   )r   )#r   osnumpyr&   requests	soundfiler5   r   r   r0   r;   __name__args
server_url
startswith
model_nameurlreference_audior-   srr'   r+   r"   r$   r   postrsprA   resultaudiomakedirspathdirnameoutput_audiowriter   r   r   r   <module>   s>   3



