o
    
jA'                     @   s  d dl Z d dlZzd dlZW n ey Z zededZ[ww d dlmZ g dZe dZe dZ	dd Z
e
 \ZZd	ed
efddZddd eededd D Zddd eededd D ZeeeZd	ed
efddZeedZeedZe Zd	ed
efddZi ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=i d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_i d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddd
Ze dZdddddZ e dZ!e dZ"d	ed
efddZ#d	ed
efddZ$d	ed
efddZ%dS )    Nz0Japanese requires mecab-python3 and unidic-lite.	num2words(!  u   アァ/ a au   イィ/ i iu   イェ/ i eu   イャ/ y au
   ウゥ/ u:u   エェ/ e eu
   オォ/ o:u   カァ/ k a:u   キィ/ k i:u   クゥ/ k u:u   クャ/ ky au   クュ/ ky uu   クョ/ ky ou   ケェ/ k e:u   コォ/ k o:u   ガァ/ g a:u   ギィ/ g i:u   グゥ/ g u:u   グャ/ gy au   グュ/ gy uu   グョ/ gy ou   ゲェ/ g e:u   ゴォ/ g o:u   サァ/ s a:u   シィ/ sh i:u   スゥ/ s u:u   スャ/ sh au   スュ/ sh uu   スョ/ sh ou   セェ/ s e:u   ソォ/ s o:u   ザァ/ z a:u   ジィ/ j i:u   ズゥ/ z u:   ズャ/ zy a   ズュ/ zy u   ズョ/ zy ou   ゼェ/ z e:u   ゾォ/ z o:u   タァ/ t a:u   チィ/ ch i:u   ツァ/ ts au   ツィ/ ts iu   ツゥ/ ts u:u   ツャ/ ch au   ツュ/ ch uu   ツョ/ ch ou   ツェ/ ts eu   ツォ/ ts o   テェ/ t e:u   トォ/ t o:u   ダァ/ d a:u   ヂィ/ j i:u   ヅゥ/ d u:u   ヅャ/ zy au   ヅュ/ zy uu   ヅョ/ zy o   デェ/ d e:   ドォ/ d o:u   ナァ/ n a:u   ニィ/ n i:u   ヌゥ/ n u:u   ヌャ/ ny au   ヌュ/ ny uu   ヌョ/ ny ou   ネェ/ n e:u   ノォ/ n o:u   ハァ/ h a:u   ヒィ/ h i:u   フゥ/ f u:   フャ/ hy a   フュ/ hy u   フョ/ hy ou   ヘェ/ h e:u   ホォ/ h o:u   バァ/ b a:u   ビィ/ b i:u   ブゥ/ b u:r
   u   ブュ/ by ur   u   ベェ/ b e:u   ボォ/ b o:u   パァ/ p a:u   ピィ/ p i:u   プゥ/ p u:u   プャ/ py au   プュ/ py uu   プョ/ py ou   ペェ/ p e:u   ポォ/ p o:u   マァ/ m a:u   ミィ/ m i:u   ムゥ/ m u:u   ムャ/ my au   ムュ/ my uu   ムョ/ my ou   メェ/ m e:u   モォ/ m o:u   ヤァ/ y a:u   ユゥ/ y u:u   ユャ/ y a:u   ユュ/ y u:u   ユョ/ y o:u   ヨォ/ y o:u   ラァ/ r a:u   リィ/ r i:u   ルゥ/ r u:u   ルャ/ ry au   ルュ/ ry uu   ルョ/ ry ou   レェ/ r e:u   ロォ/ r o:u   ワァ/ w a:u
   ヲォ/ o:u   ディ/ d ir   u   デャ/ dy au   デュ/ dy uu   デョ/ dy ou   ティ/ t ir   u   テャ/ ty au   テュ/ ty uu   テョ/ ty ou   スィ/ s iu   ズァ/ z u au   ズィ/ z iu   ズゥ/ z ur   r   r   u   ズェ/ z eu   ズォ/ z ou   キャ/ ky au   キュ/ ky uu   キョ/ ky ou   シャ/ sh au   シュ/ sh uu   シェ/ sh eu   ショ/ sh ou   チャ/ ch au   チュ/ ch uu   チェ/ ch eu   チョ/ ch ou   トゥ/ t uu   トャ/ ty au   トュ/ ty uu   トョ/ ty ou   ドァ/ d o au   ドゥ/ d uu   ドャ/ dy au   ドュ/ dy uu   ドョ/ dy or	   u   ニャ/ ny au   ニュ/ ny uu   ニョ/ ny ou   ヒャ/ hy au   ヒュ/ hy uu   ヒョ/ hy ou   ミャ/ my au   ミュ/ my uu   ミョ/ my ou   リャ/ ry au   リュ/ ry uu   リョ/ ry ou   ギャ/ gy au   ギュ/ gy uu   ギョ/ gy ou   ヂェ/ j eu   ヂャ/ j au   ヂュ/ j uu   ヂョ/ j ou   ジェ/ j eu   ジャ/ j au   ジュ/ j uu   ジョ/ j ou   ビャ/ by au   ビュ/ by uu   ビョ/ by ou   ピャ/ py au   ピュ/ py uu   ピョ/ py ou   ウァ/ u au   ウィ/ w iu   ウェ/ w eu   ウォ/ w ou   ファ/ f au   フィ/ f iu   フゥ/ f ur
   r   r   u   フェ/ f eu   フォ/ f ou   ヴァ/ b au   ヴィ/ b iu   ヴェ/ b eu   ヴォ/ b ou   ヴュ/ by uu   ア/ au   イ/ iu   ウ/ uu   エ/ eu   オ/ ou   カ/ k au   キ/ k iu   ク/ k uu   ケ/ k eu   コ/ k ou   サ/ s au	   シ/ sh iu   ス/ s uu   セ/ s eu   ソ/ s ou   タ/ t au	   チ/ ch iu	   ツ/ ts uu   テ/ t eu   ト/ t ou   ナ/ n au   ニ/ n iu   ヌ/ n uu   ネ/ n eu   ノ/ n ou   ハ/ h au   ヒ/ h iu   フ/ f uu   ヘ/ h eu   ホ/ h ou   マ/ m au   ミ/ m iu   ム/ m uu   メ/ m eu   モ/ m ou   ラ/ r au   リ/ r iu   ル/ r uu   レ/ r eu   ロ/ r ou   ガ/ g au   ギ/ g iu   グ/ g uu   ゲ/ g eu   ゴ/ g ou   ザ/ z au   ジ/ j iu   ズ/ z uu   ゼ/ z eu   ゾ/ z ou   ダ/ d au   ヂ/ j iu   ヅ/ z uu   デ/ d eu   ド/ d ou   バ/ b au   ビ/ b iu   ブ/ b uu   ベ/ b eu   ボ/ b ou   パ/ p au   ピ/ p iu   プ/ p uu   ペ/ p eu   ポ/ p ou   ヤ/ y au   ユ/ y uu   ヨ/ y ou   ワ/ w au   ヰ/ iu   ヱ/ eu   ヲ/ ou   ン/ Nu   ッ/ qu   ヴ/ b uu   ー/:u   ァ/ au   ィ/ iu   ゥ/ uu   ェ/ e   ォ/ ou   ヮ/ w ar   u   、/ ,u   。/ .u   ！/ !u   ？/ ?u   ・/ ,z:+z[^ a-zA-Z:,.?]c                      s$   dd t D  t fdddD S )Nc                 S   s   g | ]	}t |d qS )/)tuplesplit).0x r   Y/home/kuhnn/.local/lib/python3.10/site-packages/TTS/tts/utils/text/japanese/phonemizer.py
