shithub: opus

ref: c1532559a2fc7ccdf2e442d4257779849f59a52d
dir: /dnn/training_tf2/difflpc.py/

View raw version
"""
Tensorflow model (differentiable lpc) to learn the lpcs from the features
"""

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense, Concatenate, Lambda, Conv1D, Multiply, Layer, LeakyReLU
from tensorflow.keras import backend as K
from tf_funcs import diff_rc2lpc

frame_size = 160
lpcoeffs_N = 16

def difflpc(nb_used_features = 20, training=False):
    feat = Input(shape=(None, nb_used_features)) # BFCC
    padding = 'valid' if training else 'same'
    L1 = Conv1D(100, 3, padding=padding, activation='tanh', name='f2rc_conv1')
    L2 = Conv1D(75, 3, padding=padding, activation='tanh', name='f2rc_conv2')
    L3 = Dense(50, activation='tanh',name = 'f2rc_dense3')
    L4 = Dense(lpcoeffs_N, activation='tanh',name = "f2rc_dense4_outp_rc")
    rc = L4(L3(L2(L1(feat))))
    # Differentiable RC 2 LPC
    lpcoeffs = diff_rc2lpc(name = "rc2lpc")(rc)

    model = Model(feat,lpcoeffs,name = 'f2lpc')
    model.nb_used_features = nb_used_features
    model.frame_size = frame_size
    return model