Ë
    S^(h˜"  ã                   ó$   — d Z ddlZ G d„ d«      Zy)z"English Normalizer class for CLVP.é    Nc                   ó¸   — e Zd Zd„ Zdedefd„Zdedefd„Zdedefd„Zdedefd	„Z	dedefd
„Z
dedefd„Zdedefd„Zdedefd„Zdedefd„Zdedefd„Zd„ Zy)ÚEnglishNormalizerc                 óÈ   — dD �cg c]1  }t        j                  d|d   z  t         j                  «      |d   f‘Œ3 c}| _        g d¢| _        g d¢| _        g d¢| _        y c c}w )N))ÚmrsÚmisess)ÚmrÚmister)ÚdrÚdoctor)ÚstÚsaint)ÚcoÚcompany)ÚjrÚjunior)ÚmajÚmajor)ÚgenÚgeneral)ÚdrsÚdoctors)ÚrevÚreverend)ÚltÚ
lieutenant)ÚhonÚ	honorable)ÚsgtÚsergeant)ÚcaptÚcaptain)ÚesqÚesquire)ÚltdÚlimited)ÚcolÚcolonel)ÚftÚfortz\b%s\.r   é   )
Ú ÚoneÚtwoÚthreeÚfourÚfiveÚsixÚsevenÚeightÚnine)
ÚtenÚelevenÚtwelveÚthirteenÚfourteenÚfifteenÚsixteenÚ	seventeenÚeighteenÚnineteen)
r+   r+   ÚtwentyÚthirtyÚfortyÚfiftyÚsixtyÚseventyÚeightyÚninety)ÚreÚcompileÚ
IGNORECASEÚ_abbreviationsÚonesÚteensÚtens)ÚselfÚxs     úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/clvp/number_normalizer.pyÚ__init__zEnglishNormalizer.__init__   sc   € ðö
àô �Z‰Z˜
 Q q¡TÑ)¬2¯=©=Ó9¸1¸Q¹4Ò@ò
ˆÔò0 aˆŒ	ò
ˆŒ
ò kˆ�	ùòK
s   …6AÚnumÚreturnc                 ó  — |dk(  ry|dk  rd| j                  t        |«      «      z   S |dk  r| j                  |   S |dk  r| j                  |dz
     S |dk  r6| j                  |dz     |dz  dk7  rd| j                  |dz  «      z   z   S dz   S |d	k  r9| j                  |dz     d
z   |dz  dk7  rd| j                  |dz  «      z   z   S dz   S |dk  r;| j                  |d	z  «      dz   |d	z  dk7  rd| j                  |d	z  «      z   z   S dz   S |dk  r;| j                  |dz  «      dz   |dz  dk7  rd| j                  |dz  «      z   z   S dz   S |dk  r;| j                  |dz  «      dz   |dz  dk7  rd| j                  |dz  «      z   z   S dz   S |dk  r;| j                  |dz  «      dz   |dz  dk7  rd| j                  |dz  «      z   z   S dz   S |dk  r;| j                  |dz  «      dz   |dz  dk7  rd| j                  |dz  «      z   z   S dz   S y)ax  
        Converts numbers(`int`) to words(`str`).

        Please note that it only supports upto - "'nine hundred ninety-nine quadrillion, nine hundred ninety-nine
        trillion, nine hundred ninety-nine billion, nine hundred ninety-nine million, nine hundred ninety-nine
        thousand, nine hundred ninety-nine'" or `number_to_words(999_999_999_999_999_999)`.
        r   Úzerozminus é
   é   éd   ú-r+   éè  ú hundredú i@B z	 thousandú, i Êš;z millionl    J)£z billionl     �Iú5 z	 trillionl     ÈNÎZoz quadrillionznumber out of range)Únumber_to_wordsÚabsrK   rL   rM   )rN   rR   s     rP   r^   z!EnglishNormalizer.number_to_words?   s	  € ð �!Š8ØØ�1ŠWØ˜d×2Ñ2´3°s³8Ó<Ñ<Ð<Ø�2ŠXØ—9‘9˜S‘>Ð!Ø�2ŠXØ—:‘:˜c B™hÑ'Ð'Ø�3ŠYØ—9‘9˜S B™YÑ'ÐSVÐY[ÑS[Ð_`ÒS`¨3°×1EÑ1EÀcÈBÁhÓ1OÑ+OÑiÐiÐfhÑiÐiØ�4ŠZà—	‘	˜# ™*Ñ%¨
