o
    Wli                     @   sV   d Z ddlZddlZddlmZ ddlZeeZde	fddZ
edkr)e
  dS dS )z~Patches a voice ONNX model with phoneme width alignment output.

Requires the onnx package to be installed (not onnxruntime).
    N)Setreturnc                     sJ  t  } | jddd | jddd | jddd |  }tjtjd |js+|j|_t	
|j}|jr8|j n9t }|jjD ]}|jd	krGq?||j q?|sWtd
 dS t|dkretd| dS tt| td  t fdd|jjD rtd  dS t	j } |_|jj| t	||j td|j dS )zMain entry point.modelzPath to ONNX voice model)helpz--outputz/Path to write output model (default: overwrite)z--tensor-namez6Name of tensor to mark as output (default: autodetect))levelZCeilz5No ceil tensors detected. Use --tensor-name manually.   z>Multiple ceil tensors detected. Use --tensor-name manually: %szDetected tensor name: %sc                 3   s    | ]}|j  kV  qd S )N)name).0outputZceil_tensor_name Z/home/kim/smarthome/.venv/lib/python3.10/site-packages/piper/patch_voice_with_alignment.py	<genexpr>:   s    zmain.<locals>.<genexpr>z0Tensor is already marked as output. Aborting: %szSuccessfully wrote %sr   )argparseArgumentParseradd_argument
parse_argsloggingbasicConfigINFOr
   r   onnxloadZtensor_namesetgraphnodeZop_typeupdate_LOGGERfatallennextiterinfoanyhelperZValueInfoProtor   appendsave)parserargsr   Zceil_tensor_namesr   Zceil_value_infor   r   r   main   sT   


r(   __main__)__doc__r   r   typingr   r   	getLogger__name__r   intr(   r   r   r   r   <module>   s    
;
