Modules¶
Add Normalization¶
- 
class openspeech.modules.add_normalization.AddNorm(sublayer: torch.nn.modules.module.Module, d_model: int = 512)[source]¶
- Add & Normalization layer proposed in “Attention Is All You Need”. Transformer employ a residual connection around each of the two sub-layers, (Multi-Head Attention & Feed-Forward) followed by layer normalization. 
Additive Attention¶
- 
class openspeech.modules.additive_attention.AdditiveAttention(dim: int)[source]¶
- Applies a additive attention (bahdanau) mechanism on the output features from the decoders. Additive attention proposed in “Neural Machine Translation by Jointly Learning to Align and Translate” paper. - Parameters
- dim (int) – dimension of model 
 - Inputs: query, key, value
- query (batch_size, q_len, hidden_dim): tensor containing the output features from the decoders. 
- key (batch, k_len, d_model): tensor containing projection vector for encoders. 
- value (batch_size, v_len, hidden_dim): tensor containing features of the encoded input sequence. 
 
- Returns: context, attn
- context: tensor containing the context vector from attention mechanism. 
- attn: tensor containing the alignment from the encoders outputs. 
 
 
BatchNorm ReLU RNN¶
- 
class openspeech.modules.batchnorm_relu_rnn.BNReluRNN(input_size: int, hidden_state_dim: int = 512, rnn_type: str = 'gru', bidirectional: bool = True, dropout_p: float = 0.1)[source]¶
- Recurrent neural network with batch normalization layer & ReLU activation function. - Parameters
- input_size (int) – size of input 
- hidden_state_dim (int) – the number of features in the hidden state h 
- rnn_type (str, optional) – type of RNN cell (default: gru) 
- bidirectional (bool, optional) – if True, becomes a bidirectional encoders (defulat: True) 
- dropout_p (float, optional) – dropout probability (default: 0.1) 
 
 - Inputs: inputs, input_lengths
- inputs (batch, time, dim): Tensor containing input vectors 
- input_lengths: Tensor containing containing sequence lengths 
 
- Returns: outputs
- outputs: Tensor produced by the BNReluRNN module 
 
 
Conformer Attention Module¶
- 
class openspeech.modules.conformer_attention_module.MultiHeadedSelfAttentionModule(d_model: int, num_heads: int, dropout_p: float = 0.1)[source]¶
- Conformer employ multi-headed self-attention (MHSA) while integrating an important technique from Transformer-XL, the relative sinusoidal positional encoding scheme. The relative positional encoding allows the self-attention module to generalize better on different input length and the resulting encoders is more robust to the variance of the utterance length. Conformer use prenorm residual units with dropout which helps training and regularizing deeper models. - Parameters
 - Inputs: inputs, mask
- inputs (batch, time, dim): Tensor containing input vector 
- mask (batch, 1, time2) or (batch, time1, time2): Tensor containing indices to be masked 
 
 - Returns
- Tensor produces by relative multi headed self attention module. 
- Return type
- outputs (batch, time, dim) 
 
 - 
forward(inputs: torch.Tensor, mask: Optional[torch.Tensor] = None) → torch.Tensor[source]¶
- Forward propagate of conformer’s multi-headed self attention module. - Inputs: inputs, mask
- inputs (batch, time, dim): Tensor containing input vector 
- mask (batch, 1, time2) or (batch, time1, time2): Tensor containing indices to be masked 
 
 - Returns
- Tensor produces by relative multi headed self attention module. 
- Return type
- outputs (batch, time, dim) 
 
 
 
Conformer Block¶
- 
class openspeech.modules.conformer_block.ConformerBlock(encoder_dim: int = 512, num_attention_heads: int = 8, feed_forward_expansion_factor: int = 4, conv_expansion_factor: int = 2, feed_forward_dropout_p: float = 0.1, attention_dropout_p: float = 0.1, conv_dropout_p: float = 0.1, conv_kernel_size: int = 31, half_step_residual: bool = True)[source]¶
- Conformer block contains two Feed Forward modules sandwiching the Multi-Headed Self-Attention module and the Convolution module. This sandwich structure is inspired by Macaron-Net, which proposes replacing the original feed-forward layer in the Transformer block into two half-step feed-forward layers, one before the attention layer and one after. - Parameters
- encoder_dim (int, optional) – Dimension of conformer encoders 
- num_attention_heads (int, optional) – Number of attention heads 
- feed_forward_expansion_factor (int, optional) – Expansion factor of feed forward module 
- conv_expansion_factor (int, optional) – Expansion factor of conformer convolution module 
- feed_forward_dropout_p (float, optional) – Probability of feed forward module dropout 
- attention_dropout_p (float, optional) – Probability of attention module dropout 
- conv_dropout_p (float, optional) – Probability of conformer convolution module dropout 
- conv_kernel_size (int or tuple, optional) – Size of the convolving kernel 
- half_step_residual (bool) – Flag indication whether to use half step residual or not 
 
 - Inputs: inputs
