o "e@srddlZddlZddlZddZGdddZdddZd d Zdd dZdddZ ddZ dddZ ddZ dS)NcCsRt|ddd }|}Wdn1swYt|}tdi|}|S)Nrzutf-8)encoding)openreadjsonloadsHParams) config_pathfdataconfighparamsrr/workspace/OpenVoice/utils.pyget_hparams_from_files   rc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)r cKs8|D]\}}t|tkrtdi|}|||<qdS)Nr)itemstypedictr )selfkwargskvrrr__init__s   zHParams.__init__cC |jSN)__dict__keysrrrrr z HParams.keyscCrr)rrrrrrrrz HParams.itemscCrr)rvaluesrrrrrrzHParams.valuescCs t|jSr)lenrrrrr__len__rzHParams.__len__cCs t||Sr)getattrrkeyrrr __getitem__!rzHParams.__getitem__cCs t|||Sr)setattr)rr$valuerrr __setitem__$s zHParams.__setitem__cCs ||jvSr)rr#rrr __contains__'rzHParams.__contains__cCrr)r__repr__rrrrr**rzHParams.__repr__N) __name__ __module__ __qualname__rrrrr!r%r(r)r*rrrrr s r cCs~dd|D}dd|D}dd|D}t|}tj|df|jd}d|dddf<t|t|}|d||d|<|S) NcSg|]}t|qSr)ord).0charrrr 0z"string_to_bits..cSs"g|] }t|dddqS)Nr.)binzfillr1r'rrrr33s"cSsg|] }dd|DqS)cSr/rintr1bitrrrr36r4z-string_to_bits...rr1binaryrrrr36sr.)dtyper5)nparrayzerosr?minr )stringpad_len ascii_values binary_valuesZ bit_arraysZ numpy_arrayZnumpy_array_fullmax_lenrrrstring_to_bits.s rJcCs4dd|D}dd|D}ddd|D}|S)NcSs g|] }ddd|DqS)cs|]}t|VqdSr)strr;rrr Cz,bits_to_string...join)r1rowrrrr3Cs z"bits_to_string..cSsg|]}t|dqS)r5r9r=rrrr3FsrKcsrLr)chrr8rrrrNIrOz!bits_to_string..rP)Z bits_arrayrHrGZ output_stringrrrbits_to_stringAsrT [EN]cCs(|dvr t||d}|St||d}|S)N)EN)min_len)split_sentences_latinsplit_sentences_zh)textrX language_str sentencesrrrsplit_sentenceNs   r^cCstdd|}tdd|}tdd|}tdd|}td d |}td d |}td d|}dd|dD}t|ddkrF|d=g}g}d}t|D]*\}}|||t|d 7}||ksn|t|dkrzd}|d |g}qPt|S)zSplit Long sentences into list of short ones Args: str: Input sentences. Returns: List[str]: list of output sentences. [。!?;].[,],u[“”]"u[‘’]'u[\<\>\(\)\[\]\"\«\»]+rK[ ]+ ([,.!?;])\1 $#!cSg|]}|qSrstripr1srrrr3gr4z)split_sentences_latin..$#!rr@)resubsplitr enumerateappendrQmerge_short_sentences_latinr[rXr]Z new_sentencesZnew_sentZ count_lenindsentrrrrYUs*  rYcCsg}|D]#}t|dkr"t|dddkr"|dd||d<q||qz"t|dddkrH|dd|d|d<|dW|SW|SY|S)Avoid short sentences by merging them with the following sentence. Args: List[str]: list of input sentences. Returns: List[str]: list of output sentences. rrorfr5)r rrrtpopZsensZsens_outrmrrrruxs "  rucCstdd|}tdd|}tdd|}tdd|}d d |d D}t|d d kr1|d =g}g}d }t|D]'\}}|||t|7}||ksV|t|dkrbd }|d|g}q;t|S)Nr_r`rarbrerfrgrhcSrirrjrlrrrr3r4z&split_sentences_zh..rnrorr@)rprqrrr rsrtrQmerge_short_sentences_zhrvrrrrZs$  rZcCsg}|D] }t|dkrt|ddkr|dd||d<q||qzt|ddkrB|dd|d|d<|dW|SW|SY|S)ryrror5rfrz)r rtr{r|rrrr}s   r})r.)rUrV)rU) rprnumpyrArr rJrTr^rYrurZr}rrrrs  #