<listcomp>:  s    z _makerulemap.<locals>.<listcomp>c                 3   s"    | ]  fd dD V  qdS )c                    s"   i | ]\}}t | kr||qS r   )len)r   kvir   r   
<dictcomp>;  s   " z*_makerulemap.<locals>.<genexpr>.<dictcomp>Nr   )r   lr   r   	<genexpr>;  s     z_makerulemap.<locals>.<genexpr>)      )
_CONVRULESr   r   r   r   r   _makerulemap9  s   r"   textreturnc                 C   s   |   } d}| rLt| dkr&t| dd }|dur&| dd } ||7 }qt| d }|dur<| dd } ||7 }q|d| d  7 }| dd } | std|}|dd S )z"Convert katakana text to phonemes. r    Nr   r    :)stripr   	_RULEMAP2get	_RULEMAP1	_COLON_RXsub)r#   resr   r   r   r   kata2phonemeA  s&   r/   r%   c                 c       | ]}t |V  qd S Nchrr   chr   r   r   r   W      r   u   ァu   ンr   c                 c   r0   r1   r2   r4   r   r   r   r   X  r6   u   ぁu   んc                 C   s   |  t} | ddS )Nu   う゛u   ヴ)	translate_HIRA2KATATRANSreplacer#   r   r   r   	hira2kata\  s   
r;   u   ・、。？！u#   「」『』―（）［］[]　…c                 C   s   t | }g }|dD ]<}|dkr n5|d}|d |d }}|r*|| q|tv r4|| q|dv r>|d q|tv rCq|| qtd|S )	N
EOS	r   r   )u   っ   ッr?   r%   )_TAGGERparser   append_SYMBOL_TOKENS_NO_YOMI_TOKENSr;   join)r#   parsedr.   linepartswordyomir   r   r   	text2kataf  s"   