- inputs (batch, time, dim): Tensor containing input vector 
 
- Returns: outputs
- outputs (batch, time, dim): Tensor produces by conformer block. 
 
 
Conformer Convolution Module¶
- 
class openspeech.modules.conformer_convolution_module.ConformerConvModule(in_channels: int, kernel_size: int = 31, expansion_factor: int = 2, dropout_p: float = 0.1)[source]¶
- Conformer convolution module starts with a pointwise convolution and a gated linear unit (GLU). This is followed by a single 1-D depthwise convolution layer. Batchnorm is deployed just after the convolution to aid training deep models. - Parameters
 - Inputs: inputs
- inputs (batch, time, dim): Tensor contains input sequences 
- Outputs: outputs
- outputs (batch, time, dim): Tensor produces by conformer convolution module. 
 - 
forward(inputs: torch.Tensor) → torch.Tensor[source]¶
- Forward propagate of conformer’s convolution module. - Inputs: inputs
- inputs (batch, time, dim): Tensor contains input sequences 
- Outputs: outputs
- outputs (batch, time, dim): Tensor produces by conformer convolution module. 
 
 
Conformer Feed-Forward Module¶
- 
class openspeech.modules.conformer_feed_forward_module.FeedForwardModule(encoder_dim: int = 512, expansion_factor: int = 4, dropout_p: float = 0.1)[source]¶
- Conformer Feed Forward Module follow pre-norm residual units and apply layer normalization within the residual unit and on the input before the first linear layer. This module also apply Swish activation and dropout, which helps regularizing the network. - Parameters
 - Inputs: inputs
- inputs (batch, time, dim): Tensor contains input sequences 
 
- Outputs: outputs
- outputs (batch, time, dim): Tensor produces by feed forward module. 
 
 - 
forward(inputs: torch.Tensor) → torch.Tensor[source]¶
- Forward propagate of conformer’s feed-forward module. - Inputs: inputs
- inputs (batch, time, dim): Tensor contains input sequences 
 
- Outputs: outputs
- outputs (batch, time, dim): Tensor produces by feed forward module. 
 
 
 
Conv2d Extractor¶
- 
class openspeech.modules.conv2d_extractor.Conv2dExtractor(input_dim: int, activation: str = 'hardtanh')[source]¶
- Provides inteface of convolutional extractor. - Note - Do not use this class directly, use one of the sub classes. Define the ‘self.conv’ class variable. - Inputs: inputs, input_lengths
- inputs (batch, time, dim): Tensor containing input vectors 
- input_lengths: Tensor containing containing sequence lengths 
 
- Returns: outputs, output_lengths
- outputs: Tensor produced by the convolution 
- output_lengths: Tensor containing sequence lengths produced by the convolution 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- inputs: torch.FloatTensor (batch, time, dimension) input_lengths: torch.IntTensor (batch) 
 
Conv2d Subsampling¶
- 
class openspeech.modules.conv2d_subsampling.Conv2dSubsampling(input_dim: int, in_channels: int, out_channels: int, activation: str = 'relu')[source]¶
- Convolutional 2D subsampling (to 1/4 length) - Parameters
 - Inputs: inputs
- inputs (batch, time, dim): Tensor containing sequence of inputs 
- input_lengths (batch): list of sequence input lengths 
 
- Returns: outputs, output_lengths
- outputs (batch, time, dim): Tensor produced by the convolution 
- output_lengths (batch): list of sequence output lengths 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- inputs: torch.FloatTensor (batch, time, dimension) input_lengths: torch.IntTensor (batch) 
 
