
    sgk                     $    d Z ddlZ G d d      Zy)z%Number Normalizer class for SpeechT5.    Nc                   $    e Zd Zd Zd Zd Zd Zy)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)| _        y )*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    a/var/www/html/venv/lib/python3.12/site-packages/transformers/models/speecht5/number_normalizer.py__init__z EnglishNumberNormalizer.__init__   s   `	

 n	
$!
!
8!
 )!
 (	!

 /!
 >!
 #!
 $!
 <!
 #!
 '!
 ?!
 '!
 %!
 %!
  (!!
" &#!
$ %('!
    c                    |dk(  ryg }t        dt        | j                              D ]  }|dz  dk7  rd}|dz  dz  }|dz  }|dkD  r|| j                  |   dz   z  }|dkD  r|dz  }|dkD  r|d	k  r|| j                  |dz
     z  }n9| j
                  |dz     }| j                  |dz     }|r||z  }|r|r|d
z  }||z  }|j                  |       |dz  } d
j                  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   s   !8q#dnn-. 	ATzQ:, 3Y
a<DIIh/*<<D!A~?zBDJJzB77D!%:+;!<J!%:?!;J!
*!% CKD
*T"DLC3	6 xx((r9   c           
      p   d|v r|j                  d      \  }}n|d}}d}| j                  j                         D ]f  \  }}|j                  |      r|}|t	        |      d } n@|j                  d      s;|dd j                  |      sP|}d|t	        |      dz   d z   } n d}|j                  d      rd}|dd }n!|j                  d      rd}|t	        d      d }d}d	|v sd	|v r&d
}|j                  d	d      }|j                  d	d      }|j                  dt	        |      dz
  dz  dz   z        }g }	t        dt	        |      d      D ]f  }
t        ||
|
dz          }|dkD  s| j                  |      }| j                  t	        ||
d       dz  dz
     }|r|d|z   z  }|	j                  |       h dj                  |	      }|dk(  r|s|r
| | | | S | | S dj                  |D cg c]  }| j                  t        |             c}      }|s|r| | d| | | S | | d| | S c c}w )zW
        Converts an individual number passed in string form to spelt-out form
        .00r   N-   zminus minus%z percent   r   r?   z point )splitr5   items
startswithrA   replacezfillr@   intrM   r4   rB   rC   )r6   numberinteger_partdecimal_partcurrency_symbolsymbolnameminus_prefixpercent_suffixrF   rG   chunkrH   unitspelled_integerdigitspelled_decimals                    r7   convertzEnglishNumberNormalizer.convertn   s    &=)/c):&L,)/,L  11779 
	LFD&&v."&+CKM:&&s+#..v6&*O#&c&kAo6G)H#HL
	 ""3'#L'+L$$W-#L'G7L,#"5'N'//R8L'//R8L#))!L0AA0E!/Ka/O*PQq#l+Q/ 	#AQQ/0Eqy((/~~c,qr*:&;q&@1&DEC$J&DT"	# ((5/ 4  ?  . 1.1A/ARS (((89 "hhS_'`%(9(9#e*(E'`aO  ?  . 18I.IYZiYjk %~o%6go=N~N^_ (as   /!H3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                 D    | j                  d      j                  dd      S )NrR   ,r   )grouprY   )matchs    r7   <lambda>z2EnglishNumberNormalizer.__call__.<locals>.<lambda>   s    %++a.2H2Hb2Q r9   c                 D    j                  | j                  d            S )NrR   )ri   rm   )rn   r6   s    r7   ro   z2EnglishNumberNormalizer.__call__.<locals>.<lambda>   s    t||EKKPQN7S r9   z +r?   )resub)r6   textpatternconverted_texts   `   r7   __call__z EnglishNumberNormalizer.__call__   sO    
 T vvl$QSWX )SUYZc>:r9   N)__name__
__module____qualname__r8   rM   ri   rv    r9   r7   r   r      s    5
n )DBHr9   r   )__doc__rq   r   rz   r9   r7   <module>r|      s    , 	l lr9   