rK   #u   シャープ%u   パーセント&u	   アンド+u	   プラス-u   マイナスr'   u	   コロン;u   セミコロン<u	   小なり=u   イコール>u	   大なり@u	   アットau   エーbu   ビーcu   シーdu	   ディーeu   イーfu   エフgu   ジーhu	   エイチr   u   アイju	   ジェーr   u   ケーr   u   エルmu   エムnu   エヌou   オーpu   ピーqu	   キューru	   アールsu   エスtu	   ティーuu   ユーr   u   ブイwu   ダブリューr   u   エックスyu   ワイzu	   ゼット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   カイu	   プサイu	   オメガ)
u   οu   πu   ρu   σu   τu   υu   φu   χu   ψu   ωz[0-9]{1,3}(,[0-9]{3})+u   ドルu   円u	   ポンドu	   ユーロ)$   ¥   £u   €u   ([$¥£€])([0-9.]*[0-9])z[0-9]+(\.[0-9]+)?c                 C   s4   t dd | }tdd |}tdd |}|S )Nc                 S   s   | d  ddS )Nr   ,r%   )r9   r_   r   r   r   <lambda>      z3japanese_convert_numbers_to_words.<locals>.<lambda>c                 S   s   | d t | d | d  S )Nr    r   )_CURRENCY_MAPr*   ro   r   r   r   rp     s    c                 S   s   t | d ddS )Nr   ja)langr   ro   r   r   r   rp     rq   )_NUMBER_WITH_SEPARATOR_RXr-   _CURRENCY_RX
_NUMBER_RXr#   r.   r   r   r   !japanese_convert_numbers_to_words  s   ry   c                 C   s   d dd |  D S )Nr%   c                 S   s   g | ]}t ||qS r   )_ALPHASYMBOL_YOMIr*   r4   r   r   r   r     s    z;japanese_convert_alpha_symbols_to_words.<locals>.<listcomp>)rE   lowerr:   r   r   r   'japanese_convert_alpha_symbols_to_words  s   r|   c                 C   s8   t d| }t|}t|}t|}t|}|ddS )z"Convert Japanese text to phonemes.NFKCr&   r%   )unicodedata	normalizery   r|   rK   r/   r9   rx   r   r   r   japanese_text_to_phonemes  s   r   )&rer~   MeCabImportErrorrZ   r   r!   compiler,   
_REJECT_RXr"   r+   r)   strr/   rE   rangeord	_KATAKANA	_HIRAGANA	maketransr8   r;   setlistrC   rD   Taggerr@   rK   rz   ru   rr   rv   rw   ry   r|   r   r   r   r   r   <module>   s$  
  
*

&&	
 !"#$%&'()*+,-./01234
A

