§
    @Äj57  ã                   ób  — d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlZd dlZd dlmZ d dlmZmZmZ g Zd ej         ej        ej        ¦  «        j        ¦  «        z  Z ed	d
ez  ¦  «        Zd„ Z G d„ dej        j        ¦  «        Z  G d„ dej        j        ¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ dej        j        e"¦  «        Z$ G d„ de#¦  «        Z%e G d„ d¦  «        ¦   «         Z& e&d eed¬¦  «        dddd d!d"d#d$d%d¬&¦  «        Z'd'e'_(        dS )(é    N)ÚABCÚabstractmethod)Ú	dataclass)Úpartial)ÚCallableÚListÚTuple)Úmodule_utils)Úemformer_rnnt_baseÚRNNTÚRNNTBeamSearché(   é
   gš™™™™™©?c                 óà   — t          j        | | t          j        k             ¦  «        | | t          j        k    <   | | t          j        k             t          j        z  | | t          j        k    <   | S ©N)ÚtorchÚlogÚmathÚe©Úxs    úSC:\Projects\Historical\venv\Lib\site-packages\torchaudio/pipelines/rnnt_pipeline.pyÚ_piecewise_linear_logr      sJ   € Ý”I˜a ¥D¤F¢
œmÑ,Ô,€A€a�$Œ&‚j�MØ�q�DœF’{”^¥d¤fÑ,€A€a�4Œ6‚k�NØ€Hó    c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_FunctionalModulec                 óV   •— t          ¦   «                              ¦   «          || _        d S r   )ÚsuperÚ__init__Ú
functional)Úselfr    Ú	__class__s     €r   r   z_FunctionalModule.__init__   s$   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒˆˆr   c                 ó,   — |                       |¦  «        S r   )r    ©r!   Úinputs     r   Úforwardz_FunctionalModule.forward   s   € Ø�Š˜uÑ%Ô%Ð%r   ©Ú__name__Ú
__module__Ú__qualname__r   r&   Ú__classcell__©r"   s   @r   r   r      sG   ø€ € € € € ð%ð %ð %ð %ð %ð&ð &ð &ð &ð &ð &ð &r   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_GlobalStatsNormalizationc                 óš  •— t          ¦   «                              ¦   «          t          |¦  «        5 }t          j        |                     ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      dt          j        |d         ¦  «        ¦  «         |                      dt          j        |d         ¦  «        ¦  «         d S )NÚmeanÚ	invstddev)	r   r   ÚopenÚjsonÚloadsÚreadÚregister_bufferr   Útensor)r!   Úglobal_stats_pathÚfÚblobr"   s       €r   r   z"_GlobalStatsNormalization.__init__$   sâ   ø€ Ý‰Œ×ÒÑÔÐåÐ#Ñ$Ô$ð 	(¨Ý”:˜aŸfšf™hœhÑ'Ô'ˆDð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	×Ò˜V¥U¤\°$°v´,Ñ%?Ô%?Ñ@Ô@Ð@Ø×Ò˜[­%¬,°t¸KÔ7HÑ*IÔ*IÑJÔJÐJÐJÐJs   ±'A$Á$A(Á+A(c                 ó&   — || j         z
  | j        z  S r   )r0   r1   r$   s     r   r&   z!_GlobalStatsNormalization.forward-   s   € Ø˜œ	Ñ! T¤^Ñ3Ð3r   r'   r,   s   @r   r.   r.   #   sL   ø€ € € € € ðKð Kð Kð Kð Kð4ð 4ð 4ð 4ð 4ð 4ð 4r   r.   c                   ó\   — e Zd Zedej        deej        ej        f         fd„¦   «         ZdS )Ú_FeatureExtractorr%   Úreturnc                 ó   — dS )áX  Generates features and length output from the given input tensor.

        Args:
            input (torch.Tensor): input tensor.

        Returns:
            (torch.Tensor, torch.Tensor):
            torch.Tensor:
                Features, with shape `(length, *)`.
            torch.Tensor:
                Length, with shape `(1,)`.
        N© r$   s     r   Ú__call__z_FeatureExtractor.__call__2   ó   € € € r   N)r(   r)   r*   r   r   ÚTensorr	   rB   rA   r   r   r=   r=   1   sP   € € € € € Øð˜eœlð ¨u°U´\À5Ä<Ð5OÔ/Pð ð ð ñ „^ðð ð r   r=   c                   ó:   — e Zd Zedee         defd„¦   «         ZdS )Ú_TokenProcessorÚtokensr>   c                 ó   — dS )zÊDecodes given list of tokens to text sequence.

        Args:
            tokens (List[int]): list of tokens to decode.

        Returns:
            str:
                Decoded text sequence.
        NrA   )r!   rG   Úkwargss      r   rB   z_TokenProcessor.__call__C   rC   r   N)r(   r)   r*   r   r   ÚintÚstrrB   rA   r   r   rF   rF   B   sD   € € € € € Øð	˜t Cœyð 	°sð 	ð 	ð 	ñ „^ð	ð 	ð 	r   rF   c                   ó~   ‡ — e Zd ZdZdej        j        ddfˆ fd„Zdej        de	ej        ej        f         fd„Z
