o
    }o™igˆ  ã                   @   s  d dl Z d dlZd dlmZmZmZmZ d dlZd dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( dgZ)G dd„ deeƒZ*dS )é    N)ÚDictÚListÚOptionalÚUnion)Ú
DictConfigÚ
ListConfigÚ	OmegaConfÚ	open_dict)Úaudio_to_text_dataset)Ú_AudioTextDataset)ÚAudioToBPEDALIDataset)ÚLhotseSpeechToTextBpeDataset)ÚCTCLoss)ÚWER)ÚEncDecCTCModel)ÚASRBPEMixin)ÚCTCBPEDecodingÚCTCBPEDecodingConfig)Úget_semi_sorted_batch_sampler)Ú!get_lhotse_dataloader_from_config)ÚPretrainedModelInfo)ÚloggingÚmodel_utilsÚEncDecCTCModelBPEc                       sœ   e Zd ZdZddef‡ fdd„Zdee fdd„Zded	d
fdd„Z		dde
eef dedee fdd„Zddedefdd„Zed	ee fdd„ƒZ‡  ZS )r   z9Encoder decoder CTC-based models with Byte Pair Encoding.NÚcfgc                    sh  t  |¡}t  |¡}d|vrtdƒ‚|  |j¡ | jj ¡ }t|ƒ | jdkr/t	|ƒ|j
_n
t	t| ¡ ƒƒ|j
_W d   ƒ n1 sCw   Y  |j
d }|dk rct d |t|ƒ¡¡ t|ƒ|j
d< tƒ j||d | j dd ¡}|d u r”t t¡}t| jƒ || j_W d   ƒ n1 sw   Y  t| jj| jd	| _t| j| j d
d¡d| j dd¡d| _d S )NÚ	tokenizerz:`cfg` must have `tokenizer` config to create a tokenizer !ÚaggÚnum_classesé   zP
Replacing placeholder number of classes ({}) with actual number of classes - {})r   ÚtrainerÚdecoding)r   Úuse_cerFTÚlog_prediction)r    r!   Údist_sync_on_stepr"   )r   Ú#convert_model_config_to_dict_configÚmaybe_update_config_versionÚ
ValueErrorÚ_setup_tokenizerr   Ú	get_vocabr	   Útokenizer_typer   ÚdecoderÚ
vocabularyÚlistÚkeysr   ÚinfoÚformatÚlenÚsuperÚ__init__r   Úgetr   Ú
structuredr   r    r   r   Ú_cfgÚwer)Úselfr   r   r+   r   Údecoding_cfg©Ú	__class__© ú^/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/asr/models/ctc_bpe_models.pyr2   *   sD   



€û
ÿÿ

ÿüzEncDecCTCModelBPE.__init__Úconfigc                 C   sˆ  |  d¡r0t||  dd¡s| jn|  d¡|  dd¡s| jn|  d¡t| j|  dd¡d| jdS tj|| j| j| j| j| j	  dd ¡d	}|d u rJd S t
|tƒrQ|S |d
 }t
|tjjjƒr_d}t|dƒrh|j}nt|jd dƒrw|jd j}n	|jd jd j}d }|  dd¡r¦t
|tƒs–tdt|ƒ› ƒ‚t| ||ƒ}d |d< d|d< d}tjjj||d |d ||  dd¡||  dd¡|  dd¡d	S )NÚ
use_lhotseÚdo_transcribeFÚglobal_rankÚ
world_size)r   Úreturn_cuts)r@   rA   Údatasetr   Úpreprocessor)r=   Ú
local_rankr@   rA   r   Úpreprocessor_cfgÚshuffleÚ
collate_fnr   Úuse_semi_sorted_batchingzmSemi Sorted Batch sampler can be used with AudioToCharDataset or AudioToBPEDataset but found dataset of type Ú
batch_sizeÚ	drop_lastÚnum_workersÚ
pin_memory)	rC   rJ   ÚsamplerÚbatch_samplerrH   rK   rG   rL   rM   )r3   r   r@   rA   r   r   r
   Ú)get_audio_to_text_bpe_dataset_from_configrE   r   Ú
