o
    j
j	                     @   s   d Z ddlZg dZg dZg dZdd Zdd	 Zd
d ZedkrJg dZ	e
e	dD ] \ZZeeZede d ede  ede  q+dS dS )ud   
숫자 -> 한글 발음 변환 전처리기
TTS에 넣기 전에 모든 숫자를 한글로 변환
    N)
   영u   일u   이u   삼   사u   오u   육u   칠u   팔   구) u   십u   백u   천)r   u   만u   억u   조c                 C   s   |  dd} |  s| S t| }|dkrdS g }g }t|}|r2|d|dd  |dd }|s t|D ]T\}}t|d | }t|}|dkrKq6d}	|d}
t|
D ]*\}}t|}d	| }|dkrgqV|dkrv|dkrv|	t| 7 }	qV|	t	| t|  7 }	qV|
|	t|   q6d|S )
u;   정수 문자열을 한글로 변환 (쉼표 제거 포함),r   r   r   N         )replaceisdigitintstrinsert	enumeratelenzfillUNITS_SMALLDIGITSappend	UNITS_BIGjoin)num_strnresultgroupssgigroupbig_unit_idx	group_val	group_strpaddeddichdunit_idx r'   '/var/www/tts_worker/tts_preprocessor.pynumber_to_korean   s<   

r)   c                 C   sL   |  d}t|d }t|dkr|S ddd |d D }| d| S )uB   소수점 이하를 한 자리씩 읽기: 0.123 -> 영점일이삼.r   r   r   c                 s   s    | ]	}t t| V  qd S )N)r   r   ).0r%   r'   r'   r(   	<genexpr>>   s    z$decimal_to_korean.<locals>.<genexpr>u   점)splitr)   r   r   )decimal_strpartsinteger_partdecimal_partr'   r'   r(   decimal_to_korean5   s   
r2   c                    s\  t dd| } | dd} | dd} | dd} | d	d
} | dd} i dddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d$d8
  fd9d:}t d;|| } t d<d=d> | } t d?d@d> | } t dAdBd> | } t dCdDd> | } dEdF }t dG|| } t dHdId> | } | S )Juw   텍스트 내 숫자를 한글 발음으로 변환 + Supertonic 미지원 특수문자 제거 + 단위/약자 한글화uJ   [■▶★●◆▲※→←▼◀►◇□☆◎※♣♠♥♦◈◐◑]r   u   ㎡u   엠투u   ㎢u   제곱킬로미터u   ㎝u   센티미터u   ㎜u   밀리미터u   ㎏u   킬로그램u   대u   대지u   도u   도로u   전u   밭u   답u   논u   임u   임야u   과u	   과수원u   목u   목장용지u   잡u	   잡종지u   학u   학교용지u   공u   공장용지u   창u   창고용지u   주u	   주차장u   하u   하천r   u   구거u   제u   제방u   원u	   유원지u   체u   체육용지u   종교용지u	   사적지u   묘지u	   광천지u   염전u   철도용지u   수도용지u   유지u	   양어장)
u   종r   u   묘u   광u   염u   철u   수u   유u   양u   주차c                    s   |  d}d || d S )Nr   ())r   get)mr$   	jimok_mapr'   r(   expand_jimokX   s   
z(preprocess_for_tts.<locals>.expand_jimoku   \(([가-힣])\)z(\d+(?:,\d{3})*\.?\d*)%c                 S   s   t | dddd S )Nr   r   r   u	   퍼센트r2   r   r   r6   r'   r'   r(   <lambda>_   s    z$preprocess_for_tts.<locals>.<lambda>z(\d{1,3}(?:,\d{3})+\.\d+)c                 S   s   t | dddS )Nr   r   r   r:   r;   r'   r'   r(   r<   c   s    z(\d{1,3}(?:,\d{3})+)c                 S      t | dS Nr   r)   r   r;   r'   r'   r(   r<   g       z
(\d+\.\d+)c                 S   r=   r>   )r2   r   r;   r'   r'   r(   r<   j   r@   c                 S   sh   |  d|  d}}tdd |D st|nt|}tdd |D s)t|nt|}| d| S )Nr      c                 s       | ]}|d kV  qdS r*   Nr'   r+   cr'   r'   r(   r,   o       z9preprocess_for_tts.<locals>.range_repl.<locals>.<genexpr>c                 s   rB   rC   r'   rD   r'   r'   r(   r,   p   rF   u   내지)r   anyr)   r2   )r6   abakbkr'   r'   r(   
range_replm   s   ""z&preprocess_for_tts.<locals>.range_replz(\d+(?:\.\d+)?)~(\d+(?:\.\d+)?)uU   (?<!\d)(\d+)(?=명|세대|원|호선|종|개|곳|층|년|월|일|m|km|세|평|엠투)c                 S   r=   r>   r?   r;   r'   r'   r(   r<   v   r@   )resubr   )textr9   rL   r'   r7   r(   preprocess_for_ttsA   s~   	rP   __main__)u   이 지역의 인구는 3,330명이며, 세대수는 1,245세대입니다. 면적은 25,800제곱미터이고, 공시지가는 제곱미터당 2,150,000원입니다.u   건폐율은 0.6이며, 용적률은 2.5입니다. 출산율은 0.123명까지 떨어졌고, 평당 가격은 3.3제곱미터 기준 1,850만원입니다. 수익률은 4.75%로 예상됩니다.u  K-9 자주포는 대한민국 육군의 주력 화포입니다. F-35 전투기와 함께 운용됩니다. 이 토지는 제2종 일반주거지역이며, 국도 1호선에서 500m 거리에 위치합니다. COVID-19 이후 부동산 시장이 변화했습니다.r   z
[TEST ]z  IN:  z  OUT: )__doc__rM   r   r   r   r)   r2   rP   __name__testsr   it	convertedprintr'   r'   r'   r(   <module>   s"    );