ˆ xZS )Ú_ModuleFeatureExtractorz›``torch.nn.Module``-based feature extraction pipeline.

    Args:
        pipeline (torch.nn.Module): module that implements feature extraction logic.
    Úpipeliner>   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S r   )r   r   rN   )r!   rN   r"   s     €r   r   z _ModuleFeatureExtractor.__init__W   s$   ø€ Ý‰Œ×ÒÑÔÐØ ˆŒˆˆr   r%   c                 ót   — |                       |¦  «        }t          j        |j        d         g¦  «        }||fS )r@   r   )rN   r   r7   Úshape)r!   r%   ÚfeaturesÚlengths       r   r&   z_ModuleFeatureExtractor.forward[   s9   € ð —=’= Ñ'Ô'ˆÝ”˜xœ~¨aÔ0Ð1Ñ2Ô2ˆØ˜ÐÐr   )r(   r)   r*   Ú__doc__r   ÚnnÚModuler   rD   r	   r&   r+   r,   s   @r   rM   rM   P   s‹   ø€ € € € € ðð ð! ¤¤ð !°Tð !ð !ð !ð !ð !ð !ð ˜Uœ\ð  ¨e°E´LÀ%Ä,Ð4NÔ.Oð  ð  ð  ð  ð  ð  ð  ð  r   rM   c                   óD   — e Zd ZdZdeddfd„Zd
dee         dedefd	„Z	dS )Ú_SentencePieceTokenProcessorztSentencePiece-model-based token processor.

    Args:
        sp_model_path (str): path to SentencePiece model.
    Úsp_model_pathr>   Nc                 ó(  — t          j        d¦  «        st          d¦  «        ‚dd l}|                     |¬¦  «        | _        | j                             ¦   «         | j                             ¦   «         | j                             ¦   «         h| _	        d S )NÚsentencepiecez2SentencePiece is not available. Please install it.r   )Ú
model_file)
r
   Úis_module_availableÚRuntimeErrorr[   ÚSentencePieceProcessorÚsp_modelÚunk_idÚeos_idÚpad_idÚpost_process_remove_list)r!   rY   Úspms      r   r   z%_SentencePieceTokenProcessor.__init__t   sŒ   € ÝÔ/°Ñ@Ô@ð 	UÝÐSÑTÔTÐTà#Ð#Ð#Ð#à×2Ò2¸mÐ2ÑLÔLˆŒàŒM× Ò Ñ"Ô"ØŒM× Ò Ñ"Ô"ØŒM× Ò Ñ"Ô"ð)
ˆÔ%Ð%Ð%r   TrG   Úlstripc                 óâ   ‡ — ˆ fd„|dd…         D ¦   «         }d                      ‰ j                             |¦  «        ¦  «                             dd¦  «        }|r|                     ¦   «         S |S )aX  Decodes given list of tokens to text sequence.

        Args:
            tokens (List[int]): list of tokens to decode.
            lstrip (bool, optional): if ``True``, returns text sequence with leading whitespace
                removed. (Default: ``True``).

        Returns:
            str:
                Decoded text sequence.
        c                 ó&   •— g | ]}|‰j         v¯|‘ŒS rA   )rd   )Ú.0Útoken_indexr!   s     €r   ú
