############################################
#          Network Architecture           #
############################################
freeze_wav2vec2: False
normalize_wav: True
output_norm: True
init_type: 'kaiming_uniform' # !Warning: need to convergence
enc:
  input_shape: 1024
  dnn_blocks: 3
  dnn_neurons: 1024
  activation: True
  normalization: True
  dropout_rate: [0.15, 0.15, 0.0]
ctc:
  enc_n_units: 1024
  blank_id: 0
  dropout_rate: 0.0

audio_augment:
  speeds: [90, 100, 110]

spec_augment:
  time_warp: True
  time_warp_window: 5
  time_warp_mode: bicubic
  freq_mask: True
  n_freq_mask: 2
  time_mask: True
  n_time_mask: 2
  replace_with_zero: False
  freq_mask_width: 30
  time_mask_width: 40
wav2vec2_params_path: exp/wav2vec2/chinese-wav2vec2-large.pdparams


############################################
#               Wav2Vec2.0                 #
############################################
# vocab_size: 1000000
hidden_size: 1024
num_hidden_layers: 24
num_attention_heads: 16
intermediate_size: 4096
hidden_act: gelu
hidden_dropout: 0.1
activation_dropout: 0.0
attention_dropout: 0.1
feat_proj_dropout: 0.1
feat_quantizer_dropout: 0.0
final_dropout: 0.0
layerdrop: 0.1
initializer_range: 0.02
layer_norm_eps: 1e-5
feat_extract_norm: layer
feat_extract_activation: gelu
conv_dim: [512, 512, 512, 512, 512, 512, 512]
conv_stride: [5, 2, 2, 2, 2, 2, 2]
conv_kernel: [10, 3, 3, 3, 3, 2, 2]
conv_bias: True
num_conv_pos_embeddings: 128
num_conv_pos_embedding_groups: 16
do_stable_layer_norm: True
apply_spec_augment: False
mask_channel_length: 10
mask_channel_min_space: 1
mask_channel_other: 0.0
mask_channel_prob: 0.0
mask_channel_selection: static
mask_feature_length: 10
mask_feature_min_masks: 0
mask_feature_prob: 0.0
mask_time_length: 10
mask_time_min_masks: 2
mask_time_min_space: 1
mask_time_other: 0.0
mask_time_prob: 0.075
mask_time_selection: static
num_codevectors_per_group: 320
num_codevector_groups: 2
contrastive_logits_temperature: 0.1
num_negatives: 100
codevector_dim: 256
proj_codevector_dim: 256
diversity_loss_weight: 0.1
use_weighted_layer_sum: False
# pad_token_id: 0
# bos_token_id: 1
# eos_token_id: 2
add_adapter: False
adapter_kernel_size: 3
adapter_stride: 2
num_adapter_layers: 3
output_hidden_size: None

###########################################
#                   Data                  #
###########################################

train_manifest: data/manifest.train
dev_manifest: data/manifest.dev
test_manifest: data/manifest.test
vocab_filepath: data/lang_char/vocab.txt 

###########################################
#              Dataloader                 #
###########################################

unit_type: 'char'
tokenizer: bert-base-chinese
mean_std_filepath: 
preprocess_config: conf/preprocess.yaml
sortagrad: -1 # Feed samples from shortest to longest ; -1: enabled for all epochs, 0: disabled, other: enabled for 'other' epochs 
batch_size: 5  # Different batch_size may cause large differences in results
maxlen_in: 51200000000  # if input length  > maxlen-in batchsize is automatically reduced
maxlen_out: 1500000  # 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: 6
subsampling_factor: 1
num_encs: 1
dist_sampler: True
shortest_first: True
return_lens_rate: True

###########################################
#        use speechbrain dataloader       #
###########################################
use_sb_pipeline: True  # whether use speechbrain pipeline. Default is True.
sb_pipeline_conf: conf/train_with_wav2vec.yaml

###########################################
#                 Training                #
###########################################
n_epoch: 80
accum_grad: 1
global_grad_clip: 5.0

model_optim: sgd
model_optim_conf:
  lr: 1.0
  weight_decay: 0.0

wav2vec2_optim: adam
wav2vec2_optim_conf:
  lr: 0.0001
  weight_decay: 0.0

model_scheduler: newbobscheduler
model_scheduler_conf:
  improvement_threshold: 0.0025
  annealing_factor: 0.8
  patient: 0
wav2vec2_scheduler: newbobscheduler
wav2vec2_scheduler_conf:
  improvement_threshold: 0.0025
  annealing_factor: 0.9
  patient: 0
log_interval: 1
checkpoint:
  kbest_n: 50
  latest_n: 5