Conv Group Shuffle¶
DeepSpeech2 Extractor¶
- 
class openspeech.modules.deepspeech2_extractor.DeepSpeech2Extractor(input_dim: int, in_channels: int = 1, out_channels: int = 32, activation: str = 'hardtanh')[source]¶
- DeepSpeech2 extractor for automatic speech recognition described in “Deep Speech 2: End-to-End Speech Recognition in English and Mandarin” paper - https://arxiv.org/abs/1512.02595 - Parameters
 - Inputs: inputs, input_lengths
- inputs (batch, time, dim): Tensor containing input vectors 
- input_lengths: Tensor containing containing sequence lengths 
 
- Returns: outputs, output_lengths
- outputs: Tensor produced by the convolution 
- output_lengths: Tensor containing sequence lengths produced by the convolution 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- inputs: torch.FloatTensor (batch, time, dimension) input_lengths: torch.IntTensor (batch) 
 
Depthwise Conv1d¶
- 
class openspeech.modules.depthwise_conv1d.DepthwiseConv1d(in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, padding: int = 0, bias: bool = False)[source]¶
- When groups == in_channels and out_channels == K * in_channels, where K is a positive integer, this operation is termed in literature as depthwise convolution. - Parameters
- in_channels (int) – Number of channels in the input 
- out_channels (int) – Number of channels produced by the convolution 
- stride (int, optional) – Stride of the convolution. Default: 1 
- padding (int or tuple, optional) – Zero-padding added to both sides of the input. Default: 0 
- bias (bool, optional) – If True, adds a learnable bias to the output. Default: True 
 
 - Inputs: inputs
- inputs (batch, in_channels, time): Tensor containing input vector 
 
- Returns: outputs
- outputs (batch, out_channels, time): Tensor produces by depthwise 1-D convolution. 
 
 
Dot-product Attention¶
- 
class openspeech.modules.dot_product_attention.DotProductAttention(dim: int, scale: bool = True)[source]¶
- Scaled Dot-Product Attention proposed in “Attention Is All You Need” Compute the dot products of the query with all keys, divide each by sqrt(dim), and apply a softmax function to obtain the weights on the values - Args: dim, mask
- dim (int): dimension of attention mask (torch.Tensor): tensor containing indices to be masked 
- Inputs: query, key, value, mask
- query (batch, q_len, d_model): tensor containing projection vector for decoders. 
- key (batch, k_len, d_model): tensor containing projection vector for encoders. 
- value (batch, v_len, d_model): tensor containing features of the encoded input sequence. 
- mask (-): tensor containing indices to be masked 
 
- Returns: context, attn
- context: tensor containing the context vector from attention mechanism. 
- attn: tensor containing the attention (alignment) from the encoders outputs. 
 
 
GLU¶
Jasper Block¶
- 
class openspeech.modules.jasper_block.JasperBlock(num_sub_blocks: int, in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, dilation: int = 1, bias: bool = True, dropout_p: float = 0.2, activation: str = 'relu')[source]¶
- Jasper Block: The Jasper Block consists of R Jasper sub-block. - Parameters
- num_sub_blocks (int) – number of sub block 
- in_channels (int) – number of channels in the input feature 
- out_channels (int) – number of channels produced by the convolution 
- kernel_size (int) – size of the convolving kernel 
- stride (int) – stride of the convolution. (default: 1) 
- dilation (int) – spacing between kernel elements. (default: 1) 
- bias (bool) – if True, adds a learnable bias to the output. (default: True) 
- dropout_p (float) – probability of dropout 
- activation (str) – activation function 
 
 - Inputs: inputs, input_lengths, residual
- inputs: tensor contains input sequence vector 
- input_lengths: tensor contains sequence lengths 
- residual: tensor contains residual vector 
 
- Returns: output, output_lengths
- (torch.FloatTensor, torch.LongTensor) - output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor, residual: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- Forward propagate of jasper block. - Inputs: inputs, input_lengths, residual
- inputs: tensor contains input sequence vector 
- input_lengths: tensor contains sequence lengths 
- residual: tensor contains residual vector 
 
- Returns: output, output_lengths
- (torch.FloatTensor, torch.LongTensor) - output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 
 