Ñ2Ð_bÐehÑ_hÐlmÒ_m°c¸D×<PÑ<PÐQTÐWZÑQZÓ<[Ñ6[ÑvðØsuÑvðð �9Š_à×$Ñ$ S¨D¡[Ó1Øñà>AÀD¹jÈAºo�4˜$×.Ñ.¨s°T©zÓ:Ñ:ñWðð TVñWðð
 �=Ò à×$Ñ$ S¨IÑ%5Ó6ØñàCFÈÁ?ÐVWÒCW�4˜$×.Ñ.¨s°Y©Ó?Ñ?ñaðð ^`ñaðð
 Ð$Ò$à×$Ñ$ S¨MÑ%9Ó:ØñàGJÈ]ÑGZÐ^_ÒG_�4˜$×.Ñ.¨s°]Ñ/BÓCÑCñiðð fhñiðð
 Ð(Ò(à×$Ñ$ SÐ,=Ñ%=Ó>ØñàKNÐQbÑKbÐfgÒKg�4˜$×.Ñ.¨sÐ5FÑ/FÓGÑGñqðð npñqðð
 Ð,Ò,à×$Ñ$ SÐ,AÑ%AÓBØ ñ!ð Ð2Ñ2°aÒ7ð ˜4×/Ñ/°Ð6KÑ0KÓLÑLñðð ñðð )ó    Útextc                 óD   — |j                  dd«      j                  d«      S )z+
        Converts unicode to ascii
        ÚasciiÚignorezutf-8)ÚencodeÚdecode©rN   ra   s     rP   Úconvert_to_asciiz"EnglishNormalizer.convert_to_asciiz   s    € ð �{‰{˜7 HÓ-×4Ñ4°WÓ=Ð=r`   Úmc                 ól  — |j                  d«      }|j                  d«      }t        |«      dkD  r|dz   S |d   rt        |d   «      nd}t        |«      dkD  r|d   rt        |d   «      nd}|r!|r|dk(  rdnd}|dk(  rdnd	}|›d
|›d|›d
|›�S |r|dk(  rdnd}|›d
|›�S |r|dk(  rdnd	}|›d
|›�S y)zZ
        This method is used to expand numerical dollar values into spoken words.
        r*   ú.é   z dollarsr   ÚdollarÚdollarsÚcentÚcentsr\   r]   zzero dollars)ÚgroupÚsplitÚlenÚint)rN   ri   ÚmatchÚpartsrn   rp   Údollar_unitÚ	cent_units           rP   Ú_expand_dollarsz!EnglishNormalizer._expand_dollars€   sÐ   € ð —‘˜“
ˆØ—‘˜CÓ ˆÜˆu‹:˜Š>Ø˜:Ñ%Ð%à#(¨¢8”#�e˜A‘h”-°ˆÜ!$ U£¨a¢°E¸!²H”�E˜!‘H”À!ˆÙ‘uØ&-°¢l™(¸	ˆKØ"'¨1¢*™°'ˆIÚ%,ªkº5Á)ÐLÐLÙØ&-°¢l™(¸	ˆKÚ%¡{Ð3Ð3ÙØ"'¨1¢*™°'ˆIÚ#¡YÐ/Ð/à!r`   c                 óD   — |j                  d«      j                  dd«      S )zF
        This method is used to remove commas from sentences.
        r*   ú,r+   ©rq   Úreplace©rN   ri   s     rP   Ú_remove_commasz EnglishNormalizer._remove_commas˜   s   € ð �w‰w�q‹z×!Ñ! # rÓ*Ð*r`   c                 óD   — |j                  d«      j                  dd«      S )zO
        This method is used to expand '.' into spoken word ' point '.
        r*   rk   z point r|   r~   s     rP   Ú_expand_decimal_pointz'EnglishNormalizer._expand_decimal_pointž   s   € ð �w‰w�q‹z×!Ñ! # yÓ1Ð1r`   c                 óÀ   — ddddœ}t        |j                  d«      dd «      }d|d	z  k  r|d	z  d