<listcomp>z9_SentencePieceTokenProcessor.__call__.<locals>.<listcomp>�   s-   ø€ ð  
ð  
ð  
Ø'¸ÈDÔLiÐ9iÐ9iˆKÐ9iÐ9iÐ9ir   é   NÚ u   â–�ú )Újoinr`   Úid_to_pieceÚreplacerf   )r!   rG   rf   Úfiltered_hypo_tokensÚoutput_strings   `    r   rB   z%_SentencePieceTokenProcessor.__call__�   sŠ   ø€ ð 
ð  
ð  
ð  
Ø+1°!°"°"¬:ð 
ñ  
ô  
Ðð Ÿš ¤× 9Ò 9Ð:NÑ OÔ OÑPÔP×XÒXÐYaÐcfÑgÔgˆàð 	!Ø ×'Ò'Ñ)Ô)Ð)à Ð r   )T)
r(   r)   r*   rT   rK   r   r   rJ   ÚboolrB   rA   r   r   rX   rX   m   sr   € € € € € ðð ð
 cð 
¨dð 
ð 
ð 
ð 
ð!ð !˜t Cœyð !°$ð !À#ð !ð !ð !ð !ð !ð !r   rX   c                   ó¸  — e Zd ZU dZ G d„ de¦  «        Z G d„ de¦  «        Zee	d<   e
g ef         e	d<   ee	d<   ee	d	<   ee	d
<   ee	d<   ee	d<   ee	d<   ee	d<   ee	d<   ee	d<   ee	d<   defd„Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zdefd„Zdefd„Zdefd„Zdefd„ZdS )Ú
RNNTBundleu«  Dataclass that bundles components for performing automatic speech recognition (ASR, speech-to-text)
    inference with an RNN-T model.

    More specifically, the class provides methods that produce the featurization pipeline,
    decoder wrapping the specified RNN-T model, and output token post-processor that together
    constitute a complete end-to-end ASR inference pipeline that produces a text sequence
    given a raw waveform.

    It can support non-streaming (full-context) inference as well as streaming inference.

    Users should not directly instantiate objects of this class; rather, users should use the
    instances (representing pre-trained models) that exist within the module,
    e.g. :data:`torchaudio.pipelines.EMFORMER_RNNT_BASE_LIBRISPEECH`.

    Example
        >>> import torchaudio
        >>> from torchaudio.pipelines import EMFORMER_RNNT_BASE_LIBRISPEECH
        >>> import torch
        >>>
        >>> # Non-streaming inference.
        >>> # Build feature extractor, decoder with RNN-T model, and token processor.
        >>> feature_extractor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_feature_extractor()
        100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 3.81k/3.81k [00:00<00:00, 4.22MB/s]
        >>> decoder = EMFORMER_RNNT_BASE_LIBRISPEECH.get_decoder()
        Downloading: "https://download.pytorch.org/torchaudio/models/emformer_rnnt_base_librispeech.pt"
        100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 293M/293M [00:07<00:00, 42.1MB/s]
        >>> token_processor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_token_processor()
        100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 295k/295k [00:00<00:00, 25.4MB/s]
        >>>
        >>> # Instantiate LibriSpeech dataset; retrieve waveform for first sample.
        >>> dataset = torchaudio.datasets.LIBRISPEECH("/home/librispeech", url="test-clean")
        >>> waveform = next(iter(dataset))[0].squeeze()
        >>>
        >>> with torch.no_grad():
        >>>     # Produce mel-scale spectrogram features.
        >>>     features, length = feature_extractor(waveform)
        >>>
        >>>     # Generate top-10 hypotheses.
        >>>     hypotheses = decoder(features, length, 10)
        >>>
        >>> # For top hypothesis, convert predicted tokens to text.
        >>> text = token_processor(hypotheses[0][0])
        >>> print(text)
        he hoped there would be stew for dinner turnips and carrots and bruised potatoes and fat mutton pieces to [...]
        >>>
        >>>
        >>> # Streaming inference.
        >>> hop_length = EMFORMER_RNNT_BASE_LIBRISPEECH.hop_length
        >>> num_samples_segment = EMFORMER_RNNT_BASE_LIBRISPEECH.segment_length * hop_length
        >>> num_samples_segment_right_context = (
        >>>     num_samples_segment + EMFORMER_RNNT_BASE_LIBRISPEECH.right_context_length * hop_length
        >>> )
        >>>
        >>> # Build streaming inference feature extractor.
        >>> streaming_feature_extractor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_streaming_feature_extractor()
        >>>
        >>> # Process same waveform as before, this time sequentially across overlapping segments
        >>> # to simulate streaming inference. Note the usage of ``streaming_feature_extractor`` and ``decoder.infer``.
        >>> state, hypothesis = None, None
        >>> for idx in range(0, len(waveform), num_samples_segment):
        >>>     segment = waveform[idx: idx + num_samples_segment_right_context]
        >>>     segment = torch.nn.functional.pad(segment, (0, num_samples_segment_right_context - len(segment)))
        >>>     with torch.no_grad():
        >>>         features, length = streaming_feature_extractor(segment)
        >>>         hypotheses, state = decoder.infer(features, length, 10, state=state, hypothesis=hypothesis)
        >>>     hypothesis = hypotheses[0]
        >>>     transcript = token_processor(hypothesis[0])
        >>>     if transcript:
        >>>         print(transcript, end=" ", flush=True)
        he hoped there would be stew for dinner turn ips and car rots and bru 'd oes and fat mut ton pieces to [...]
    c                   ó   — e Zd ZdZdS )úRNNTBundle.FeatureExtractorz:Interface of the feature extraction part of RNN-T pipelineN©r(   r)   r*   rT   rA   r   r   ÚFeatureExtractorrx   â   s   € € € € € ØHÐHÐHÐHr   rz   c                   ó   — e Zd ZdZdS )úRNNTBundle.TokenProcessorz7Interface of the token processor part of RNN-T pipelineNry   rA   r   r   ÚTokenProcessorr|   å   s   € € € € € ØEÐEÐEÐEr   r}   Ú
