shithub: opus

ref: 35ee397e060283d30c098ae5e17836316bbec08b
dir: /dnn/torch/lpcnet/utils/templates.py/

View raw version
from models import multi_rate_lpcnet
import copy

setup_dict = dict()

dataset_template_v2 = {
    'version'               : 2,
    'feature_file'          : 'features.f32',
    'signal_file'           : 'data.s16',
    'frame_length'          : 160,
    'feature_frame_length'  : 36,
    'signal_frame_length'   : 2,
    'feature_dtype'         : 'float32',
    'signal_dtype'          : 'int16',
    'feature_frame_layout'  : {'cepstrum': [0,18], 'periods': [18, 19], 'pitch_corr': [19, 20], 'lpc': [20, 36]},
    'signal_frame_layout'   : {'last_signal' : 0, 'signal': 1} # signal, last_signal, error, prediction
}

dataset_template_v1 = {
    'version'               : 1,
    'feature_file'          : 'features.f32',
    'signal_file'           : 'data.u8',
    'frame_length'          : 160,
    'feature_frame_length'  : 55,
    'signal_frame_length'   : 4,
    'feature_dtype'         : 'float32',
    'signal_dtype'          : 'uint8',
    'feature_frame_layout'  : {'cepstrum': [0,18], 'periods': [36, 37], 'pitch_corr': [37, 38], 'lpc': [39, 55]},
    'signal_frame_layout'   : {'last_signal' : 0, 'prediction' : 1, 'last_error': 2, 'error': 3} # signal, last_signal, error, prediction
}

# lpcnet

lpcnet_config = {
    'frame_size'                : 160,
    'gru_a_units'               : 384,
    'gru_b_units'               : 64,
    'feature_conditioning_dim'  : 128,
    'feature_conv_kernel_size'  : 3,
    'period_levels'             : 257,
    'period_embedding_dim'      : 64,
    'signal_embedding_dim'      : 128,
    'signal_levels'             : 256,
    'feature_dimension'         : 19,
    'output_levels'             : 256,
    'lpc_gamma'                 : 0.9,
    'features'                  : ['cepstrum', 'periods', 'pitch_corr'],
    'signals'                   : ['last_signal', 'prediction', 'last_error'],
    'input_layout'              : { 'signals'  : {'last_signal' : 0, 'prediction' : 1, 'last_error' : 2},
                                    'features' : {'cepstrum' : [0, 18], 'pitch_corr' : [18, 19]} },
    'target'                    : 'error',
    'feature_history'           : 2,
    'feature_lookahead'         : 2,
    'sparsification'            :   {
       'gru_a' :  {
            'start'     : 10000,
            'stop'      : 30000,
            'interval'  : 100,
            'exponent'  : 3,
            'params'   :   {
                'W_hr' : (0.05, [4, 8], True),
                'W_hz' : (0.05, [4, 8], True),
                'W_hn' : (0.2,  [4, 8], True)
                },
        },
       'gru_b' :  {
            'start'     : 10000,
            'stop'      : 30000,
            'interval'  : 100,
            'exponent'  : 3,
            'params'   :   {
                'W_ir' : (0.5, [4, 8], False),
                'W_iz' : (0.5, [4, 8], False),
                'W_in' : (0.5,  [4, 8], False)
                },
        }
    },
    'add_reference_phase'       : False,
    'reference_phase_dim'       : 0
}



# multi rate
subconditioning = {
        'subconditioning_a' : {
            'number_of_subsamples'  : 2,
            'method'                : 'modulative',
            'signals'               : ['last_signal', 'prediction', 'last_error'],
            'pcm_embedding_size'    : 64,
            'kwargs'                : dict()

        },
        'subconditioning_b' : {
            'number_of_subsamples'  : 2,
            'method'                : 'modulative',
            'signals'               : ['last_signal', 'prediction', 'last_error'],
            'pcm_embedding_size'    : 64,
            'kwargs'                : dict()
        }
}

multi_rate_lpcnet_config = lpcnet_config.copy()
multi_rate_lpcnet_config['subconditioning'] = subconditioning

training_default = {
    'batch_size'        : 256,
    'epochs'            : 20,
    'lr'                : 1e-3,
    'lr_decay_factor'   : 2.5e-5,
    'adam_betas'        : [0.9, 0.99],
    'frames_per_sample' : 15
}

lpcnet_setup = {
    'dataset'       : '/local/datasets/lpcnet_training',
    'lpcnet'        : {'config' : lpcnet_config, 'model': 'lpcnet'},
    'training'      : training_default
}

multi_rate_lpcnet_setup = copy.deepcopy(lpcnet_setup)
multi_rate_lpcnet_setup['lpcnet']['config'] = multi_rate_lpcnet_config
multi_rate_lpcnet_setup['lpcnet']['model'] = 'multi_rate'

setup_dict = {
    'lpcnet'     : lpcnet_setup,
    'multi_rate' : multi_rate_lpcnet_setup
}