
     `ik                     ,    d Z ddlZ G d d          ZdS )z%Number Normalizer class for SpeechT5.    Nc                   &    e Zd Zd Zd Zd Zd ZdS )EnglishNumberNormalizerc                     g d| _         g d| _        g d| _        g 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'd(d)| _        d S )*N)
 onetwothreefourfivesixseveneightnine)
r   eleventwelvethirteenfourteenfifteensixteen	seventeeneighteennineteen)
r   tentwentythirtyfortyfiftysixtyseventyeightyninety)r   thousandmillionbilliontrillionquadrillionquintillion
sextillion
septillion	octillion	nonillion	decillion$z dollarsu   €z euros   £z pounds   ¢z cents   ¥z japanese yenu   ﷼z saudi riyalu   ₹z indian rupeesu   ₽z russian rublesu   ฿z
 thai bahtu   ₺z turkish lirasu   ₴z ukrainian hryvniau   ₣z swiss francsu   ₡z costa rican colonu   ₱z philippine pesou   ₪z israeli shekelsu   ₮u    mongolian tögrögu   ₩z south korean wonz nigerian nairau    vietnamese Đồng)u   ₦u   ₫)onesteenstens	thousandscurrency_symbols)selfs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/transformers/models/speecht5/number_normalizer.py__init__z EnglishNumberNormalizer.__init__   s=   ```	
 
 

 nmm	
 
 
$!
!
8!
 )!
 (	!

 /!
 >!
 #!
 $!
 <!
 #!
 '!
 ?!
 '!
 %!
 %!
  (!!
" &#!
$ %('!
 !
 !
    c                    |dk    rdS g }t          dt          | j                            D ]}|dz  dk    rd}|dz  dz  }|dz  }|dk    r|| j        |         dz   z  }|dk    r|dz  }|dk    r|d	k     r|| j        |dz
           z  }n5| j        |dz           }| j        |dz           }|r||z  }|r|r|d
z  }||z  }|                    |           |dz  }d
                    t          |                    S )Nr   zeroi  r   d   z hundredz and 
       )	rangelenr4   r1   r2   r3   appendjoinreversed)	r6   numpartsiparthundreds
tens_units
tens_digit
ones_digits	            r7   spell_numberz$EnglishNumberNormalizer.spell_numberL   sE   !886q#dn--.. 	 	ATzQ:, 3Y
a<<DIh/*<<D!A~~??zBDJzB77DD!%:+;!<J!%:?!;J! +
*! +% ( CKD
*T"""DLCCxx(((r9   c                     d|v r|                     d          \  }}n|d}}d} j                                        D ]\  }}|                    |          r|}|t	          |          d         } nT|                    d          r>|dd                             |          r!|}d|t	          |          dz   d         z   } nd}|                    d          rd}|dd         }n.|                    d          rd}|t	          d          d         }d}d	|v sd	|v r.d
}|                    d	d          }|                    d	d          }|                    dt	          |          dz
  dz  dz   z            }g }	t          dt	          |          d          D ]~}
t          ||
|
dz                      }|dk    r\ 	                    |          } j
        t	          ||
d                   dz  dz
           }|r|d|z   z  }|	                    |           d                    |	          }|dk    r|s|r
| | | | n| | S d                     fd|D                       }|s|r| | d| | | n
| | d| | S )zW
        Converts an individual number passed in string form to spelt-out form
        .00r   N-   zminus minus%z percent   r   r?   c                 T    g | ]$}                     t          |                    %S  )rM   int).0digitr6   s     r7   
<listcomp>z3EnglishNumberNormalizer.convert.<locals>.<listcomp>   s-    '`'`'`%(9(9#e**(E(E'`'`'`r9   z point )splitr5   items
startswithrA   replacezfillr@   rX   rM   r4   rB   rC   )r6   numberinteger_partdecimal_partcurrency_symbolsymbolnameminus_prefixpercent_suffixrF   rG   chunkrH   unitspelled_integerspelled_decimals   `               r7   convertzEnglishNumberNormalizer.convertn   sM    &==)/c):):&L,,)/,L  17799 
	 
	LFD&&v.. "&+CKKMM:&&s++ #..v66 &*O#&c&kkAo6G6G)H#HLE ""3'' 	8#L'+LL$$W-- 	8#L'G7L,#"5"5'N'//R88L'//R88L#))!L0A0AA0E!/Ka/O*PQQq#l++Q// 	# 	#AQQY/00Eqyy((//~c,qrr*:&;&;q&@1&DE 'C$J&DT"""((5// 4  :#2:<SS.S/SSS'999 "hh'`'`'`'`S_'`'`'`aaO  `#2`<kkkk.kZikkk$_o__o_~__r9   c                      d}t          j        dd |          }t          j        | fd|          }t          j        dd|          }|S )zf
        Convert numbers / number-like quantities in a string to their spelt-out counterparts
        u~   (?<!\w)(-?\$?\€?\£?\¢?\¥?\₹?\₽?\฿?\₺?\₴?\₣?\₡?\₱?\₪?\₮?\₩?\₦?\₫?\﷼?\d+(?:\.\d{1,2})?%?)(?!\w)z	(\d+,\d+)c                 T    |                      d                              dd          S )NrR   ,r   )groupr_   )matchs    r7   <lambda>z2EnglishNumberNormalizer.__call__.<locals>.<lambda>   s     %++a..2H2Hb2Q2Q r9   c                 T                         |                     d                    S )NrR   )rm   rq   )rr   r6   s    r7   rs   z2EnglishNumberNormalizer.__call__.<locals>.<lambda>   s    t||EKKPQNN7S7S r9   z +r?   )resub)r6   textpatternconverted_texts   `   r7   __call__z EnglishNumberNormalizer.__call__   s^    
 T vl$Q$QSWXX )S)S)S)SUYZZc>::r9   N)__name__
__module____qualname__r8   rM   rm   rz   rW   r9   r7   r   r      sV        5
 5
 5
n )  )  )DB B BH    r9   r   )__doc__ru   r   rW   r9   r7   <module>r      sR    , + 				l l l l l l l l l lr9   