o !ceJ@sddlZddlZddlZddlmZmZddlmZddlm Z ej e Z ddeej e dDZddlmZidd d d d d d d dddddd dd dd dddd ddddddddddddddddddddddddddd Ze Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zed-krdd.lmZd/ZeeZe eee\Z!Z"Z#eee#Z$e e!e"e#e$j%dSdS)0N) lazy_pinyinStyle) punctuation) ToneSandhicCs*i|]}|dd|ddqS) r)splitstrip).0liner "D:\Code\Bert-VITS2\text\chinese.py srzopencpop-strict.txtu:,u;u,u。.u!!u?? ·u、z...u…$u“'u”"u‘u’u(-)u)()u《u》u【u】[]u—u~~u「u」cCsb|dddd}tdddtD}|dd |}td d td d |}|S) Nu嗯u恩u呣u母|css|]}t|VqdSN)reZescape)r pr r r :sz&replace_punctuation..cSs t|Sr)rep_mapZgroup)xr r r <s z%replace_punctuation..z[^\u4e00-\u9fa5z]+)replacer compilejoinr#keyssubr)textpatternZ replaced_textr r r replace_punctuation8sr.cCsddt}ddt||D}t|\}}}t|t|ks$Jt|t|ks.Jdg|dg}dg|dg}dg|dg}|||fS)Nz (?<=[{0}])\s*r&cSsg|] }|dkr|qS)r&)r )r ir r r Gszg2p.._rr)formatr)rr r_g2psumlen)r,r-Z sentencesphonestonesword2phr r r g2pEs r9cCsXg}g}t|dtjd}t|dtjd}t||D]\}}||||q||fS)NT)Zneutral_tone_with_fiveZstyle)rrZINITIALSZ FINALS_TONE3zipappend)wordinitialsfinalsZ orig_initialsZ orig_finalscvr r r _get_initials_finalsQs  rAcCsg}g}g}|D]}tdd|}t|}g}g}t|}|D] \}} | dkr*q!t|\} } t|| | } || || q!t |g}t |g}t ||D]\} } | | }| | krn| t vscJ| g}d}|dnq| dd}| d}| |}|dvsJ| rdd d d }|| vr| ||}n-d d ddd}|| vr||}nddddd}|d| vr||d|dd}|t vsJ|||ft |d}|t|||7}|t|gt|7}qQq|||fS)Nz [a-zA-Z]+r&eng0rZ12345uiiuun)ZueiZiouZuenZyingZyiZyinZwu)ingr/inuZyueyw)r@rKr/rJr )r r+psgZlcut tone_modifierZpre_merge_for_modifyrAZ modified_toner;r4r:rr*pinyin_to_symbol_maprr5int)ZsegmentsZ phones_listZ tones_listr8ZsegZseg_cutr=r>r<posZ sub_initialsZ sub_finalsr?r@Z raw_pinyinZphoneZtoneZv_without_toneZpinyinZ v_rep_mapZpinyin_rep_mapZsingle_rep_mapr r r r3^st                 3r3cCs6td|}|D] }||t|d}qt|}|S)Nz\d+(?:\.?\d+)?r)r Zfindallr'cn2anZan2cnr.)r,ZnumbersZnumberr r r text_normalizes rUcCsddlm}|||S)Nr) chinese_bert)r,rVget_bert_feature)r,r8rVr r r rWs  rW__main__)rWue啊!但是《原神》是由,米哈\游自主, [研发]的一款全.新开放世界.冒险游戏)&osr rTZpypinyinrr text.symbolsrZtext.tone_sandhirpathdirname__file__Zcurrent_file_pathopenr) readlinesrQZ jieba.possegZpossegrOr#rPr.r9rAr3rUrW__name__Ztext.chinese_bertr,printr6r7r8bertshaper r r r s         "   M