_rnnt_pathÚ_rnnt_factory_funcÚ_global_stats_pathÚ_sp_model_pathÚ_right_paddingÚ_blankÚ_sample_rateÚ_n_fftÚ_n_melsÚ_hop_lengthÚ_segment_lengthÚ_right_context_lengthr>   c                 óð   — |                       ¦   «         }t          j                             | j        ¦  «        }t          j        |¦  «        }|                     |¦  «         |                     ¦   «          |S r   )	r   Ú
torchaudioÚutilsÚ_download_assetr~   r   ÚloadÚload_state_dictÚeval)r!   ÚmodelÚpathÚ
state_dicts       r   Ú
_get_modelzRNNTBundle._get_modelõ   s`   € Ø×'Ò'Ñ)Ô)ˆÝÔ×/Ò/°´Ñ@Ô@ˆÝ”Z Ñ%Ô%ˆ
Ø×Ò˜jÑ)Ô)Ð)Ø�
Š
‰ŒˆØˆr   c                 ó   — | j         S )zSSample rate (in cycles per second) of input waveforms.

        :type: int
        )r„   ©r!   s    r   Úsample_ratezRNNTBundle.sample_rateý   s   € ð Ô Ð r   c                 ó   — | j         S )z7Size of FFT window to use.

        :type: int
        )r…   r–   s    r   Ún_fftzRNNTBundle.n_fft  s   € ð Œ{Ðr   c                 ó   — | j         S )z`Number of mel spectrogram features to extract from input waveforms.

        :type: int
        )r†   r–   s    r   Ún_melszRNNTBundle.n_mels  s   € ð Œ|Ðr   c                 ó   — | j         S )zdNumber of samples between successive frames in input expected by model.

        :type: int
        )r‡   r–   s    r   Ú
