o �J�h�'�@s�ddlmZmZmZddlZddlZddlmZm Z ddl m Z Gdd�de �Z idd�d d �d d �d d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�id)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH�dIdJ��idKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdX�dYdZ�d[d\�d]d^�d_d`�dadb�dcdd�dedf�dgdh�didj�dkdl��idmdn�dodp�dqdr�dsdt�dudv�dwdx�dydz�d{d|�d}d~�dd��d�d��d�d��d�d��d�d��d�d��d�d��d�d���id�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���id�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ғ�id�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���id�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��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/�d0��d1�d2��d3�d4��d5�d6��d7�d8��i�d9�d:��d;�d<��d=�d>��d?�d@��dA�dB��dC�dD��dE�dF��dG�dH��dI�dJ��dK�dL��dM�dN��dO�dP��dQ�dR��dS�dT��dU�dV��dW�dX��dY�dZ��i�d[�d\��d]�d^��d_�d`��da�db��dc�dd��de�df��dg�dh��di�dj��dk�dl��dm�dn��do�dp��dq�dr��ds�dt��du�dv��dw�dx��dy�dz��d{�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���Z dS(��)� AutoTokenizer�AutoModelForSeq2SeqLM�pipelineN)�TRANSLATION_OUTPUT_DIR�NLLB_MODELS_DIR)�TranslationBasec speZdZeefdedef�fdd� Zdedefdd�Ze � �fd ed ed ed e j fd d�Z d efdd�Z �Z S)� NLLBInference� model_dir� output_dircsFt�j||d�d|_gd�|_tt���|_tt���|_d|_ dS)N)r r )zfacebook/nllb-200-3.3Bzfacebook/nllb-200-1.3Bz facebook/nllb-200-distilled-600M) �super�__init__� tokenizer�available_models�list�NLLB_AVAILABLE_LANGS�keys�available_source_langs�available_target_langsr)�selfr r �� __class__��JC:\pinokio\api\whisper-webui.git\app\modules\translation\nllb_inference.pyr s�  zNLLBInference.__init__�text� max_lengthcCs|j||d�}|ddS)N)rr�translation_text)r)rrr�resultrrr� translates � zNLLBInference.translate� model_size�src_lang�tgt_lang�progresscCs�dtdtfdd�}||�}||�}||jks|jdurGtd�|ddd�||_|�|j�}tj||j|d �|_tj|t j � |jd �|d �|_ t d |j|j |||jd �|_ dS) N�lang�returncSs<|tvrt|S|t��vrtd|�dtt�������|S)Nz Language 'z ' is not supported. Use one of: )r�values� ValueErrorrr)r"rrr�validate_language(s  z5NLLBInference.update_model.<locals>.validate_languagez Initializing NLLB Model.. rzInitializing NLLB Model..)�desc)�pretrained_model_name_or_path� cache_dir�local_files_only� tokenizers� translation)�modelr rr �device)�str�current_model_sizer-�print�is_model_existsr�from_pretrainedr r�os�path�joinr rr.)rrrr r!r&r*rrr� update_model"s.  �� �zNLLBInference.update_modelcCs�d}|�d�\}}||}tj�|j|�}tj�|�r"t�|�r"dSt�|j�D]}||vs2||vr@t�tj�|j|��r@dSq(dS)z2Check if model exists or not (Only facebook model)zmodels--facebook--�/TF)�splitr4r5r6r �exists�listdir)rr�prefix�_idZmodel_size_nameZmodel_dir_nameZmodel_dir_pathrrrr2Es��zNLLBInference.is_model_exists)�__name__� __module__� __qualname__rrr/r �intr�gr�Progressr7r2� __classcell__rrrrr s4���� ����� �#�rzAcehnese (Arabic script)Zace_ArabzAcehnese (Latin script)Zace_LatnzMesopotamian ArabicZacm_ArabuTa’izzi-Adeni ArabicZacq_ArabzTunisian ArabicZaeb_ArabZ AfrikaansZafr_LatnzSouth Levantine ArabicZajp_ArabZAkanZaka_LatnZAmharicZamh_EthizNorth Levantine ArabicZapc_ArabzModern Standard ArabicZarb_Arabz"Modern Standard Arabic (Romanized)Zarb_Latnz Najdi ArabicZars_ArabzMoroccan ArabicZary_ArabzEgyptian ArabicZarz_ArabZAssameseZasm_BengZAsturianZast_LatnZAwadhiZawa_DevazCentral AymaraZayr_LatnzSouth AzerbaijaniZazb_ArabzNorth AzerbaijaniZazj_LatnZBashkirZbak_CyrlZBambaraZbam_Latn�BalineseZban_LatnZ BelarusianZbel_CyrlZBembaZbem_Latn�BengaliZben_BengZBhojpuriZbho_DevazBanjar (Arabic script)Zbjn_ArabzBanjar (Latin script)Zbjn_LatnzStandard TibetanZbod_TibtZBosnianZbos_Latn�BugineseZbug_Latn� BulgarianZbul_Cyrl�CatalanZcat_LatnZCebuanoZceb_Latn�CzechZces_LatnZChokweZcjk_LatnzCentral KurdishZckb_Arabz Crimean TatarZcrh_LatnZWelshZcym_Latn�DanishZdan_Latn�GermanZdeu_LatnzSouthwestern DinkaZdik_LatnZDyulaZdyu_LatnZDzongkhaZdzo_Tibt�GreekZell_Grek�English�eng_LatnZ EsperantoZepo_Latn�EstonianZest_LatnZBasqueZeus_LatnZEweZewe_LatnZFaroeseZfao_LatnZFijianZfij_Latn�FinnishZfin_LatnZFonZfon_Latn�FrenchZfra_LatnZFriulianZfur_LatnzNigerian FulfuldeZfuv_LatnzScottish GaelicZgla_LatnZIrishZgle_LatnZGalicianZglg_LatnZGuaraniZgrn_Latn�GujaratiZguj_GujrzHaitian CreoleZhat_LatnZHausaZhau_Latn�HebrewZheb_Hebr�HindiZhin_DevaZ ChhattisgarhiZhne_Deva�CroatianZhrv_Latn� HungarianZhun_Latn�ArmenianZhye_ArmnZIgboZibo_LatnZIlocanoZilo_Latn� IndonesianZind_LatnZ IcelandicZisl_Latn�ItalianZita_Latn�JavaneseZjav_Latn�JapaneseZjpn_JpanZKabyleZkab_LatnZJingphoZkac_LatnZKambaZkam_Latn�KannadaZkan_KndazKashmiri (Arabic script)Zkas_ArabzKashmiri (Devanagari script)Zkas_Deva�GeorgianZkat_GeorzCentral Kanuri (Arabic script)Zknc_ArabzCentral Kanuri (Latin script)Zknc_Latn�KazakhZkaz_CyrluKabiyèZkbp_LatnZ KabuverdianuZkea_Latn�KhmerZkhm_KhmrZKikuyuZkik_LatnZ KinyarwandaZkin_LatnZKyrgyzZkir_CyrlZKimbunduZkmb_LatnzNorthern KurdishZkmr_LatnZKikongoZkon_Latn�KoreanZkor_Hang�LaoZlao_LaooZLigurianZlij_LatnZ LimburgishZlim_LatnZLingalaZlin_Latn� LithuanianZlit_LatnZLombardZlmo_LatnZ LatgalianZltg_LatnZ LuxembourgishZltz_Latnz Luba-KasaiZlua_LatnZGandaZlug_LatnZLuoZluo_LatnZMizoZlus_LatnzStandard LatvianZlvs_LatnZMagahiZmag_DevaZMaithiliZmai_Deva� MalayalamZmal_MlymZMarathiZmar_DevazMinangkabau (Arabic script)Zmin_ArabzMinangkabau (Latin script)Zmin_LatnZ MacedonianZmkd_CyrlzPlateau MalagasyZplt_LatnZMalteseZmlt_LatnzMeitei (Bengali script)Zmni_BengzHalh MongolianZkhk_CyrlZMossiZmos_LatnZMaoriZmri_LatnZBurmeseZmya_Mymr�DutchZnld_LatnzNorwegian NynorskZnno_LatnuNorwegian BokmålZnob_LatnZNepaliZnpi_DevazNorthern SothoZnso_LatnZNuerZnus_LatnZNyanjaZnya_LatnZOccitanZoci_LatnzWest Central OromoZgaz_LatnZOdiaZory_OryaZ PangasinanZpag_LatnzEastern PanjabiZpan_GuruZ PapiamentoZpap_LatnzWestern PersianZpes_Arab�PolishZpol_Latn� PortugueseZpor_LatnZDariZprs_ArabzSouthern PashtoZpbt_ArabzAyacucho QuechuaZquy_Latn�RomanianZron_LatnZRundiZrun_Latn�RussianZrus_CyrlZSangoZsag_LatnZSanskritZsan_DevaZSantaliZsat_OlckZSicilianZscn_LatnZShanZshn_Mymr�SinhalaZsin_Sinh�SlovakZslk_LatnZ SlovenianZslv_LatnZSamoanZsmo_LatnZShonaZsna_LatnZSindhiZsnd_ArabZSomaliZsom_LatnzSouthern SothoZsot_Latn�SpanishZspa_Latnz Tosk AlbanianZals_LatnZ SardinianZsrd_Latn�SerbianZsrp_CyrlZSwatiZssw_Latn� SundaneseZsun_Latn�SwedishZswe_LatnZSwahiliZswh_LatnZSilesianZszl_Latn�TamilZtam_TamlZTatarZtat_Cyrl�TeluguZtel_TeluZTajikZtgk_Cyrl�TagalogZtgl_Latn�ThaiZtha_ThaiZTigrinyaZtir_EthizTamasheq (Latin script)Ztaq_LatnzTamasheq (Tifinagh script)Ztaq_Tfngz Tok PisinZtpi_LatnZTswanaZtsn_LatnZTsongaZtso_LatnZTurkmenZtuk_LatnZTumbukaZtum_Latn�TurkishZtur_LatnZTwiZtwi_LatnzCentral Atlas TamazightZtzm_TfngZUyghurZuig_Arab� UkrainianZukr_CyrlZUmbunduZumb_LatnZUrduZurd_ArabzNorthern UzbekZuzn_LatnZVenetianZvec_Latn� VietnameseZvie_LatnZWarayZwar_LatnZWolofZwol_LatnZXhosaZxho_LatnzEastern YiddishZydd_HebrZYorubaZyor_Latnz Yue ChineseZyue_HantzChinese (Simplified)Zzho_HanszChinese (Traditional)Zzho_HantzStandard MalayZzsm_Latn�ZuluZzul_Latn)� transformersrrr�gradiorBr4�modules.utils.pathsrrZ$modules.translation.translation_baserrrrrrr�<module>sr L�������� � � � � ������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~������������������ �� �� �� �� �������������������������������������� ��!��"��#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��@��A��B��C��D��E��F��G��H��I��J��K��L��M� �
Memory