codingutf8 2021 the fairseq s and the huggingface inc team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache orglicenseslicense2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license unispeechsat model configuration import functools import operator from configurationutils import pretrainedconfig from utils import logging logger logging getloggername unispeechsatpretrainedconfigarchivemap microsoftunispeechsatbase100hlibrift https huggingface comicrosoftunispeechsatbase100hlibriftresolvemainconfig json see all unispeechsat models at https huggingface comodels filterunispeechsat class unispeechsatconfigpretrainedconfig r this is the configuration class to store the configuration of a unispeechsatmodel it is used to instantiate an unispeechsat model according to the specified arguments defining the model architecture instantiating a configuration with the defaults will yield a similar configuration to that of the unispeechsat microsoftunispeechsatbase100hlibrifthttps huggingface comicrosoftunispeechsatbase100hlibrift architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args vocabsize int optional defaults to 32 vocabulary size of the unispeechsat model defines the number of different tokens that can be represented by the inputsids passed when calling unispeechsatmodel vocabulary size of the model defines the different tokens that can be represented by the inputsids passed to the forward method of unispeechsatmodel hiddensize int optional defaults to 768 dimensionality of the encoder layers and the pooler layer numhiddenlayers int optional defaults to 12 number of hidden layers in the transformer encoder numattentionheads int optional defaults to 12 number of attention heads for each attention layer in the transformer encoder intermediatesize int optional defaults to 3072 dimensionality of the intermediate i e feedforward layer in the transformer encoder hiddenact str or function optional defaults to gelu the nonlinear activation function function or string in the encoder and pooler if string gelu relu selu and gelunew are supported hiddendropout float optional defaults to 0 1 the dropout probability for all fully connected layers in the embeddings encoder and pooler activationdropout float optional defaults to 0 1 the dropout ratio for activations inside the fully connected layer attentiondropout float optional defaults to 0 1 the dropout ratio for the attention probabilities featprojdropout float optional defaults to 0 0 the dropout probability for output of the feature encoder featquantizerdropout float optional defaults to 0 0 the dropout probabilitiy for the output of the feature encoder that s used by the quantizer finaldropout float optional defaults to 0 1 the dropout probability for the final projection layer of unispeechsatforctc layerdrop float optional defaults to 0 1 the layerdrop probability see the layerdrop papersee https arxiv orgabs1909 11556 for more details initializerrange float optional defaults to 0 02 the standard deviation of the truncatednormalinitializer for initializing all weight matrices layernormeps float optional defaults to 1e05 the epsilon used by the layer normalization layers featextractnorm str optional defaults to group the norm to be applied to 1d convolutional layers in feature encoder one of group for group normalization of only the first 1d convolutional layer or layer for layer normalization of all 1d convolutional layers featextractactivation str optional defaults to gelu the nonlinear activation function function or string in the 1d convolutional layers of the feature extractor if string gelu relu selu and gelunew are supported convdim tupleint or listint optional defaults to 512 512 512 512 512 512 512 a tuple of integers defining the number of input and output channels of each 1d convolutional layer in the feature encoder the length of convdim defines the number of 1d convolutional layers convstride tupleint or listint optional defaults to 5 2 2 2 2 2 2 a tuple of integers defining the stride of each 1d convolutional layer in the feature encoder the length of convstride defines the number of convolutional layers and has to match the length of convdim convkernel tupleint or listint optional defaults to 10 3 3 3 3 2 2 a tuple of integers defining the kernel size of each 1d convolutional layer in the feature encoder the length of convkernel defines the number of convolutional layers and has to match the length of convdim convbias bool optional defaults to false whether the 1d convolutional layers have a bias numconvposembeddings int optional defaults to 128 number of convolutional positional embeddings defines the kernel size of 1d convolutional positional embeddings layer numconvposembeddinggroups int optional defaults to 16 number of groups of 1d convolutional positional embeddings layer dostablelayernorm bool optional defaults to false whether to apply stable layer norm architecture of the transformer encoder dostablelayernorm is true corresponds to applying layer norm before the attention layer whereas dostablelayernorm is false corresponds to applying layer norm after the attention layer applyspecaugment bool optional defaults to true whether to apply specaugment data augmentation to the outputs of the feature encoder for reference see specaugment a simple data augmentation method for automatic speech recognitionhttps arxiv orgabs1904 08779 masktimeprob float optional defaults to 0 05 percentage between 0 and 1 of all feature vectors along the time axis which will be masked the masking procecure generates masktimeproblentimeaxismasktimelength independent masks over the axis if reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked masktimeprob should be probvectorstartmasktimelength note that overlap may decrease the actual percentage of masked vectors this is only relevant if applyspecaugment is true masktimelength int optional defaults to 10 length of vector span along the time axis masktimeminmasks int optional defaults to 2 the minimum number of masks of length maskfeaturelength generated along the time axis each time step irrespectively of maskfeatureprob only relevant if masktimeproblentimeaxismasktimelength masktimeminmasks maskfeatureprob float optional defaults to 0 0 percentage between 0 and 1 of all feature vectors along the feature axis which will be masked the masking procecure generates maskfeatureproblenfeatureaxismasktimelength independent masks over the axis if reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked maskfeatureprob should be probvectorstartmaskfeaturelength note that overlap may decrease the actual percentage of masked vectors this is only relevant if applyspecaugment is true maskfeaturelength int optional defaults to 10 length of vector span along the feature axis maskfeatureminmasks int optional defaults to 0 the minimum number of masks of length maskfeaturelength generated along the feature axis each time step irrespectively of maskfeatureprob only relevant if maskfeatureproblenfeatureaxismaskfeaturelength maskfeatureminmasks numcodevectorspergroup int optional defaults to 320 number of entries in each quantization codebook group numcodevectorgroups int optional defaults to 2 number of codevector groups for product codevector quantization contrastivelogitstemperature float optional defaults to 0 1 the temperature kappa in the contrastive loss numnegatives int optional defaults to 100 number of negative samples for the contrastive loss codevectordim int optional defaults to 256 dimensionality of the quantized feature vectors projcodevectordim int optional defaults to 256 dimensionality of the final projection of both the quantized and the transformer features diversitylossweight int optional defaults to 0 1 the weight of the codebook diversity loss component ctclossreduction str optional defaults to mean specifies the reduction to apply to the output of torch nn ctcloss only relevant when training an instance of unispeechsatforctc ctczeroinfinity bool optional defaults to false whether to zero infinite losses and the associated gradients of torch nn ctcloss infinite losses mainly occur when the inputs are too short to be aligned to the targets only relevant when training an instance of unispeechsatforctc useweightedlayersum bool optional defaults to false whether to use a weighted average of layer outputs with learned weights only relevant when using an instance of unispeechsatforsequenceclassification classifierprojsize int optional defaults to 256 dimensionality of the projection before token meanpooling for classification tdnndim tupleint or listint optional defaults to 512 512 512 512 1500 a tuple of integers defining the number of output channels of each 1d convolutional layer in the tdnn module of the xvector model the length of tdnndim defines the number of tdnn layers tdnnkernel tupleint or listint optional defaults to 5 3 3 1 1 a tuple of integers defining the kernel size of each 1d convolutional layer in the tdnn module of the xvector model the length of tdnnkernel has to match the length of tdnndim tdnndilation tupleint or listint optional defaults to 1 2 3 1 1 a tuple of integers defining the dilation factor of each 1d convolutional layer in tdnn module of the xvector model the length of tdnndilation has to match the length of tdnndim xvectoroutputdim int optional defaults to 512 dimensionality of the xvector embedding vectors padtokenid int optional defaults to 0 the id of the padding token bostokenid int optional defaults to 1 the id of the beginningofsequence token eostokenid int optional defaults to 2 the id of the endofsequence token numclusters int optional defaults to 504 number of clusters for weak labeling only relevant when using an instance of unispeechsatforpretraining example python from transformers import unispeechsatmodel unispeechsatconfig initializing a unispeechsat microsoftunispeechsatbase100hlibrift style configuration configuration unispeechsatconfig initializing a model from the microsoftunispeechsatbase100hlibrift style configuration model unispeechsatmodelconfiguration accessing the model configuration configuration model config modeltype unispeechsat def init self vocabsize32 hiddensize768 numhiddenlayers12 numattentionheads12 intermediatesize3072 hiddenactgelu hiddendropout0 1 activationdropout0 1 attentiondropout0 1 featprojdropout0 0 featquantizerdropout0 0 finaldropout0 1 layerdrop0 1 initializerrange0 02 layernormeps1e5 featextractnormgroup featextractactivationgelu convdim512 512 512 512 512 512 512 convstride5 2 2 2 2 2 2 convkernel10 3 3 3 3 2 2 convbiasfalse numconvposembeddings128 numconvposembeddinggroups16 dostablelayernormfalse applyspecaugmenttrue masktimeprob0 05 masktimelength10 masktimeminmasks2 maskfeatureprob0 0 maskfeaturelength10 maskfeatureminmasks0 numcodevectorspergroup320 numcodevectorgroups2 contrastivelogitstemperature0 1 numnegatives100 codevectordim256 projcodevectordim256 diversitylossweight0 1 ctclossreductionmean ctczeroinfinityfalse useweightedlayersumfalse classifierprojsize256 tdnndim512 512 512 512 1500 tdnnkernel5 3 3 1 1 tdnndilation1 2 3 1 1 xvectoroutputdim512 padtokenid0 bostokenid1 eostokenid2 numclusters504 kwargs super initkwargs padtokenidpadtokenid bostokenidbostokenid eostokenideostokenid self hiddensize hiddensize self featextractnorm featextractnorm self featextractactivation featextractactivation self convdim listconvdim self convstride listconvstride self convkernel listconvkernel self convbias convbias self numconvposembeddings numconvposembeddings self numconvposembeddinggroups numconvposembeddinggroups self numfeatextractlayers lenself convdim self numhiddenlayers numhiddenlayers self intermediatesize intermediatesize self hiddenact hiddenact self numattentionheads numattentionheads self hiddendropout hiddendropout self attentiondropout attentiondropout self activationdropout activationdropout self featprojdropout featprojdropout self finaldropout finaldropout self layerdrop layerdrop self layernormeps layernormeps self initializerrange initializerrange self vocabsize vocabsize self numclusters numclusters self dostablelayernorm dostablelayernorm self useweightedlayersum useweightedlayersum if lenself convstride self numfeatextractlayers or lenself convkernel self numfeatextractlayers or lenself convdim self numfeatextractlayers raise valueerror configuration for convolutional layers is incorrect it is required that lenconfig convdim lenconfig convstride lenconfig convkernel but is lenconfig convdim f lenself convdim lenconfig convstride lenself convstride f lenconfig convkernel lenself convkernel finetuning config parameters for specaugment https arxiv orgabs1904 08779 self applyspecaugment applyspecaugment self masktimeprob masktimeprob self masktimelength masktimelength self masktimeminmasks masktimeminmasks self maskfeatureprob maskfeatureprob self maskfeaturelength maskfeaturelength self maskfeatureminmasks maskfeatureminmasks parameters for pretraining with codevector quantized representations self numcodevectorspergroup numcodevectorspergroup self numcodevectorgroups numcodevectorgroups self contrastivelogitstemperature contrastivelogitstemperature self featquantizerdropout featquantizerdropout self numnegatives numnegatives self codevectordim codevectordim self projcodevectordim projcodevectordim self diversitylossweight diversitylossweight ctc loss self ctclossreduction ctclossreduction self ctczeroinfinity ctczeroinfinity sequenceclassificationspecific parameter feel free to ignore for other classes self classifierprojsize classifierprojsize xvectorspecific parameters feel free to ignore for other classes self tdnndim listtdnndim self tdnnkernel listtdnnkernel self tdnndilation listtdnndilation self xvectoroutputdim xvectoroutputdim property def inputstologitsratioself return functools reduceoperator mul self convstride 1 coding utf 8 2021 the fairseq s and the huggingface inc team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache org licenses license 2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license unispeechsat model configuration see all unispeechsat models at https huggingface co models filter unispeech_sat this is the configuration class to store the configuration of a unispeechsatmodel it is used to instantiate an unispeechsat model according to the specified arguments defining the model architecture instantiating a configuration with the defaults will yield a similar configuration to that of the unispeechsat microsoft unispeech sat base 100h libri ft https huggingface co microsoft unispeech sat base 100h libri ft architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args vocab_size int optional defaults to 32 vocabulary size of the unispeechsat model defines the number of different tokens that can be represented by the inputs_ids passed when calling unispeechsatmodel vocabulary size of the model defines the different tokens that can be represented by the inputs_ids passed to the forward method of unispeechsatmodel hidden_size int optional defaults to 768 dimensionality of the encoder layers and the pooler layer num_hidden_layers int optional defaults to 12 number of hidden layers in the transformer encoder num_attention_heads int optional defaults to 12 number of attention heads for each attention layer in the transformer encoder intermediate_size int optional defaults to 3072 dimensionality of the intermediate i e feed forward layer in the transformer encoder hidden_act str or function optional defaults to gelu the non linear activation function function or string in the encoder and pooler if string gelu relu selu and gelu_new are supported hidden_dropout float optional defaults to 0 1 the dropout probability for all fully connected layers in the embeddings encoder and pooler activation_dropout float optional defaults to 0 1 the dropout ratio for activations inside the fully connected layer attention_dropout float optional defaults to 0 1 the dropout ratio for the attention probabilities feat_proj_dropout float optional defaults to 0 0 the dropout probability for output of the feature encoder feat_quantizer_dropout float optional defaults to 0 0 the dropout probabilitiy for the output of the feature encoder that s used by the quantizer final_dropout float optional defaults to 0 1 the dropout probability for the final projection layer of unispeechsatforctc layerdrop float optional defaults to 0 1 the layerdrop probability see the layerdrop paper see https arxiv org abs 1909 11556 for more details initializer_range float optional defaults to 0 02 the standard deviation of the truncated_normal_initializer for initializing all weight matrices layer_norm_eps float optional defaults to 1e 05 the epsilon used by the layer normalization layers feat_extract_norm str optional defaults to group the norm to be applied to 1d convolutional layers in feature encoder one of group for group normalization of only the first 1d convolutional layer or layer for layer normalization of all 1d convolutional layers feat_extract_activation str optional defaults to gelu the non linear activation function function or string in the 1d convolutional layers of the feature extractor if string gelu relu selu and gelu_new are supported conv_dim tuple int or list int optional defaults to 512 512 512 512 512 512 512 a tuple of integers defining the number of input and output channels of each 1d convolutional layer in the feature encoder the length of conv_dim defines the number of 1d convolutional layers conv_stride tuple int or list int optional defaults to 5 2 2 2 2 2 2 a tuple of integers defining the stride of each 1d convolutional layer in the feature encoder the length of conv_stride defines the number of convolutional layers and has to match the length of conv_dim conv_kernel tuple int or list int optional defaults to 10 3 3 3 3 2 2 a tuple of integers defining the kernel size of each 1d convolutional layer in the feature encoder the length of conv_kernel defines the number of convolutional layers and has to match the length of conv_dim conv_bias bool optional defaults to false whether the 1d convolutional layers have a bias num_conv_pos_embeddings int optional defaults to 128 number of convolutional positional embeddings defines the kernel size of 1d convolutional positional embeddings layer num_conv_pos_embedding_groups int optional defaults to 16 number of groups of 1d convolutional positional embeddings layer do_stable_layer_norm bool optional defaults to false whether to apply stable layer norm architecture of the transformer encoder do_stable_layer_norm is true corresponds to applying layer norm before the attention layer whereas do_stable_layer_norm is false corresponds to applying layer norm after the attention layer apply_spec_augment bool optional defaults to true whether to apply specaugment data augmentation to the outputs of the feature encoder for reference see specaugment a simple data augmentation method for automatic speech recognition https arxiv org abs 1904 08779 mask_time_prob float optional defaults to 0 05 percentage between 0 and 1 of all feature vectors along the time axis which will be masked the masking procecure generates mask_time_prob len time_axis mask_time_length independent masks over the axis if reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked mask_time_prob should be prob_vector_start mask_time_length note that overlap may decrease the actual percentage of masked vectors this is only relevant if apply_spec_augment is true mask_time_length int optional defaults to 10 length of vector span along the time axis mask_time_min_masks int optional defaults to 2 the minimum number of masks of length mask_feature_length generated along the time axis each time step irrespectively of mask_feature_prob only relevant if mask_time_prob len time_axis mask_time_length mask_time_min_masks mask_feature_prob float optional defaults to 0 0 percentage between 0 and 1 of all feature vectors along the feature axis which will be masked the masking procecure generates mask_feature_prob len feature_axis mask_time_length independent masks over the axis if reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked mask_feature_prob should be prob_vector_start mask_feature_length note that overlap may decrease the actual percentage of masked vectors this is only relevant if apply_spec_augment is true mask_feature_length int optional defaults to 10 length of vector span along the feature axis mask_feature_min_masks int optional defaults to 0 the minimum number of masks of length mask_feature_length generated along the feature axis each time step irrespectively of mask_feature_prob only relevant if mask_feature_prob len feature_axis mask_feature_length mask_feature_min_masks num_codevectors_per_group int optional defaults to 320 number of entries in each quantization codebook group num_codevector_groups int optional defaults to 2 number of codevector groups for product codevector quantization contrastive_logits_temperature float optional defaults to 0 1 the temperature kappa in the contrastive loss num_negatives int optional defaults to 100 number of negative samples for the contrastive loss codevector_dim int optional defaults to 256 dimensionality of the quantized feature vectors proj_codevector_dim int optional defaults to 256 dimensionality of the final projection of both the quantized and the transformer features diversity_loss_weight int optional defaults to 0 1 the weight of the codebook diversity loss component ctc_loss_reduction str optional defaults to mean specifies the reduction to apply to the output of torch nn ctcloss only relevant when training an instance of unispeechsatforctc ctc_zero_infinity bool optional defaults to false whether to zero infinite losses and the associated gradients of torch nn ctcloss infinite losses mainly occur when the inputs are too short to be aligned to the targets only relevant when training an instance of unispeechsatforctc use_weighted_layer_sum bool optional defaults to false whether to use a weighted average of layer outputs with learned weights only relevant when using an instance of unispeechsatforsequenceclassification classifier_proj_size int optional defaults to 256 dimensionality of the projection before token mean pooling for classification tdnn_dim tuple int or list int optional defaults to 512 512 512 512 1500 a tuple of integers defining the number of output channels of each 1d convolutional layer in the tdnn module of the xvector model the length of tdnn_dim defines the number of tdnn layers tdnn_kernel tuple int or list int optional defaults to 5 3 3 1 1 a tuple of integers defining the kernel size of each 1d convolutional layer in the tdnn module of the xvector model the length of tdnn_kernel has to match the length of tdnn_dim tdnn_dilation tuple int or list int optional defaults to 1 2 3 1 1 a tuple of integers defining the dilation factor of each 1d convolutional layer in tdnn module of the xvector model the length of tdnn_dilation has to match the length of tdnn_dim xvector_output_dim int optional defaults to 512 dimensionality of the xvector embedding vectors pad_token_id int optional defaults to 0 the id of the padding token bos_token_id int optional defaults to 1 the id of the beginning of sequence token eos_token_id int optional defaults to 2 the id of the end of sequence token num_clusters int optional defaults to 504 number of clusters for weak labeling only relevant when using an instance of unispeechsatforpretraining example python from transformers import unispeechsatmodel unispeechsatconfig initializing a unispeechsat microsoft unispeech sat base 100h libri ft style configuration configuration unispeechsatconfig initializing a model from the microsoft unispeech sat base 100h libri ft style configuration model unispeechsatmodel configuration accessing the model configuration configuration model config fine tuning config parameters for specaugment https arxiv org abs 1904 08779 parameters for pretraining with codevector quantized representations ctc loss sequenceclassification specific parameter feel free to ignore for other classes xvector specific parameters feel free to ignore for other classes
import functools
import operator

