############################################
#           Network Architecture           #
############################################
cmvn_file: 
cmvn_file_type: "json"
# encoder related
encoder: squeezeformer
encoder_conf:
    encoder_dim: 256    # dimension of attention
    output_size: 256    # dimension of output
    attention_heads: 4
    num_blocks: 12      # the number of encoder blocks
    reduce_idx: 5
    recover_idx: 11
    feed_forward_expansion_factor: 8
    input_dropout_rate: 0.1
    feed_forward_dropout_rate: 0.1
    attention_dropout_rate: 0.1
    adaptive_scale: true
    cnn_module_kernel: 31
    normalize_before: false
    activation_type: 'swish'
    pos_enc_layer_type: 'rel_pos'
    time_reduction_layer_type: 'conv1d'

# 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
    init_type: 'kaiming_uniform' # !Warning: need to convergence

###########################################
#                   Data                  #
###########################################
train_manifest: data/manifest.train
dev_manifest: data/manifest.dev
test_manifest: data/manifest.test

###########################################
#              Dataloader                 #
###########################################
vocab_filepath: data/lang_char/vocab.txt 
spm_model_prefix: ''
unit_type: 'char'
preprocess_config: conf/preprocess.yaml
feat_dim: 80
stride_ms: 10.0
window_ms: 25.0
sortagrad: 0 # Feed samples from shortest to longest ; -1: enabled for all epochs, 0: disabled, other: enabled for 'other' epochs 
batch_size: 32
maxlen_in: 512  # if input length  > maxlen-in, batchsize is automatically reduced
maxlen_out: 150  # if output length > maxlen-out, batchsize is automatically reduced
minibatches: 0 # for debug
batch_count: auto
batch_bins: 0 
batch_frames_in: 0
batch_frames_out: 0
batch_frames_inout: 0
num_workers: 2
subsampling_factor: 1
num_encs: 1

###########################################
#                Training                 #
###########################################
n_epoch: 150 
accum_grad: 8
global_grad_clip: 5.0
dist_sampler: False
optim: adam
optim_conf:
  lr: 0.002
  weight_decay: 1.0e-6
scheduler: warmuplr
scheduler_conf:
  warmup_steps: 25000
  lr_decay: 1.0
log_interval: 100
checkpoint:
  kbest_n: 50
  latest_n: 5