|
|
|
# https://yaml.org/type/float.html
|
|
|
|
data:
|
|
|
|
train_manifest: data/manifest.train
|
|
|
|
dev_manifest: data/manifest.dev
|
|
|
|
test_manifest: data/manifest.test
|
|
|
|
min_input_len: 0.5
|
|
|
|
max_input_len: 20.0 # second
|
|
|
|
min_output_len: 0.0
|
|
|
|
max_output_len: 400.0
|
|
|
|
min_output_input_ratio: 0.05
|
|
|
|
max_output_input_ratio: 10.0
|
|
|
|
|
|
|
|
|
|
|
|
collator:
|
|
|
|
vocab_filepath: data/vocab.txt
|
|
|
|
unit_type: 'char'
|
|
|
|
spm_model_prefix: ''
|
|
|
|
augmentation_config: conf/augmentation.json
|
|
|
|
batch_size: 32
|
|
|
|
raw_wav: True # use raw_wav or kaldi feature
|
|
|
|
spectrum_type: fbank #linear, mfcc, fbank
|
|
|
|
feat_dim: 80
|
|
|
|
delta_delta: False
|
|
|
|
dither: 1.0
|
|
|
|
target_sample_rate: 8000
|
|
|
|
max_freq: None
|
|
|
|
n_fft: None
|
|
|
|
stride_ms: 10.0
|
|
|
|
window_ms: 25.0
|
|
|
|
use_dB_normalization: True
|
|
|
|
target_dB: -20
|
|
|
|
random_seed: 0
|
|
|
|
keep_transcription_text: False
|
|
|
|
sortagrad: True
|
|
|
|
shuffle_method: batch_shuffle
|
|
|
|
num_workers: 2
|
|
|
|
|
|
|
|
|
|
|
|
# network architecture
|
|
|
|
model:
|
|
|
|
cmvn_file: "data/mean_std.json"
|
|
|
|
cmvn_file_type: "json"
|
|
|
|
# encoder related
|
|
|
|
encoder: conformer
|
|
|
|
encoder_conf:
|
|
|
|
output_size: 256 # dimension of attention
|
|
|
|
attention_heads: 4
|
|
|
|
linear_units: 2048 # the number of units of position-wise feed forward
|
|
|
|
num_blocks: 12 # the number of encoder blocks
|
|
|
|
dropout_rate: 0.1
|
|
|
|
positional_dropout_rate: 0.1
|
|
|
|
attention_dropout_rate: 0.0
|
|
|
|
input_layer: conv2d # encoder input type, you can chose conv2d, conv2d6 and conv2d8
|
|
|
|
normalize_before: True
|
|
|
|
use_cnn_module: True
|
|
|
|
cnn_module_kernel: 15
|
|
|
|
activation_type: 'swish'
|
|
|
|
pos_enc_layer_type: 'rel_pos'
|
|
|
|
selfattention_layer_type: 'rel_selfattn'
|
|
|
|
causal: true
|
|
|
|
use_dynamic_chunk: true
|
|
|
|
cnn_module_norm: 'layer_norm' # using nn.LayerNorm makes model converge faster
|
|
|
|
use_dynamic_left_chunk: false
|
|
|
|
|
|
|
|
# decoder related
|
|
|
|
decoder: transformer
|
|
|
|
decoder_conf:
|
|
|
|
attention_heads: 4
|
|
|
|
linear_units: 2048
|
|
|
|
num_blocks: 6
|
|
|
|
dropout_rate: 0.1
|
|
|
|
positional_dropout_rate: 0.1
|
|
|
|
self_attention_dropout_rate: 0.0
|
|
|
|
src_attention_dropout_rate: 0.0
|
|
|
|
|
|
|
|
# hybrid CTC/attention
|
|
|
|
model_conf:
|
|
|
|
ctc_weight: 0.3
|
|
|
|
lsm_weight: 0.1 # label smoothing option
|
|
|
|
length_normalized_loss: false
|
|
|
|
|
|
|
|
|
|
|
|
training:
|
|
|
|
n_epoch: 240
|
|
|
|
accum_grad: 4
|
|
|
|
global_grad_clip: 5.0
|
|
|
|
optim: adam
|
|
|
|
optim_conf:
|
|
|
|
lr: 0.001
|
|
|
|
weight_decay: 1e-6
|
|
|
|
scheduler: warmuplr # pytorch v1.1.0+ required
|
|
|
|
scheduler_conf:
|
|
|
|
warmup_steps: 25000
|
|
|
|
lr_decay: 1.0
|
|
|
|
log_interval: 100
|
|
|
|
checkpoint:
|
|
|
|
kbest_n: 50
|
|
|
|
latest_n: 5
|
|
|
|
|
|
|
|
|
|
|
|
decoding:
|
|
|
|
batch_size: 128
|
|
|
|
error_rate_type: cer
|
|
|
|
decoding_method: attention # 'attention', 'ctc_greedy_search', 'ctc_prefix_beam_search', 'attention_rescoring'
|
|
|
|
lang_model_path: data/lm/common_crawl_00.prune01111.trie.klm
|
|
|
|
alpha: 2.5
|
|
|
|
beta: 0.3
|
|
|
|
beam_size: 10
|
|
|
|
cutoff_prob: 1.0
|
|
|
|
cutoff_top_n: 0
|
|
|
|
num_proc_bsearch: 8
|
|
|
|
ctc_weight: 0.5 # ctc weight for attention rescoring decode mode.
|
|
|
|
decoding_chunk_size: -1 # decoding chunk size. Defaults to -1.
|
|
|
|
# <0: for decoding, use full chunk.
|
|
|
|
# >0: for decoding, use fixed chunk size as set.
|
|
|
|
# 0: used for training, it's prohibited here.
|
|
|
|
num_decoding_left_chunks: -1 # number of left chunks for decoding. Defaults to -1.
|
|
|
|
simulate_streaming: true # simulate streaming inference. Defaults to False.
|
|
|
|
|
|
|
|
|