from ...configuration_utils import PretrainedConfig
from ...utils import logging


logger = logging.get_logger(__name__)

UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP = {
    "microsoft/unispeech-sat-base-100h-libri-ft": (
        "https://huggingface.co/microsoft/unispeech-sat-base-100h-libri-ft/resolve/main/config.json"
    ),
    
}


class UniSpeechSatConfig(PretrainedConfig):
    r

    model_type = "unispeech-sat"

    def __init__(
        self,
        vocab_size=32,
        hidden_size=768,
        num_hidden_layers=12,
        num_attention_heads=12,
        intermediate_size=3072,
        hidden_act="gelu",
        hidden_dropout=0.1,
        activation_dropout=0.1,
        attention_dropout=0.1,
        feat_proj_dropout=0.0,
        feat_quantizer_dropout=0.0,
        final_dropout=0.1,
        layerdrop=0.1,
        initializer_range=0.02,
        layer_norm_eps=1e-5,
        feat_extract_norm="group",
        feat_extract_activation="gelu",
        conv_dim=(512, 512, 512, 512, 512, 512, 512),
        conv_stride=(5, 2, 2, 2, 2, 2, 2),
        conv_kernel=(10, 3, 3, 3, 3, 2, 2),
        conv_bias=False,
        num_conv_pos_embeddings=128,
        num_conv_pos_embedding_groups=16,
        do_stable_layer_norm=False,
        apply_spec_augment=True,
        mask_time_prob=0.05,
        mask_time_length=10,
        mask_time_min_masks=2,
        mask_feature_prob=0.0,
        mask_feature_length=10,
        mask_feature_min_masks=0,
        num_codevectors_per_group=320,
        num_codevector_groups=2,
        contrastive_logits_temperature=0.1,
        num_negatives=100,
        codevector_dim=256,
        proj_codevector_dim=256,
        diversity_loss_weight=0.1,
        ctc_loss_reduction="mean",
        ctc_zero_infinity=False,
        use_weighted_layer_sum=False,
        classifier_proj_size=256,
        tdnn_dim=(512, 512, 512, 512, 1500),
        tdnn_kernel=(5, 3, 3, 1, 1),
        tdnn_dilation=(1, 2, 3, 1, 1),
        xvector_output_dim=512,
        pad_token_id=0,
        bos_token_id=1,
        eos_token_id=2,
        num_clusters=504,
        **kwargs,
    ):
        super().__init__(**kwargs, pad_token_id=pad_token_id, bos_token_id=bos_token_id, eos_token_id=eos_token_id)
        self.hidden_size = hidden_size
        self.feat_extract_norm = feat_extract_norm
        self.feat_extract_activation = feat_extract_activation
        self.conv_dim = list(conv_dim)
        self.conv_stride = list(conv_stride)
        self.conv_kernel = list(conv_kernel)
        self.conv_bias = conv_bias
        self.num_conv_pos_embeddings = num_conv_pos_embeddings
        self.num_conv_pos_embedding_groups = num_conv_pos_embedding_groups
        self.num_feat_extract_layers = len(self.conv_dim)
        self.num_hidden_layers = num_hidden_layers
        self.intermediate_size = intermediate_size
        self.hidden_act = hidden_act
        self.num_attention_heads = num_attention_heads
        self.hidden_dropout = hidden_dropout
        self.attention_dropout = attention_dropout
        self.activation_dropout = activation_dropout
        self.feat_proj_dropout = feat_proj_dropout
        self.final_dropout = final_dropout
        self.layerdrop = layerdrop
        self.layer_norm_eps = layer_norm_eps
        self.initializer_range = initializer_range
        self.vocab_size = vocab_size
        self.num_clusters = num_clusters
        self.do_stable_layer_norm = do_stable_layer_norm
        self.use_weighted_layer_sum = use_weighted_layer_sum

        if (
            (len(self.conv_stride) != self.num_feat_extract_layers)
            or (len(self.conv_kernel) != self.num_feat_extract_layers)
            or (len(self.conv_dim) != self.num_feat_extract_layers)
        ):
            raise ValueError(
                "Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =="
                " `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ="
                f" {len(self.conv_dim)}`, `len(config.conv_stride) = {len(self.conv_stride)}`,"
                f" `len(config.conv_kernel) = {len(self.conv_kernel)}`."
            )

        
        self.apply_spec_augment = apply_spec_augment
        self.mask_time_prob = mask_time_prob
        self.mask_time_length = mask_time_length
        self.mask_time_min_masks = mask_time_min_masks
        self.mask_feature_prob = mask_feature_prob
        self.mask_feature_length = mask_feature_length
        self.mask_feature_min_masks = mask_feature_min_masks

        
        self.num_codevectors_per_group = num_codevectors_per_group
        self.num_codevector_groups = num_codevector_groups
        self.contrastive_logits_temperature = contrastive_logits_temperature
        self.feat_quantizer_dropout = feat_quantizer_dropout
        self.num_negatives = num_negatives
        self.codevector_dim = codevector_dim
        self.proj_codevector_dim = proj_codevector_dim
        self.diversity_loss_weight = diversity_loss_weight

        
        self.ctc_loss_reduction = ctc_loss_reduction
        self.ctc_zero_infinity = ctc_zero_infinity

        
        self.classifier_proj_size = classifier_proj_size

        
        self.tdnn_dim = list(tdnn_dim)
        self.tdnn_kernel = list(tdnn_kernel)
        self.tdnn_dilation = list(tdnn_dilation)
        self.xvector_output_dim = xvector_output_dim

    @property
    def inputs_to_logits_ratio(self):
        return functools.reduce(operator.mul, self.conv_stride, 1)