mirror of
https://github.com/k2-fsa/icefall.git
synced 2025-08-14 04:22:21 +00:00
Fix style and add copyright
This commit is contained in:
parent
8469f9ae0a
commit
b4fd6338bb
3
.flake8
3
.flake8
@ -2,6 +2,9 @@
|
|||||||
show-source=true
|
show-source=true
|
||||||
statistics=true
|
statistics=true
|
||||||
max-line-length = 80
|
max-line-length = 80
|
||||||
|
per-file-ignores =
|
||||||
|
# line too long
|
||||||
|
egs/librispeech/ASR/conformer_ctc/conformer.py: E501,
|
||||||
|
|
||||||
exclude =
|
exclude =
|
||||||
.git,
|
.git,
|
||||||
|
@ -1,7 +1,21 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
# 2021 University of Chinese Academy of Sciences (author: Han Zhu)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# Copyright (c) 2021 University of Chinese Academy of Sciences (author: Han Zhu)
|
|
||||||
# Apache 2.0
|
|
||||||
|
|
||||||
import math
|
import math
|
||||||
import warnings
|
import warnings
|
||||||
@ -15,19 +29,19 @@ from transformer import Supervisions, Transformer, encoder_padding_mask
|
|||||||
class Conformer(Transformer):
|
class Conformer(Transformer):
|
||||||
"""
|
"""
|
||||||
Args:
|
Args:
|
||||||
num_features (int): Number of input features
|
num_features (int): Number of input features
|
||||||
num_classes (int): Number of output classes
|
num_classes (int): Number of output classes
|
||||||
subsampling_factor (int): subsampling factor of encoder (the convolution layers before transformers)
|
subsampling_factor (int): subsampling factor of encoder (the convolution layers before transformers)
|
||||||
d_model (int): attention dimension
|
d_model (int): attention dimension
|
||||||
nhead (int): number of head
|
nhead (int): number of head
|
||||||
dim_feedforward (int): feedforward dimention
|
dim_feedforward (int): feedforward dimention
|
||||||
num_encoder_layers (int): number of encoder layers
|
num_encoder_layers (int): number of encoder layers
|
||||||
num_decoder_layers (int): number of decoder layers
|
num_decoder_layers (int): number of decoder layers
|
||||||
dropout (float): dropout rate
|
dropout (float): dropout rate
|
||||||
cnn_module_kernel (int): Kernel size of convolution module
|
cnn_module_kernel (int): Kernel size of convolution module
|
||||||
normalize_before (bool): whether to use layer_norm before the first block.
|
normalize_before (bool): whether to use layer_norm before the first block.
|
||||||
vgg_frontend (bool): whether to use vgg frontend.
|
vgg_frontend (bool): whether to use vgg frontend.
|
||||||
"""
|
""" # noqa E501
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -80,8 +94,8 @@ class Conformer(Transformer):
|
|||||||
if self.normalize_before and self.is_espnet_structure:
|
if self.normalize_before and self.is_espnet_structure:
|
||||||
self.after_norm = nn.LayerNorm(d_model)
|
self.after_norm = nn.LayerNorm(d_model)
|
||||||
else:
|
else:
|
||||||
# Note: TorchScript detects that self.after_norm could be used inside forward()
|
# Note: TorchScript detects that self.after_norm could be used
|
||||||
# and throws an error without this change.
|
# inside forward() and throws an error without this change.
|
||||||
self.after_norm = identity
|
self.after_norm = identity
|
||||||
|
|
||||||
def run_encoder(
|
def run_encoder(
|
||||||
@ -93,7 +107,7 @@ class Conformer(Transformer):
|
|||||||
The model input. Its shape is [N, T, C].
|
The model input. Its shape is [N, T, C].
|
||||||
supervisions:
|
supervisions:
|
||||||
Supervision in lhotse format.
|
Supervision in lhotse format.
|
||||||
See https://github.com/lhotse-speech/lhotse/blob/master/lhotse/dataset/speech_recognition.py#L32 # noqa
|
See https://github.com/lhotse-speech/lhotse/blob/master/lhotse/dataset/speech_recognition.py#L32
|
||||||
CAUTION: It contains length information, i.e., start and number of
|
CAUTION: It contains length information, i.e., start and number of
|
||||||
frames, before subsampling
|
frames, before subsampling
|
||||||
It is read directly from the batch, without any sorting. It is used
|
It is read directly from the batch, without any sorting. It is used
|
||||||
@ -119,17 +133,18 @@ class Conformer(Transformer):
|
|||||||
|
|
||||||
|
|
||||||
class ConformerEncoderLayer(nn.Module):
|
class ConformerEncoderLayer(nn.Module):
|
||||||
"""
|
"""ConformerEncoderLayer is made up of self-attn, feedforward and
|
||||||
ConformerEncoderLayer is made up of self-attn, feedforward and convolution networks.
|
convolution networks.
|
||||||
|
|
||||||
See: "Conformer: Convolution-augmented Transformer for Speech Recognition"
|
See: "Conformer: Convolution-augmented Transformer for Speech Recognition"
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
d_model: the number of expected features in the input (required).
|
d_model: the number of expected features in the input (required).
|
||||||
nhead: the number of heads in the multiheadattention models (required).
|
nhead: the number of heads in the multiheadattention models (required).
|
||||||
dim_feedforward: the dimension of the feedforward network model (default=2048).
|
dim_feedforward: the dimension of the feedforward network model (default=2048).
|
||||||
dropout: the dropout value (default=0.1).
|
dropout: the dropout value (default=0.1).
|
||||||
cnn_module_kernel (int): Kernel size of convolution module.
|
cnn_module_kernel (int): Kernel size of convolution module.
|
||||||
normalize_before: whether to use layer_norm before the first block.
|
normalize_before: whether to use layer_norm before the first block.
|
||||||
|
|
||||||
Examples::
|
Examples::
|
||||||
>>> encoder_layer = ConformerEncoderLayer(d_model=512, nhead=8)
|
>>> encoder_layer = ConformerEncoderLayer(d_model=512, nhead=8)
|
||||||
@ -193,8 +208,7 @@ class ConformerEncoderLayer(nn.Module):
|
|||||||
src_mask: Optional[Tensor] = None,
|
src_mask: Optional[Tensor] = None,
|
||||||
src_key_padding_mask: Optional[Tensor] = None,
|
src_key_padding_mask: Optional[Tensor] = None,
|
||||||
) -> Tensor:
|
) -> Tensor:
|
||||||
"""
|
"""Pass the input through the encoder layer.
|
||||||
Pass the input through the encoder layer.
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
src: the sequence to the encoder layer (required).
|
src: the sequence to the encoder layer (required).
|
||||||
@ -301,7 +315,8 @@ class ConformerEncoder(nn.TransformerEncoder):
|
|||||||
pos_emb: (N, 2*S-1, E)
|
pos_emb: (N, 2*S-1, E)
|
||||||
mask: (S, S).
|
mask: (S, S).
|
||||||
src_key_padding_mask: (N, S).
|
src_key_padding_mask: (N, S).
|
||||||
S is the source sequence length, T is the target sequence length, N is the batch size, E is the feature number
|
S is the source sequence length, T is the target sequence length,
|
||||||
|
N is the batch size, E is the feature number
|
||||||
|
|
||||||
"""
|
"""
|
||||||
output = src
|
output = src
|
||||||
@ -396,7 +411,7 @@ class RelPositionalEncoding(torch.nn.Module):
|
|||||||
:,
|
:,
|
||||||
self.pe.size(1) // 2
|
self.pe.size(1) // 2
|
||||||
- x.size(1)
|
- x.size(1)
|
||||||
+ 1 : self.pe.size(1) // 2
|
+ 1: self.pe.size(1) // 2
|
||||||
+ x.size(1),
|
+ x.size(1),
|
||||||
]
|
]
|
||||||
return self.dropout(x), self.dropout(pos_emb)
|
return self.dropout(x), self.dropout(pos_emb)
|
||||||
@ -470,42 +485,48 @@ class RelPositionMultiheadAttention(nn.Module):
|
|||||||
Args:
|
Args:
|
||||||
query, key, value: map a query and a set of key-value pairs to an output.
|
query, key, value: map a query and a set of key-value pairs to an output.
|
||||||
pos_emb: Positional embedding tensor
|
pos_emb: Positional embedding tensor
|
||||||
key_padding_mask: if provided, specified padding elements in the key will
|
key_padding_mask: if provided, specified padding elements in the key
|
||||||
be ignored by the attention. When given a binary mask and a value is True,
|
will be ignored by the attention. When given a binary mask and
|
||||||
the corresponding value on the attention layer will be ignored. When given
|
a value is True, the corresponding value on the attention layer
|
||||||
a byte mask and a value is non-zero, the corresponding value on the attention
|
will be ignored. When given a byte mask and a value is non-zero,
|
||||||
layer will be ignored
|
the corresponding value on the attention layer will be ignored.
|
||||||
need_weights: output attn_output_weights.
|
need_weights: output attn_output_weights.
|
||||||
attn_mask: 2D or 3D mask that prevents attention to certain positions. A 2D mask will be broadcasted for all
|
attn_mask: 2D or 3D mask that prevents attention to certain positions.
|
||||||
the batches while a 3D mask allows to specify a different mask for the entries of each batch.
|
A 2D mask will be broadcasted for all the batches while a 3D mask
|
||||||
|
allows to specify a different mask for the entries of each batch.
|
||||||
|
|
||||||
Shape:
|
Shape:
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- query: :math:`(L, N, E)` where L is the target sequence length, N is the batch size, E is
|
- query: :math:`(L, N, E)` where L is the target sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- key: :math:`(S, N, E)`, where S is the source sequence length, N is the batch size, E is
|
- key: :math:`(S, N, E)`, where S is the source sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- value: :math:`(S, N, E)` where S is the source sequence length, N is the batch size, E is
|
- value: :math:`(S, N, E)` where S is the source sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- pos_emb: :math:`(N, 2*L-1, E)` where L is the target sequence length, N is the batch size, E is
|
- pos_emb: :math:`(N, 2*L-1, E)` where L is the target sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- key_padding_mask: :math:`(N, S)` where N is the batch size, S is the source sequence length.
|
- key_padding_mask: :math:`(N, S)` where N is the batch size,
|
||||||
If a ByteTensor is provided, the non-zero positions will be ignored while the position
|
S is the source sequence length. If a ByteTensor is provided,
|
||||||
with the zero positions will be unchanged. If a BoolTensor is provided, the positions with the
|
the non-zero positions will be ignored while the position
|
||||||
value of ``True`` will be ignored while the position with the value of ``False`` will be unchanged.
|
with the zero positions will be unchanged. If a BoolTensor is provided,
|
||||||
- attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length, S is the source sequence length.
|
the positions with the value of ``True`` will be ignored while
|
||||||
3D mask :math:`(N*num_heads, L, S)` where N is the batch size, L is the target sequence length,
|
the position with the value of ``False`` will be unchanged.
|
||||||
S is the source sequence length. attn_mask ensure that position i is allowed to attend the unmasked
|
- attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length,
|
||||||
positions. If a ByteTensor is provided, the non-zero positions are not allowed to attend
|
S is the source sequence length. 3D mask :math:`(N*num_heads, L, S)`
|
||||||
while the zero positions will be unchanged. If a BoolTensor is provided, positions with ``True``
|
where N is the batch size, L is the target sequence length,
|
||||||
is not allowed to attend while ``False`` values will be unchanged. If a FloatTensor
|
S is the source sequence length. attn_mask ensure that position
|
||||||
is provided, it will be added to the attention weight.
|
i is allowed to attend the unmasked positions.
|
||||||
|
If a ByteTensor is provided, the non-zero positions are not
|
||||||
|
allowed to attend while the zero positions will be unchanged.
|
||||||
|
If a BoolTensor is provided, positions with ``True`` is not allowed
|
||||||
|
to attend while ``False`` values will be unchanged.
|
||||||
|
If a FloatTensor is provided, it will be added to the attention weight.
|
||||||
|
|
||||||
- Outputs:
|
- Outputs:
|
||||||
- attn_output: :math:`(L, N, E)` where L is the target sequence length, N is the batch size,
|
- attn_output: :math:`(L, N, E)` where L is the target sequence length,
|
||||||
E is the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- attn_output_weights: :math:`(N, L, S)` where N is the batch size,
|
- attn_output_weights: :math:`(N, L, S)` where N is the batch size,
|
||||||
L is the target sequence length, S is the source sequence length.
|
L is the target sequence length, S is the source sequence length.
|
||||||
"""
|
"""
|
||||||
return self.multi_head_attention_forward(
|
return self.multi_head_attention_forward(
|
||||||
query,
|
query,
|
||||||
@ -582,36 +603,43 @@ class RelPositionMultiheadAttention(nn.Module):
|
|||||||
be ignored by the attention. This is an binary mask. When the value is True,
|
be ignored by the attention. This is an binary mask. When the value is True,
|
||||||
the corresponding value on the attention layer will be filled with -inf.
|
the corresponding value on the attention layer will be filled with -inf.
|
||||||
need_weights: output attn_output_weights.
|
need_weights: output attn_output_weights.
|
||||||
attn_mask: 2D or 3D mask that prevents attention to certain positions. A 2D mask will be broadcasted for all
|
attn_mask: 2D or 3D mask that prevents attention to certain positions.
|
||||||
the batches while a 3D mask allows to specify a different mask for the entries of each batch.
|
A 2D mask will be broadcasted for all the batches while a 3D mask
|
||||||
|
allows to specify a different mask for the entries of each batch.
|
||||||
|
|
||||||
Shape:
|
Shape:
|
||||||
Inputs:
|
Inputs:
|
||||||
- query: :math:`(L, N, E)` where L is the target sequence length, N is the batch size, E is
|
- query: :math:`(L, N, E)` where L is the target sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- key: :math:`(S, N, E)`, where S is the source sequence length, N is the batch size, E is
|
- key: :math:`(S, N, E)`, where S is the source sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- value: :math:`(S, N, E)` where S is the source sequence length, N is the batch size, E is
|
- value: :math:`(S, N, E)` where S is the source sequence length,
|
||||||
the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- pos_emb: :math:`(N, 2*L-1, E)` or :math:`(1, 2*L-1, E)` where L is the target sequence
|
- pos_emb: :math:`(N, 2*L-1, E)` or :math:`(1, 2*L-1, E)` where
|
||||||
length, N is the batch size, E is the embedding dimension.
|
L is the target sequencelength, N is the batch size,
|
||||||
- key_padding_mask: :math:`(N, S)` where N is the batch size, S is the source sequence length.
|
E is the embedding dimension.
|
||||||
If a ByteTensor is provided, the non-zero positions will be ignored while the zero positions
|
- key_padding_mask: :math:`(N, S)` where N is the batch size,
|
||||||
will be unchanged. If a BoolTensor is provided, the positions with the
|
S is the source sequence length. If a ByteTensor is provided,
|
||||||
value of ``True`` will be ignored while the position with the value of ``False`` will be unchanged.
|
the non-zero positions will be ignored while the zero positions
|
||||||
- attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length, S is the source sequence length.
|
will be unchanged. If a BoolTensor is provided, the positions with the
|
||||||
3D mask :math:`(N*num_heads, L, S)` where N is the batch size, L is the target sequence length,
|
value of ``True`` will be ignored while the position with the
|
||||||
S is the source sequence length. attn_mask ensures that position i is allowed to attend the unmasked
|
value of ``False`` will be unchanged.
|
||||||
positions. If a ByteTensor is provided, the non-zero positions are not allowed to attend
|
- attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length,
|
||||||
while the zero positions will be unchanged. If a BoolTensor is provided, positions with ``True``
|
S is the source sequence length. 3D mask :math:`(N*num_heads, L, S)`
|
||||||
are not allowed to attend while ``False`` values will be unchanged. If a FloatTensor
|
where N is the batch size, L is the target sequence length,
|
||||||
is provided, it will be added to the attention weight.
|
S is the source sequence length. attn_mask ensures that position
|
||||||
|
i is allowed to attend the unmasked positions.
|
||||||
|
If a ByteTensor is provided, the non-zero positions are not
|
||||||
|
allowed to attend while the zero positions will be unchanged.
|
||||||
|
If a BoolTensor is provided, positions with ``True`` are not
|
||||||
|
allowed to attend while ``False`` values will be unchanged.
|
||||||
|
If a FloatTensor is provided, it will be added to the attention weight.
|
||||||
|
|
||||||
Outputs:
|
Outputs:
|
||||||
- attn_output: :math:`(L, N, E)` where L is the target sequence length, N is the batch size,
|
- attn_output: :math:`(L, N, E)` where L is the target sequence length,
|
||||||
E is the embedding dimension.
|
N is the batch size, E is the embedding dimension.
|
||||||
- attn_output_weights: :math:`(N, L, S)` where N is the batch size,
|
- attn_output_weights: :math:`(N, L, S)` where N is the batch size,
|
||||||
L is the target sequence length, S is the source sequence length.
|
L is the target sequence length, S is the source sequence length.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
tgt_len, bsz, embed_dim = query.size()
|
tgt_len, bsz, embed_dim = query.size()
|
||||||
@ -844,7 +872,7 @@ class ConvolutionModule(nn.Module):
|
|||||||
kernel_size (int): Kernerl size of conv layers.
|
kernel_size (int): Kernerl size of conv layers.
|
||||||
bias (bool): Whether to use bias in conv layers (default=True).
|
bias (bool): Whether to use bias in conv layers (default=True).
|
||||||
|
|
||||||
"""
|
""" # noqa
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, channels: int, kernel_size: int, bias: bool = True
|
self, channels: int, kernel_size: int, bias: bool = True
|
||||||
|
@ -1,8 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Copyright 2021 Xiaomi Corporation (Author: Liyong Guo, Fangjun Kuang)
|
# Copyright 2021 Xiaomi Corporation (Author: Liyong Guo, Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# (still working in progress)
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
@ -59,7 +75,7 @@ def get_parser():
|
|||||||
decoding lattice and then use 1best to decode the
|
decoding lattice and then use 1best to decode the
|
||||||
rescored lattice.
|
rescored lattice.
|
||||||
We call it HLG decoding + n-gram LM rescoring.
|
We call it HLG decoding + n-gram LM rescoring.
|
||||||
(3) attention-decoder - Extract n paths from he rescored
|
(3) attention-decoder - Extract n paths from the rescored
|
||||||
lattice and use the transformer attention decoder for
|
lattice and use the transformer attention decoder for
|
||||||
rescoring.
|
rescoring.
|
||||||
We call it HLG decoding + n-gram LM rescoring + attention
|
We call it HLG decoding + n-gram LM rescoring + attention
|
||||||
@ -248,6 +264,7 @@ def main():
|
|||||||
G = G.to(device)
|
G = G.to(device)
|
||||||
# Add epsilon self-loops to G as we will compose
|
# Add epsilon self-loops to G as we will compose
|
||||||
# it with the whole lattice later
|
# it with the whole lattice later
|
||||||
|
G = G.to(device)
|
||||||
G = k2.add_epsilon_self_loops(G)
|
G = k2.add_epsilon_self_loops(G)
|
||||||
G = k2.arc_sort(G)
|
G = k2.arc_sort(G)
|
||||||
G.lm_scores = G.scores.clone()
|
G.lm_scores = G.scores.clone()
|
||||||
@ -268,7 +285,7 @@ def main():
|
|||||||
)
|
)
|
||||||
waves = [w.to(device) for w in waves]
|
waves = [w.to(device) for w in waves]
|
||||||
|
|
||||||
logging.info(f"Decoding started")
|
logging.info("Decoding started")
|
||||||
features = fbank(waves)
|
features = fbank(waves)
|
||||||
|
|
||||||
features = pad_sequence(
|
features = pad_sequence(
|
||||||
@ -338,7 +355,7 @@ def main():
|
|||||||
s += f"{filename}:\n{words}\n\n"
|
s += f"{filename}:\n{words}\n\n"
|
||||||
logging.info(s)
|
logging.info(s)
|
||||||
|
|
||||||
logging.info(f"Decoding Done")
|
logging.info("Decoding Done")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
import torch.nn as nn
|
import torch.nn as nn
|
||||||
|
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
from subsampling import Conv2dSubsampling
|
from subsampling import Conv2dSubsampling
|
||||||
from subsampling import VggSubsampling
|
from subsampling import VggSubsampling
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
from transformer import (
|
from transformer import (
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# This is just at the very beginning ...
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
|
@ -1,5 +1,19 @@
|
|||||||
# Copyright (c) 2021 University of Chinese Academy of Sciences (author: Han Zhu)
|
# Copyright 2021 University of Chinese Academy of Sciences (author: Han Zhu)
|
||||||
# Apache 2.0
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import Dict, List, Optional, Tuple
|
from typing import Dict, List, Optional, Tuple
|
||||||
@ -779,7 +793,8 @@ class Noam(object):
|
|||||||
|
|
||||||
class LabelSmoothingLoss(nn.Module):
|
class LabelSmoothingLoss(nn.Module):
|
||||||
"""
|
"""
|
||||||
Label-smoothing loss. KL-divergence between q_{smoothed ground truth prob.}(w)
|
Label-smoothing loss. KL-divergence between
|
||||||
|
q_{smoothed ground truth prob.}(w)
|
||||||
and p_{prob. computed by model}(w) is minimized.
|
and p_{prob. computed by model}(w) is minimized.
|
||||||
Modified from
|
Modified from
|
||||||
https://github.com/espnet/espnet/blob/master/espnet/nets/pytorch_backend/transformer/label_smoothing_loss.py # noqa
|
https://github.com/espnet/espnet/blob/master/espnet/nets/pytorch_backend/transformer/label_smoothing_loss.py # noqa
|
||||||
@ -864,7 +879,8 @@ def encoder_padding_mask(
|
|||||||
frames, before subsampling)
|
frames, before subsampling)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Tensor: Mask tensor of dimension (batch_size, input_length), True denote the masked indices.
|
Tensor: Mask tensor of dimension (batch_size, input_length),
|
||||||
|
True denote the masked indices.
|
||||||
"""
|
"""
|
||||||
if supervisions is None:
|
if supervisions is None:
|
||||||
return None
|
return None
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This script takes as input lang_dir and generates HLG from
|
This script takes as input lang_dir and generates HLG from
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This file computes fbank features of the LibriSpeech dataset.
|
This file computes fbank features of the LibriSpeech dataset.
|
||||||
@ -17,8 +33,9 @@ from lhotse.recipes.utils import read_manifests_if_cached
|
|||||||
|
|
||||||
from icefall.utils import get_executor
|
from icefall.utils import get_executor
|
||||||
|
|
||||||
# Torch's multithreaded behavior needs to be disabled or it wastes a lot of CPU and
|
# Torch's multithreaded behavior needs to be disabled or
|
||||||
# slow things down. Do this outside of main() in case it needs to take effect
|
# it wastes a lot of CPU and slow things down.
|
||||||
|
# Do this outside of main() in case it needs to take effect
|
||||||
# even when we are not invoking the main (e.g. when spawning subprocesses).
|
# even when we are not invoking the main (e.g. when spawning subprocesses).
|
||||||
torch.set_num_threads(1)
|
torch.set_num_threads(1)
|
||||||
torch.set_num_interop_threads(1)
|
torch.set_num_interop_threads(1)
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This file computes fbank features of the musan dataset.
|
This file computes fbank features of the musan dataset.
|
||||||
@ -17,8 +33,9 @@ from lhotse.recipes.utils import read_manifests_if_cached
|
|||||||
|
|
||||||
from icefall.utils import get_executor
|
from icefall.utils import get_executor
|
||||||
|
|
||||||
# Torch's multithreaded behavior needs to be disabled or it wastes a lot of CPU and
|
# Torch's multithreaded behavior needs to be disabled or
|
||||||
# slow things down. Do this outside of main() in case it needs to take effect
|
# it wastes a lot of CPU and slow things down.
|
||||||
|
# Do this outside of main() in case it needs to take effect
|
||||||
# even when we are not invoking the main (e.g. when spawning subprocesses).
|
# even when we are not invoking the main (e.g. when spawning subprocesses).
|
||||||
torch.set_num_threads(1)
|
torch.set_num_threads(1)
|
||||||
torch.set_num_interop_threads(1)
|
torch.set_num_interop_threads(1)
|
||||||
|
@ -1,6 +1,21 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
||||||
"""
|
"""
|
||||||
This file downloads the following LibriSpeech LM files:
|
This file downloads the following LibriSpeech LM files:
|
||||||
|
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This script takes as input a lexicon file "data/lang_phone/lexicon.txt"
|
This script takes as input a lexicon file "data/lang_phone/lexicon.txt"
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
||||||
|
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
||||||
|
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
# You can install sentencepiece via:
|
# You can install sentencepiece via:
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
@ -1,4 +1,19 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
import torch.nn as nn
|
import torch.nn as nn
|
||||||
|
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Union
|
from typing import List, Union
|
||||||
|
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Optional, Union
|
from typing import Any, Dict, List, Optional, Union
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
from typing import List, Union
|
from typing import List, Union
|
||||||
|
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Dict, List, Optional, Tuple, Union
|
from typing import Dict, List, Optional, Tuple, Union
|
||||||
|
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import k2
|
import k2
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
||||||
|
|
||||||
from icefall.bpe_graph_compiler import BpeCtcTrainingGraphCompiler
|
from icefall.bpe_graph_compiler import BpeCtcTrainingGraphCompiler
|
||||||
from icefall.lexicon import BpeLexicon
|
from icefall.lexicon import BpeLexicon
|
||||||
@ -15,7 +29,7 @@ def test():
|
|||||||
|
|
||||||
compiler = BpeCtcTrainingGraphCompiler(lang_dir)
|
compiler = BpeCtcTrainingGraphCompiler(lang_dir)
|
||||||
ids = compiler.texts_to_ids(["HELLO", "WORLD ZZZ"])
|
ids = compiler.texts_to_ids(["HELLO", "WORLD ZZZ"])
|
||||||
fsa = compiler.compile(ids)
|
compiler.compile(ids)
|
||||||
|
|
||||||
lexicon = BpeLexicon(lang_dir)
|
lexicon = BpeLexicon(lang_dir)
|
||||||
ids0 = lexicon.words_to_piece_ids(["HELLO"])
|
ids0 = lexicon.words_to_piece_ids(["HELLO"])
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import torch
|
import torch
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
# Copyright (c) 2021 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -1,4 +1,21 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright 2021 Xiaomi Corp. (authors: Fangjun Kuang)
|
||||||
|
#
|
||||||
|
# See ../../LICENSE for clarification regarding multiple authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
import k2
|
import k2
|
||||||
import pytest
|
import pytest
|
||||||
import torch
|
import torch
|
||||||
|
Loading…
x
Reference in New Issue
Block a user