Jasper Sub Block¶
- 
class openspeech.modules.jasper_subblock.JasperSubBlock(in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, dilation: int = 1, padding: int = 0, bias: bool = False, dropout_p: float = 0.2, activation: str = 'relu')[source]¶
- Jasper sub-block applies the following operations: a 1D-convolution, batch norm, ReLU, and dropout. - Parameters
- in_channels (int) – number of channels in the input feature 
- out_channels (int) – number of channels produced by the convolution 
- kernel_size (int) – size of the convolving kernel 
- stride (int) – stride of the convolution. (default: 1) 
- dilation (int) – spacing between kernel elements. (default: 1) 
- padding (int) – zero-padding added to both sides of the input. (default: 0) 
- bias (bool) – if True, adds a learnable bias to the output. (default: False) 
- dropout_p (float) – probability of dropout 
- activation (str) – activation function 
 
 - Inputs: inputs, input_lengths, residual
- inputs: tensor contains input sequence vector 
- input_lengths: tensor contains sequence lengths 
- residual: tensor contains residual vector 
 
- Returns: output, output_lengths
- output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor, residual: Optional[torch.Tensor] = None) → Tuple[torch.Tensor, torch.Tensor][source]¶
- Forward propagate of conformer’s subblock. - Inputs: inputs, input_lengths, residual
- inputs: tensor contains input sequence vector 
- input_lengths: tensor contains sequence lengths 
- residual: tensor contains residual vector 
 
- Returns: output, output_lengths
- output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 
 
Location Aware Attention¶
- 
class openspeech.modules.location_aware_attention.LocationAwareAttention(dim: int = 1024, attn_dim: int = 1024, smoothing: bool = False)[source]¶
- Applies a location-aware attention mechanism on the output features from the decoders. Location-aware attention proposed in “Attention-Based Models for Speech Recognition” paper. The location-aware attention mechanism is performing well in speech recognition tasks. We refer to implementation of ClovaCall Attention style. - Parameters
 - Inputs: query, value, last_attn