hop_lengthzRNNTBundle.hop_length  s   € ð ÔÐr   c                 ó   — | j         S )zTNumber of frames in segment in input expected by model.

        :type: int
        )rˆ   r–   s    r   Úsegment_lengthzRNNTBundle.segment_length  s   € ð Ô#Ð#r   c                 ó   — | j         S )zcNumber of frames in right contextual block in input expected by model.

        :type: int
        )r‰   r–   s    r   Úright_context_lengthzRNNTBundle.right_context_length%  s   € ð Ô)Ð)r   c                 óT   — |                       ¦   «         }t          || j        ¦  «        S )zOConstructs RNN-T decoder.

        Returns:
            RNNTBeamSearch
        )r”   r   rƒ   )r!   r‘   s     r   Úget_decoderzRNNTBundle.get_decoder-  s%   € ð —’Ñ!Ô!ˆÝ˜e T¤[Ñ1Ô1Ð1r   c                 óˆ  ‡ — t           j                             ‰ j        ¦  «        }t	          t
          j                             t           j         	                    ‰ j
        ‰ j        ‰ j        ‰ j        ¬¦  «        t          d„ ¦  «        t          d„ ¦  «        t          |¦  «        t          ˆ fd„¦  «        ¦  «        ¦  «        S )zzConstructs feature extractor for non-streaming (full-context) ASR.

        Returns:
            FeatureExtractor
        ©r—   r™   r›   r�   c                 ó.   — |                       dd¦  «        S ©Nrl   r   ©Ú	transposer   s    r   ú<lambda>z2RNNTBundle.get_feature_extractor.<locals>.<lambda>B  ó   € ¨A¯KªK¸¸1Ñ,=Ô,=€ r   c                 ó0   — t          | t          z  ¦  «        S r   ©r   Ú_gainr   s    r   rª   z2RNNTBundle.get_feature_extractor.<locals>.<lambda>C  ó   € Õ,AÀ!ÅeÁ)Ñ,LÔ,L€ r   c                 ó`   •— t           j        j                             | ddd‰j        f¦  «        S )Nr   )r   rU   r    Úpadr‚   )r   r!   s    €r   rª   z2RNNTBundle.get_feature_extractor.<locals>.<lambda>E  s)   ø€ ­E¬HÔ,?×,CÒ,CÀAÈÈ1ÈaÐQUÔQdÐGeÑ,fÔ,f€ r   ©r‹   rŒ   r�   r€   rM   r   rU   Ú
SequentialÚ
transformsÚMelSpectrogramr—   r™   r›   r�   r   r.   ©r!   Ú
local_paths   ` r   Úget_feature_extractorz RNNTBundle.get_feature_extractor6  s´   ø€ õ  Ô%×5Ò5°dÔ6MÑNÔNˆ
Ý&ÝŒH×ÒÝÔ%×4Ò4Ø $Ô 0¸¼
È4Ì;ÐcgÔcrð 5ñ ô õ "Ð"=Ð"=Ñ>Ô>Ý!Ð"LÐ"LÑMÔMÝ)¨*Ñ5Ô5Ý!Ð"fÐ"fÐ"fÐ"fÑgÔgñô ñ

ô 

ð 
	
r   c           
      ód  — t           j                             | j        ¦  «        }t	          t
          j                             t           j         	                    | j
        | j        | j        | j        ¬¦  «        t          d„ ¦  «        t          d„ ¦  «        t          |¦  «        ¦  «        ¦  «        S )zvConstructs feature extractor for streaming (simultaneous) ASR.

        Returns:
            FeatureExtractor
        r¥   c                 ó.   — |                       dd¦  «        S r§   r¨   r   s    r   rª   z<RNNTBundle.get_streaming_feature_extractor.<locals>.<lambda>U  r«   r   c                 ó0   — t          | t          z  ¦  «        S r   r­   r   s    r   rª   z<RNNTBundle.get_streaming_feature_extractor.<locals>.<lambda>V  r¯   r   r²   r¶   s     r   Úget_streaming_feature_extractorz*RNNTBundle.get_streaming_feature_extractorI  sž   € õ  Ô%×5Ò5°dÔ6MÑNÔNˆ