isinstancer   ÚtorchÚutilsÚdataÚIterableDatasetÚhasattrrH   Údatasetsr   ÚRuntimeErrorÚtyper   Ú
DataLoader)r7   r=   rC   rG   rH   rO   r;   r;   r<   Ú_setup_dataloader_from_config`   sl   

þõú	


ÿÿ


÷z/EncDecCTCModelBPE._setup_dataloader_from_configÚreturnztorch.utils.data.DataLoaderc                 C   s²   d|v r|d }|d }nt j |d d¡}t|d t|d ƒƒ}|| jj|d| dt|t  ¡ d ƒ¡d	| d
d¡| j	j
 dd¡dœ}| d¡rO| d¡|d< | jt|ƒd}|S )a  
        Setup function for a temporary data loader which wraps the provided audio file.

        Args:
            config: A python dictionary which contains the following keys:
            paths2audio_files: (a list) of paths to audio files. The files should be relatively short fragments.                 Recommended length per file is between 5 and 25 seconds.
            batch_size: (int) batch size to use during inference.                 Bigger will result in better throughput performance but would use more memory.
            temp_dir: (str) A temporary directory where the audio manifest is temporarily
                stored.
            num_workers: (int) number of workers. Depends of the batch_size and machine.                 0 - only the main process will load batches, 1 - one worker (not main process)

        Returns:
            A pytorch DataLoader for the given audio file(s).
        Úmanifest_filepathrJ   Útemp_dirzmanifest.jsonÚpaths2audio_filesFrL   r   TÚchannel_selectorNÚuse_start_end_token)r]   Úsample_raterJ   rG   rL   rM   r`   ra   Ú	augmentor)r=   )ÚosÚpathÚjoinÚminr0   rD   Ú_sample_rater3   Ú	cpu_countr   Úvalidation_dsr[   r   )r7   r=   r]   rJ   Ú	dl_configÚtemporary_datalayerr;   r;   r<   Ú_setup_transcribe_dataloader¦   s$   

ø
z.EncDecCTCModelBPE._setup_transcribe_dataloaderÚnew_tokenizer_dirÚnew_tokenizer_typer8   c           
      C   s  t |tƒr|dkr|}n	td|› ƒ‚d}|dur|}ntj |¡s)td|› ƒ‚| ¡ dvr3tdƒ‚t 	||dœ¡}|  
|¡ | jj ¡ }t | j ¡ ¡}| jdkrYt|ƒ|_n	tt| ¡ ƒƒ|_|d }t d	 |t|ƒ¡¡ t|ƒ|d< | `t |¡| _| `t| jjd
 d| j  dd¡d| _|du rš| j!j"}t #t$¡}	t 	t %|	¡¡}	t &|	|¡}t'|| jd| _"t(| j"| j  dd¡| j  dd¡dd| _)t*| j!jƒ || j_W d  ƒ n1 sÞw   Y  t*| j!j"ƒ || j_"W d  ƒ n1 søw   Y  t d| jj› d¡ dS )a¡  
        Changes vocabulary of the tokenizer used during CTC decoding process.
        Use this method when fine-tuning on from pre-trained model.
        This method changes only decoder and leaves encoder and pre-processing modules unchanged.
        For example, you would use it if you want to use pretrained encoder when fine-tuning on a
        data in another language, or when you'd need model to learn capitalization, punctuation
        and/or special characters.

        Args:
            new_tokenizer_dir: Directory path to tokenizer or a config for a new tokenizer
                (if the tokenizer type is `agg`)
            new_tokenizer_type: Either `agg`, `bpe` or `wpe`. `bpe` is used for SentencePiece tokenizers,
                whereas `wpe` is used for `BertTokenizer`.
            new_tokenizer_cfg: A config for the new tokenizer. if provided, pre-empts the dir and type

        Returns: None

        r   zxNew tokenizer dir should be a string unless the tokenizer is `agg`, but this tokenizer                         type is: NzDNew tokenizer dir must be non-empty path to a directory. But I got: )ÚbpeÚwpez0New tokenizer type must be either `bpe` or `wpe`)ÚdirrY   r   zE