k  rd}n|j                  |dz  d«      }| j                  |«      |z   S )z`
        This method is used to expand ordinals such as '1st', '2nd' into spoken words.
        r   ÚndÚrd)r*   rl   é   r   NéþÿÿÿrV   rX   rW   Úth)rt   rq   Úgetr^   )rN   rR   Úordinal_suffixesÚsuffixs       rP   Ú_expand_ordinalz!EnglishNormalizer._expand_ordinal¤   sp   € ð  $¨°Ñ6Ðä�#—)‘)˜A“,˜s Ð#Ó$ˆØ��s‘Š?˜s S™y¨BšØ‰Fà%×)Ñ)¨#°©(°DÓ9ˆFØ×#Ñ# CÓ(¨6Ñ1Ð1r`   c                 ó  — t        |j                  d«      «      }|dkD  r\|dk  rW|dk(  ry|dkD  r|dk  rd| j                  |dz  «      z   S |dz  dk(  r| j                  |dz  «      d	z   S | j                  |«      S | j                  |«      S )
a  
        This method acts as a preprocessing step for numbers between 1000 and 3000 (same as the original repository,
        link :
        https://github.com/neonbjb/tortoise-tts/blob/4003544b6ff4b68c09856e04d3eff9da26d023c2/tortoise/utils/tokenizer.py#L86)
        r   rZ   i¸  iÐ  ztwo thousandiÚ  ztwo thousand rX   r[   )rt   rq   r^   )rN   ri   rR   s      rP   Ú_expand_numberz EnglishNormalizer._expand_number±   sš   € ô �!—'‘'˜!“*‹oˆà�Š:˜# š*Ø�dŠ{Ø%Ø�t’  d¢
Ø&¨×)=Ñ)=¸cÀC¹iÓ)HÑHÐHØ�s‘˜a’Ø×+Ñ+¨C°3©JÓ7¸*ÑDÐDà×+Ñ+¨CÓ0Ð0à×'Ñ'¨Ó,Ð,r`   c                 ób  — t        j                  t        j                  d«      | j                  |«      }t        j                  t        j                  d«      d|«      }t        j                  t        j                  d«      | j                  |«      }t        j                  t        j                  d«      | j
                  |«      }t        j                  t        j                  d«      | j                  |«      }t        j                  t        j                  d«      | j                  |«      }|S )z�
        This method is used to normalize numbers within a text such as converting the numbers to words, removing
        commas, etc.
        z([0-9][0-9\,]+[0-9])u   Â£([0-9\,]*[0-9]+)z	\1 poundsz\$([0-9\.\,]*[0-9]+)z([0-9]+\.[0-9]+)z[0-9]+(st|nd|rd|th)z[0-9]+)rG   ÚsubrH   r   ry   r�   r‹   r�   rg   s     rP   Únormalize_numbersz#EnglishNormalizer.normalize_numbersÅ   sÒ   € ô
 �v‰v”b—j‘jÐ!8Ó9¸4×;NÑ;NÐPTÓUˆÜ�v‰v”b—j‘jÐ!6Ó7¸ÀtÓLˆÜ�v‰v”b—j‘jÐ!8Ó9¸4×;OÑ;OÐQUÓVˆÜ�v‰v”b—j‘jÐ!4Ó5°t×7QÑ7QÐSWÓXˆÜ�v‰v”b—j‘jÐ!7Ó8¸$×:NÑ:NÐPTÓUˆÜ�v‰v”b—j‘j Ó+¨T×-@Ñ-@À$ÓGˆØˆr`   c                 ó\   — | j                   D ]  \  }}t        j                  |||«      }Œ |S )z/
        Expands the abbreviate words.
        )rJ   rG   r�   )rN   ra   ÚregexÚreplacements       rP   Úexpand_abbreviationsz&EnglishNormalizer.expand_abbreviationsÒ   s5   € ð #'×"5Ñ"5ò 	4ÑˆE�;Ü—6‘6˜% ¨dÓ3‰Dð	4àˆr`   c                 óV   — t        j                  t        j                  d«      d|«      S )z.
        Removes multiple whitespaces
        z\s+r\   )rG   r�   rH   rg   s     rP   Úcollapse_whitespacez%EnglishNormalizer.collapse_whitespaceÚ   s    € ô �v‰v”b—j‘j Ó(¨#¨tÓ4Ð4r`   c                 óÒ   — | j                  |«      }|j                  «       }| j                  |«      }| j                  |«      }| j	                  |«      }|j                  dd«      }|S )zŒ
        Converts text to ascii, numbers / number-like quantities to their spelt-out counterparts and expands
        abbreviations
        ú"r+   )rh   Úlowerr�   r”   r–   r}   rg   s     rP   Ú__call__zEnglishNormalizer.__call__à   sd   € ð ×$Ñ$ TÓ*ˆØ�z‰z‹|ˆØ×%Ñ% dÓ+ˆØ×(Ñ(¨Ó.ˆØ×'Ñ'¨Ó-ˆØ�|‰|˜C Ó$ˆàˆr`   N)Ú__name__Ú
__module__Ú__qualname__rQ   rt   Ústrr^   rh   ry   r   r�   r‹   r�   r�   r”   r–   rš   © r`   rP   r   r      sÍ   „ ò'kðR9) 3ð 9)¨3ó 9)ðv> Sð >¨Só >ð" ð "¨ó "ð0+ ð +¨ó +ð2 sð 2¨só 2ð2 3ð 2¨3ó 2ð- ð -¨ó -ð( cð ¨có ð¨ð °ó ð5¨ð 5°ó 5ór`   r   )Ú__doc__rG   r   rŸ   r`   rP   ú<module>r¡      s   ðñ  )ã 	÷Xò Xr`   