Ý&ÝŒH×ÒÝÔ%×4Ò4Ø $Ô 0¸¼
È4Ì;ÐcgÔcrð 5ñ ô õ "Ð"=Ð"=Ñ>Ô>Ý!Ð"LÐ"LÑMÔMÝ)¨*Ñ5Ô5ñô ñ	
ô 	
ð 		
r   c                 óh   — t           j                             | j        ¦  «        }t	          |¦  «        S )zQConstructs token processor.

        Returns:
            TokenProcessor
        )r‹   rŒ   r�   r�   rX   r¶   s     r   Úget_token_processorzRNNTBundle.get_token_processor[  s+   € õ  Ô%×5Ò5°dÔ6IÑJÔJˆ
Ý+¨JÑ7Ô7Ð7r   N)r(   r)   r*   rT   r=   rz   rF   r}   rK   Ú__annotations__r   r   rJ   r”   Úpropertyr—   r™   r›   r�   rŸ   r¡   r   r£   r¸   r¼   r¾   rA   r   r   rv   rv   ˜   sŠ  € € € € € € ðFð FðPIð Ið Ið Ið IÐ,ñ Iô Ið IðFð Fð Fð Fð F˜ñ Fô Fð Fð €O€O�OØ   T Ô*Ð*Ð*Ñ*ØÐÐÑØÐÐÑØÐÐÑØ€K€K�KØÐÐÑØ€K€K�KØ€L€L�LØÐÐÑØÐÐÑØÐÐÑð˜Dð ð ð ð ð ð!˜Sð !ð !ð !ñ „Xð!ð ð�sð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ð ˜Cð  ð  ð  ñ „Xð ð ð$ ð $ð $ð $ñ „Xð$ð ð* cð *ð *ð *ñ „Xð*ð2˜^ð 2ð 2ð 2ð 2ð
Ð'7ð 
ð 
ð 
ð 
ð&
Ð1Að 
ð 
ð 
ð 
ð$8 ^ð 8ð 8ð 8ð 8ð 8ð 8r   rv   z(models/emformer_rnnt_base_librispeech.pti  )Únum_symbolsz2pipeline-assets/global_stats_rnnt_librispeech.jsonz.pipeline-assets/spm_bpe_4096_librispeech.modelé   i   i€>  i�  éP   é    é   )r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   aì  ASR pipeline based on Emformer-RNNT,
pretrained on *LibriSpeech* dataset :cite:`7178964`,
capable of performing both streaming and non-streaming inference.

The underlying model is constructed by :py:func:`torchaudio.models.emformer_rnnt_base`
and utilizes weights trained on LibriSpeech using training script ``train.py``
`here <https://github.com/pytorch/audio/tree/main/examples/asr/emformer_rnnt>`__ with default arguments.

Please refer to :py:class:`RNNTBundle` for usage instructions.
))r3   r   Úabcr   r   Údataclassesr   Ú	functoolsr   Útypingr   r   r	   r   r‹   Útorchaudio._internalr
   Útorchaudio.modelsr   r   r   Ú__all__Úlog10ÚiinfoÚint16ÚmaxÚ_decibelÚpowr®   r   rU   rV   r   r.   r=   rF   rM   rX   rv   ÚEMFORMER_RNNT_BASE_LIBRISPEECHrT   rA   r   r   ú<module>rÔ      s¯  ðØ €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à €€€Ø Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fð €à�J�D”J˜{˜uœ{¨5¬;Ñ7Ô7Ô;Ñ<Ô<Ñ<€ØˆˆB��x‘Ñ Ô €ðð ð ð&ð &ð &ð &ð &˜œœñ &ô &ð &ð4ð 4ð 4ð 4ð 4 ¤¤ñ 4ô 4ð 4ðð ð ð ð ˜ñ ô ð ð"ð ð ð ð �cñ ô ð ð ð  ð  ð  ð  ˜eœhœoÐ/@ñ  ô  ð  ð:(!ð (!ð (!ð (!ð (! ?ñ (!ô (!ð (!ðV ðI8ð I8ð I8ð I8ð I8ñ I8ô I8ñ „ðI8ðX ", Ø9Ø�wÐ1¸tÐDÑDÔDØKØCØØØØØØØØð"ñ "ô "Ð ð	*Ð Ô &Ð &Ð &r   