Replacing old number of classes ({}) with new number of classes - {}r   TÚctc_reductionÚ
mean_batch)r   Úzero_infinityÚ	reduction©r8   r   r!   Fr"   ©r    r!   r"   r#   zChanged tokenizer to z vocabulary.)+rQ   r   r&   rd   re   ÚisdirÚNotADirectoryErrorÚlowerr   Úcreater'   r   r(   ÚcopyÚdeepcopyr*   Úto_config_dictr)   r   r+   r,   r-   r   r.   r/   r0   r   Úfrom_config_dictÚlossr   Únum_classes_with_blankr5   r3   r   r    r4   r   Úto_containerÚmerger   r   r6   r	   )
r7   rn   ro   r8   Únew_tokenizer_cfgÚtokenizer_cfgr+   Údecoder_configÚdecoder_num_classesÚdecoding_clsr;   r;   r<   Úchange_vocabularyÑ   st   
ÿÿÿ

ÿÿ
ý
ü
ÿ
ÿz#EncDecCTCModelBPE.change_vocabularyTÚverbosec                 C   sÖ   |du rt  d¡ | jj}t t¡}t t |¡¡}t 	||¡}t
|| jd| _t| j| jj| jjdd| _| dd¡| j_t| jjƒ || j_W d  ƒ n1 sSw   Y  |rit  dt | jj¡› ¡ dS dS )	a`  
        Changes decoding strategy used during CTC decoding process.

        Args:
            decoding_cfg: A config for the decoder, which is optional. If the decoding type
                needs to be changed (from say Greedy to Beam decoding etc), the config can be passed here.
            verbose: Whether to print the new config or not.
        NzONo `decoding_cfg` passed when changing decoding strategy, using internal configrw   Trx   Útemperatureg      ð?zChanged decoding strategy to 
)r   r.   r   r    r   r4   r   r|   rƒ   r„   r   r   r   r6   r!   r"   r3   r*   rŒ   r	   Úto_yaml)r7   r8   r‹   r‰   r;   r;   r<   Úchange_decoding_strategy>  s.   	

þü
ÿÿz*EncDecCTCModelBPE.change_decoding_strategyc                 C   s  g }t dddd}| |¡ t dddd}| |¡ t dd	d
d}| |¡ t dddd}| |¡ t dddd}| |¡ t dddd}| |¡ t dddd}| |¡ t dddd}| |¡ t dddd}| |¡ t dddd}| |¡ t dd d!d}| |¡ t d"d#d$d}| |¡ t d%d&d'd}| |¡ t d(d)d*d}| |¡ t d+d,d-d}| |¡ t d.d/d0d}| |¡ t d1d2d3d}| |¡ t d4d5d6d}| |¡ t d7d8d9d}| |¡ t d:d;d<d}| |¡ t d=d>d?d}| |¡ t d@dAdBd}| |¡ t dCdDdEd}| |¡ t dFdGdHd}| |¡ t dIdJdKd}| |¡ t dLdJdMd}| |¡ t dNdOdPd}| |¡ t dQdRdSd}| |¡ t dTdUdVd}| |¡ t dWdXdYd}| |¡ t dZd[d\d}| |¡ t d]d^d_d}| |¡ t d`dadbd}| |¡ t dcddded}| |¡ t dfdgdhd}| |¡ t didjdkd}| |¡ t dldmdnd}| |¡ t dodpdqd}| |¡ t drdsdtd}| |¡ t dudvdwd}| |¡ t dxdydzd}| |¡ t d{d|d}d}| |¡ t d~dd€d}| |¡ |S )zÁ
        This method returns a list of pre-trained model which can be instantiated directly from NVIDIA's NGC cloud.

        Returns:
            List of available pre-trained models.
        Ústt_en_citrinet_256zpFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_citrinet_256zuhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_256/versions/1.0.0rc1/files/stt_en_citrinet_256.nemo)Úpretrained_model_nameÚdescriptionÚlocationÚstt_en_citrinet_512zpFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_citrinet_512zuhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_512/versions/1.0.0rc1/files/stt_en_citrinet_512.nemoÚstt_en_citrinet_1024zqFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_citrinet_1024zwhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_1024/versions/1.0.0rc1/files/stt_en_citrinet_1024.nemoÚstt_en_citrinet_256_gamma_0_25z{For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:
emo:stt_en_citrinet_256_gamma_0_25zˆhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_256_gamma_0_25/versions/1.0.0/files/stt_en_citrinet_256_gamma_0_25.nemoÚstt_en_citrinet_512_gamma_0_25z{For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_citrinet_512_gamma_0_25zˆhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_512_gamma_0_25/versions/1.0.0/files/stt_en_citrinet_512_gamma_0_25.nemoÚstt_en_citrinet_1024_gamma_0_25z|For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_citrinet_1024_gamma_0_25zŠhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_citrinet_1024_gamma_0_25/versions/1.0.0/files/stt_en_citrinet_1024_gamma_0_25.nemoÚstt_es_citrinet_512zpFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_es_citrinet_512zrhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_es_citrinet_512/versions/1.0.0/files/stt_es_citrinet_512.nemoÚstt_de_citrinet_1024zqFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_de_citrinet_1024zthttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_de_citrinet_1024/versions/1.5.0/files/stt_de_citrinet_1024.nemoÚstt_fr_citrinet_1024_gamma_0_25z‡For details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_fr_citrinet_1024_gamma_0_25zˆhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_fr_citrinet_1024_gamma_0_25/versions/1.5/files/stt_fr_citrinet_1024_gamma_0_25.nemoÚ)stt_fr_no_hyphen_citrinet_1024_gamma_0_25z’https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_fr_citrinet_1024_gamma_0_25/versions/1.5/files/stt_fr_no_hyphen_citrinet_1024_gamma_0_25.nemoÚstt_es_citrinet_1024_gamma_0_25z|For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_es_citrinet_1024_gamma_0_25zŠhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_es_citrinet_1024_gamma_0_25/versions/1.8.0/files/stt_es_citrinet_1024_gamma_0_25.nemoÚstt_en_conformer_ctc_smallzwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_smallz€https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_small/versions/1.6.0/files/stt_en_conformer_ctc_small.nemoÚstt_en_conformer_ctc_mediumzxFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_mediumz‚https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_medium/versions/1.6.0/files/stt_en_conformer_ctc_medium.nemoÚstt_en_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_large/versions/1.10.0/files/stt_en_conformer_ctc_large.nemoÚstt_en_conformer_ctc_xlargezxFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_xlargezƒhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_xlarge/versions/1.10.0/files/stt_en_conformer_ctc_xlarge.nemoÚ"stt_en_squeezeformer_ctc_xsmall_lszŠFor details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_xsmall_lsz‘https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_xsmall_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_xsmall_ls.nemoÚ!stt_en_squeezeformer_ctc_small_lsz‰For details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_small_lszhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_small_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_small_ls.nemoÚ(stt_en_squeezeformer_ctc_small_medium_lszFor details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_small_medium_lszhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_small_medium_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_small_medium_ls.nemoÚ"stt_en_squeezeformer_ctc_medium_lszŠFor details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_medium_lsz‘https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_medium_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_medium_ls.nemoÚ(stt_en_squeezeformer_ctc_medium_large_lszFor details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_medium_large_lszhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_medium_large_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_medium_large_ls.nemoÚ!stt_en_squeezeformer_ctc_large_lsz‰For details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_squeezeformer_ctc_large_lszhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_squeezeformer_ctc_large_ls/versions/1.13.0/files/stt_en_squeezeformer_ctc_large_ls.nemoÚstt_en_conformer_ctc_small_lszzFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_small_lsz†https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_small_ls/versions/1.0.0/files/stt_en_conformer_ctc_small_ls.nemoÚstt_en_conformer_ctc_medium_lsz{For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_medium_lszˆhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_medium_ls/versions/1.0.0/files/stt_en_conformer_ctc_medium_ls.nemoÚstt_en_conformer_ctc_large_lszzFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_large_lsz†https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_conformer_ctc_large_ls/versions/1.0.0/files/stt_en_conformer_ctc_large_ls.nemoÚstt_fr_conformer_ctc_largez‚For details about this model, please visit https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_fr_conformer_ctc_largez€https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_fr_conformer_ctc_large/versions/1.5.1/files/stt_fr_conformer_ctc_large.nemoÚ$stt_fr_no_hyphen_conformer_ctc_largezŠhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_fr_conformer_ctc_large/versions/1.5.1/files/stt_fr_no_hyphen_conformer_ctc_large.nemoÚstt_de_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_de_conformer_ctc_largez€https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_de_conformer_ctc_large/versions/1.5.0/files/stt_de_conformer_ctc_large.nemoÚstt_es_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_es_conformer_ctc_largez€https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_es_conformer_ctc_large/versions/1.8.0/files/stt_es_conformer_ctc_large.nemoÚstt_hi_conformer_ctc_mediumzxFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_hi_conformer_ctc_mediumz‚https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_hi_conformer_ctc_medium/versions/1.6.0/files/stt_hi_conformer_ctc_medium.nemoÚstt_mr_conformer_ctc_mediumzxFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_mr_conformer_ctc_mediumz‚https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_mr_conformer_ctc_medium/versions/1.6.0/files/stt_mr_conformer_ctc_medium.nemoÚstt_enes_conformer_ctc_largezyFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_largez„https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_enes_conformer_ctc_large/versions/1.0.0/files/stt_enes_conformer_ctc_large.nemoÚstt_ca_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_ca_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_ca_conformer_ctc_large/versions/1.11.0/files/stt_ca_conformer_ctc_large.nemoÚstt_rw_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_rw_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_rw_conformer_ctc_large/versions/1.11.0/files/stt_rw_conformer_ctc_large.nemoÚ#stt_enes_conformer_ctc_large_codeswz€For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_large_codeswz’https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_enes_conformer_ctc_large_codesw/versions/1.0.0/files/stt_enes_conformer_ctc_large_codesw.nemoÚstt_be_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_be_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_be_conformer_ctc_large/versions/1.12.0/files/stt_be_conformer_ctc_large.nemoÚstt_hr_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_hr_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_hr_conformer_ctc_large/versions/1.11.0/files/stt_hr_conformer_ctc_large.nemoÚstt_it_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_it_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_it_conformer_ctc_large/versions/1.13.0/files/stt_it_conformer_ctc_large.nemoÚstt_ru_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_ru_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_ru_conformer_ctc_large/versions/1.13.0/files/stt_ru_conformer_ctc_large.nemoÚstt_eo_conformer_ctc_largezwFor details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_eo_conformer_ctc_largezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_eo_conformer_ctc_large/versions/1.14.0/files/stt_eo_conformer_ctc_large.nemoÚstt_en_fastconformer_ctc_largez{For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_fastconformer_ctc_largezˆhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_fastconformer_ctc_large/versions/1.0.0/files/stt_en_fastconformer_ctc_large.nemoÚ!stt_en_fastconformer_ctc_large_lsz~For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_fastconformer_ctc_large_lszŽhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_fastconformer_ctc_large_ls/versions/1.0.0/files/stt_en_fastconformer_ctc_large_ls.nemoÚstt_en_fastconformer_ctc_xlargez|For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_fastconformer_ctc_xlargez‹https://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_fastconformer_ctc_xlarge/versions/1.20.0/files/stt_en_fastconformer_ctc_xlarge.nemoÚ stt_en_fastconformer_ctc_xxlargez}For details about this model, please visit https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_fastconformer_ctc_xxlargezhttps://api.ngc.nvidia.com/v2/models/nvidia/nemo/stt_en_fastconformer_ctc_xxlarge/versions/1.20.1/files/stt_en_fastconformer_ctc_xxlarge.nemo)r   Úappend)ÚclsÚresultsÚmodelr;   r;   r<   Úlist_available_modelsf  s  ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
ý
z'EncDecCTCModelBPE.list_available_models)N)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r2   r   r   r[   rm   r   ÚstrrŠ   ÚboolrŽ   Úclassmethodr   r   rÁ   Ú__classcell__r;   r;   r9   r<   r   '   s     6F/ü
þý
üm()+r}   rd   Útypingr   r   r   r   rR   Ú	omegaconfr   r   r   r	   Únemo.collections.asr.datar
   Ú'nemo.collections.asr.data.audio_to_textr   Ú,nemo.collections.asr.data.audio_to_text_dalir   Ú.nemo.collections.asr.data.audio_to_text_lhotser   Únemo.collections.asr.losses.ctcr   Ú nemo.collections.asr.metrics.werr   Ú&nemo.collections.asr.models.ctc_modelsr   Ú!nemo.collections.asr.parts.mixinsr   Ú2nemo.collections.asr.parts.submodules.ctc_decodingr   r   Ú-nemo.collections.asr.parts.utils.asr_batchingr   Ú#nemo.collections.common.data.lhotser   Únemo.core.classes.commonr   Ú
nemo.utilsr   r   Ú__all__r   r;   r;   r;   r<   Ú<module>   s(   