- query (batch, q_len, hidden_dim): tensor containing the output features from the decoders. 
- value (batch, v_len, hidden_dim): tensor containing features of the encoded input sequence. 
- last_attn (batch_size, v_len): tensor containing previous timestep`s attention (alignment) 
 
- Returns: output, attn
- output (batch, output_len, dimensions): tensor containing the feature from encoders outputs 
- attn (batch * num_heads, v_len): tensor containing the attention (alignment) from the encoders outputs. 
 
- Reference:
- Jan Chorowski et al.: Attention-Based Models for Speech Recognition. https://arxiv.org/abs/1506.07503 
 
Mask¶
Mask Conv1d¶
- 
class openspeech.modules.mask_conv1d.MaskConv1d(in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, padding: int = 0, dilation: int = 1, groups: int = 1, bias: bool = False)[source]¶
- 1D convolution with masking - Parameters
- in_channels (int) – Number of channels in the input vector 
- out_channels (int) – Number of channels produced by the convolution 
- stride (int) – Stride of the convolution. Default: 1 
- padding (int) – Zero-padding added to both sides of the input. Default: 0 
- dilation (int) – Spacing between kernel elements. Default: 1 
- groups (int) – Number of blocked connections from input channels to output channels. Default: 1 
- bias (bool) – If True, adds a learnable bias to the output. Default: True 
 
 - Inputs: inputs, seq_lengths
- inputs (torch.FloatTensor): The input of size (batch, dimension, time) 
- seq_lengths (torch.IntTensor): The actual length of each sequence in the batch 
 
- Returns: output, seq_lengths
- output: Masked output from the conv1d 
- seq_lengths: Sequence length of output from the conv1d 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- inputs: (batch, dimension, time) input_lengths: (batch) 
 
Mask Conv2d¶
- 
class openspeech.modules.mask_conv2d.MaskConv2d(sequential: torch.nn.modules.container.Sequential)[source]¶
- Masking Convolutional Neural Network - Adds padding to the output of the module based on the given lengths. This is to ensure that the results of the model do not change when batch sizes change during inference. Input needs to be in the shape of (batch_size, channel, hidden_dim, seq_len) - Refer to https://github.com/SeanNaren/deepspeech.pytorch/blob/master/model.py Copyright (c) 2017 Sean Naren MIT License - Parameters
- sequential (torch.nn) – sequential list of convolution layer 
 - Inputs: inputs, seq_lengths
- inputs (torch.FloatTensor): The input of size BxCxHxT 
- seq_lengths (torch.IntTensor): The actual length of each sequence in the batch 
 
- Returns: output, seq_lengths
- output: Masked output from the sequential 
- seq_lengths: Sequence length of output from the sequential 
 
 
Multi-Head Attention¶
- 
class openspeech.modules.multi_head_attention.MultiHeadAttention(dim: int = 512, num_heads: int = 8)[source]¶
- Multi-Head Attention proposed in “Attention Is All You Need” Instead of performing a single attention function with d_model-dimensional keys, values, and queries, project the queries, keys and values h times with different, learned linear projections to d_head dimensions. These are concatenated and once again projected, resulting in the final values. Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions. - MultiHead(Q, K, V) = Concat(head_1, …, head_h) · W_o
- where head_i = Attention(Q · W_q, K · W_k, V · W_v) 
 - Parameters
 - Inputs: query, key, value, mask
- query (batch, q_len, d_model): tensor containing projection vector for decoders. 
- key (batch, k_len, d_model): tensor containing projection vector for encoders. 
- value (batch, v_len, d_model): tensor containing features of the encoded input sequence. 
- mask (-): tensor containing indices to be masked 
 
- Returns: output, attn
- output (batch, output_len, dimensions): tensor containing the attended output features. 
- attn (batch * num_heads, v_len): tensor containing the attention (alignment) from the encoders outputs. 
 
 
Pointwise Conv1d¶
- 
class openspeech.modules.pointwise_conv1d.PointwiseConv1d(in_channels: int, out_channels: int, stride: int = 1, padding: int = 0, bias: bool = True)[source]¶
- When kernel size == 1 conv1d, this operation is termed in literature as pointwise convolution. This operation often used to match dimensions. - Parameters
- in_channels (int) – Number of channels in the input 
- out_channels (int) – Number of channels produced by the convolution 
- stride (int, optional) – Stride of the convolution. Default: 1 
- padding (int or tuple, optional) – Zero-padding added to both sides of the input. Default: 0 
- bias (bool, optional) – If True, adds a learnable bias to the output. Default: True 
 
 - Inputs: inputs
- inputs (batch, in_channels, time): Tensor containing input vector 
 
- Returns: outputs
- outputs (batch, out_channels, time): Tensor produces by pointwise 1-D convolution. 
 
 
Positional Encoding¶
- 
class openspeech.modules.positional_encoding.PositionalEncoding(d_model: int = 512, max_len: int = 5000)[source]¶
- Positional Encoding proposed in “Attention Is All You Need”. Since transformer contains no recurrence and no convolution, in order for the model to make use of the order of the sequence, we must add some positional information. - “Attention Is All You Need” use sine and cosine functions of different frequencies:
- PE_(pos, 2i) = sin(pos / power(10000, 2i / d_model)) PE_(pos, 2i+1) = cos(pos / power(10000, 2i / d_model)) 
 
Position-wise Feed-Forward¶
- 
class openspeech.modules.positionwise_feed_forward.PositionwiseFeedForward(d_model: int = 512, d_ff: int = 2048, dropout_p: float = 0.3)[source]¶
- Position-wise Feedforward Networks proposed in “Attention Is All You Need”. Fully connected feed-forward network, which is applied to each position separately and identically. This consists of two linear transformations with a ReLU activation in between. Another way of describing this is as two convolutions with kernel size 1. 
QuartzNet Block¶
- 
class openspeech.modules.quartznet_block.QuartzNetBlock(num_sub_blocks: int, in_channels: int, out_channels: int, kernel_size: int, bias: bool = True)[source]¶
- QuartzNet’s design is based on the Jasper architecture, which is a convolutional model trained with Connectionist Temporal Classification (CTC) loss. The main novelty in QuartzNet’s architecture is that QuartzNet replaced the 1D convolutions with 1D time-channel separable convolutions, an implementation of depthwise separable convolutions. - Inputs: inputs, input_lengths
- inputs (torch.FloatTensor): tensor contains input sequence vector input_lengths (torch.LongTensor): tensor contains sequence lengths 
- Returns: output, output_lengths
- (torch.FloatTensor, torch.LongTensor) - output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- Forward propagate of QuartzNet block. - Inputs: inputs, input_lengths
- inputs (torch.FloatTensor): tensor contains input sequence vector input_lengths (torch.LongTensor): tensor contains sequence lengths 
- Returns: output, output_lengths
- (torch.FloatTensor, torch.LongTensor) - output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 
 
QuartzNet Sub Block¶
- 
class openspeech.modules.quartznet_subblock.QuartzNetSubBlock(in_channels: int, out_channels: int, kernel_size: int, bias: bool = False, padding: int = 0, groups: int = 1)[source]¶
- QuartzNet sub-block applies the following operations: a 1D-convolution, batch norm, ReLU, and dropout. - Parameters
- in_channels (int) – number of channels in the input feature 
- out_channels (int) – number of channels produced by the convolution 
- kernel_size (int) – size of the convolving kernel 
- padding (int) – zero-padding added to both sides of the input. (default: 0) 
- bias (bool) – if True, adds a learnable bias to the output. (default: False) 
 
 - Inputs: inputs, input_lengths, residual
- inputs: tensor contains input sequence vector 
- input_lengths: tensor contains sequence lengths 
- residual: tensor contains residual vector 
 
- Returns: output, output_lengths
- output (torch.FloatTensor): tensor contains output sequence vector 
- output_lengths (torch.LongTensor): tensor contains output sequence lengths 
 
 
Relative Multi-Head Attention¶
- 
class openspeech.modules.relative_multi_head_attention.RelativeMultiHeadAttention(dim: int = 512, num_heads: int = 16, dropout_p: float = 0.1)[source]¶
- Multi-head attention with relative positional encoding. This concept was proposed in the “Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context” - Parameters
 - Inputs: query, key, value, pos_embedding, mask
- query (batch, time, dim): Tensor containing query vector 
- key (batch, time, dim): Tensor containing key vector 
- value (batch, time, dim): Tensor containing value vector 
- pos_embedding (batch, time, dim): Positional embedding tensor 
- mask (batch, 1, time2) or (batch, time1, time2): Tensor containing indices to be masked 
 
 - Returns
- Tensor produces by relative multi head attention module. 
- Return type
- outputs 
 
 
Residual Connection Module¶
Swish¶
Time-Channel Separable Conv1d¶
- 
class openspeech.modules.time_channel_separable_conv1d.TimeChannelSeparableConv1d(in_channels: int, out_channels: int, kernel_size: int = 1, padding: int = 0, groups: int = 1, bias: bool = True)[source]¶
- The total number of weights for a time-channel separable convolution block is K × cin + cin × cout weights. Since K is generally several times smaller than cout, most weights are concentrated in the pointwise convolution part. 
Transformer Embedding¶
- 
class openspeech.modules.transformer_embedding.TransformerEmbedding(num_embeddings: int, pad_id: int, d_model: int = 512)[source]¶
- Embedding layer. Similarly to other sequence transduction models, transformer use learned embeddings to convert the input tokens and output tokens to vectors of dimension d_model. In the embedding layers, transformer multiply those weights by sqrt(d_model) - Parameters
 - Inputs:
- inputs (torch.FloatTensor): input of embedding layer 
 - Returns
- output of embedding layer 
- Return type
- outputs (torch.FloatTensor) 
 - 
forward(inputs: torch.Tensor) → torch.Tensor[source]¶
- Forward propagate of embedding layer. - Inputs:
- inputs (torch.FloatTensor): input of embedding layer 
 - Returns
- output of embedding layer 
- Return type
- outputs (torch.FloatTensor) 
 
 
VGG Extractor¶
- 
class openspeech.modules.vgg_extractor.VGGExtractor(input_dim: int, in_channels: int = 1, out_channels: int = 64, 128, activation: str = 'hardtanh')[source]¶
- VGG extractor for automatic speech recognition described in “Advances in Joint CTC-Attention based End-to-End Speech Recognition with a Deep CNN Encoder and RNN-LM” paper - https://arxiv.org/pdf/1706.02737.pdf - Parameters
 - Inputs: inputs, input_lengths
- inputs (batch, time, dim): Tensor containing input vectors 
- input_lengths: Tensor containing containing sequence lengths 
 
- Returns: outputs, output_lengths
- outputs: Tensor produced by the convolution 
- output_lengths: Tensor containing sequence lengths produced by the convolution 
 
 - 
forward(inputs: torch.Tensor, input_lengths: torch.Tensor) → Tuple[torch.Tensor, torch.Tensor][source]¶
- inputs: torch.FloatTensor (batch, time, dimension) input_lengths: torch.IntTensor (batch) 
 
Wrapper¶
- 
class openspeech.modules.wrapper.Linear(in_features: int, out_features: int, bias: bool = True)[source]¶
- Wrapper class of torch.nn.Linear Weight initialize by xavier initialization and bias initialize to zeros.