mirror of https://github.com/coqui-ai/TTS.git
linter fixes
This commit is contained in:
parent
6b2ff08239
commit
ce076330bf
|
@ -20,7 +20,7 @@ def test_melgan_multi_scale_discriminator():
|
||||||
scores, feats = model(dummy_input)
|
scores, feats = model(dummy_input)
|
||||||
assert len(scores) == 3
|
assert len(scores) == 3
|
||||||
assert len(scores) == len(feats)
|
assert len(scores) == len(feats)
|
||||||
assert np.all(scores[0].shape == (4, 1, 16))
|
assert np.all(scores[0].shape == (4, 1, 64))
|
||||||
assert np.all(feats[0][0].shape == (4, 16, 4096))
|
assert np.all(feats[0][0].shape == (4, 16, 4096))
|
||||||
assert np.all(feats[0][1].shape == (4, 64, 1024))
|
assert np.all(feats[0][1].shape == (4, 64, 1024))
|
||||||
assert np.all(feats[0][2].shape == (4, 256, 256))
|
assert np.all(feats[0][2].shape == (4, 256, 256))
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
from pprint import pprint
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import tensorflow as tf
|
import tensorflow as tf
|
||||||
|
@ -9,8 +7,6 @@ import torch
|
||||||
from fuzzywuzzy import fuzz
|
from fuzzywuzzy import fuzz
|
||||||
|
|
||||||
from TTS.utils.io import load_config
|
from TTS.utils.io import load_config
|
||||||
from TTS.vocoder.tf.models.multiband_melgan_generator import \
|
|
||||||
MultibandMelganGenerator
|
|
||||||
from TTS.vocoder.tf.utils.convert_torch_to_tf_utils import (
|
from TTS.vocoder.tf.utils.convert_torch_to_tf_utils import (
|
||||||
compare_torch_tf, convert_tf_name, transfer_weights_torch_to_tf)
|
compare_torch_tf, convert_tf_name, transfer_weights_torch_to_tf)
|
||||||
from TTS.vocoder.tf.utils.generic_utils import \
|
from TTS.vocoder.tf.utils.generic_utils import \
|
||||||
|
@ -55,7 +51,7 @@ model_tf = setup_tf_generator(c)
|
||||||
common_sufix = '/.ATTRIBUTES/VARIABLE_VALUE'
|
common_sufix = '/.ATTRIBUTES/VARIABLE_VALUE'
|
||||||
# get tf_model graph by passing an input
|
# get tf_model graph by passing an input
|
||||||
# B x D x T
|
# B x D x T
|
||||||
dummy_input = tf.random.uniform((7, 80, 64))
|
dummy_input = tf.random.uniform((7, 80, 64), dtype=tf.float32)
|
||||||
mel_pred = model_tf(dummy_input, training=False)
|
mel_pred = model_tf(dummy_input, training=False)
|
||||||
|
|
||||||
# get tf variables
|
# get tf variables
|
||||||
|
@ -64,6 +60,7 @@ tf_vars = model_tf.weights
|
||||||
# match variable names with fuzzy logic
|
# match variable names with fuzzy logic
|
||||||
torch_var_names = list(state_dict.keys())
|
torch_var_names = list(state_dict.keys())
|
||||||
tf_var_names = [we.name for we in model_tf.weights]
|
tf_var_names = [we.name for we in model_tf.weights]
|
||||||
|
var_map = []
|
||||||
for tf_name in tf_var_names:
|
for tf_name in tf_var_names:
|
||||||
# skip re-mapped layer names
|
# skip re-mapped layer names
|
||||||
if tf_name in [name[0] for name in var_map]:
|
if tf_name in [name[0] for name in var_map]:
|
||||||
|
|
|
@ -34,11 +34,17 @@ class ResidualStack(tf.keras.layers.Layer):
|
||||||
padding='valid',
|
padding='valid',
|
||||||
name=f'blocks.{idx}.{num_layers}'),
|
name=f'blocks.{idx}.{num_layers}'),
|
||||||
tf.keras.layers.LeakyReLU(0.2),
|
tf.keras.layers.LeakyReLU(0.2),
|
||||||
tf.keras.layers.Conv2D(filters=channels, kernel_size=(1, 1), use_bias=True, name=f'blocks.{idx}.{num_layers + 2}')
|
tf.keras.layers.Conv2D(filters=channels,
|
||||||
|
kernel_size=(1, 1),
|
||||||
|
use_bias=True,
|
||||||
|
name=f'blocks.{idx}.{num_layers + 2}')
|
||||||
]
|
]
|
||||||
self.blocks.append(block)
|
self.blocks.append(block)
|
||||||
self.shortcuts = [
|
self.shortcuts = [
|
||||||
tf.keras.layers.Conv2D(channels, kernel_size=1, use_bias=True, name=f'shortcuts.{i}')
|
tf.keras.layers.Conv2D(channels,
|
||||||
|
kernel_size=1,
|
||||||
|
use_bias=True,
|
||||||
|
name=f'shortcuts.{i}')
|
||||||
for i in range(num_res_blocks)
|
for i in range(num_res_blocks)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ class PQMF(tf.keras.layers.Layer):
|
||||||
x : B x 1 x T
|
x : B x 1 x T
|
||||||
"""
|
"""
|
||||||
x = tf.transpose(x, perm=[0, 2, 1])
|
x = tf.transpose(x, perm=[0, 2, 1])
|
||||||
x = tf.pad(x, [[0, 0], [self.taps // 2, self.taps // 2], [0, 0]])
|
x = tf.pad(x, [[0, 0], [self.taps // 2, self.taps // 2], [0, 0]], constant_values=0.0)
|
||||||
x = tf.nn.conv1d(x, self.H, stride=1, padding='VALID')
|
x = tf.nn.conv1d(x, self.H, stride=1, padding='VALID')
|
||||||
x = tf.nn.conv1d(x,
|
x = tf.nn.conv1d(x,
|
||||||
self.updown_filter,
|
self.updown_filter,
|
||||||
|
@ -60,7 +60,7 @@ class PQMF(tf.keras.layers.Layer):
|
||||||
strides=self.N,
|
strides=self.N,
|
||||||
output_shape=(tf.shape(x)[0], tf.shape(x)[1] * self.N,
|
output_shape=(tf.shape(x)[0], tf.shape(x)[1] * self.N,
|
||||||
self.N))
|
self.N))
|
||||||
x = tf.pad(x, [[0, 0], [self.taps // 2, self.taps // 2], [0, 0]])
|
x = tf.pad(x, [[0, 0], [self.taps // 2, self.taps // 2], [0, 0]], constant_values=0.0)
|
||||||
x = tf.nn.conv1d(x, self.G, stride=1, padding="VALID")
|
x = tf.nn.conv1d(x, self.G, stride=1, padding="VALID")
|
||||||
x = tf.transpose(x, perm=[0, 2, 1])
|
x = tf.transpose(x, perm=[0, 2, 1])
|
||||||
return x
|
return x
|
|
@ -8,7 +8,7 @@ import tensorflow as tf
|
||||||
from TTS.vocoder.tf.layers.melgan import ResidualStack, ReflectionPad1d
|
from TTS.vocoder.tf.layers.melgan import ResidualStack, ReflectionPad1d
|
||||||
|
|
||||||
|
|
||||||
class MelganGenerator(tf.keras.models.Model):
|
class MelganGenerator(tf.keras.models.Model): # pylint: disable=too-many-ancestors
|
||||||
""" Melgan Generator TF implementation dedicated for inference with no
|
""" Melgan Generator TF implementation dedicated for inference with no
|
||||||
weight norm """
|
weight norm """
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
|
@ -21,6 +21,8 @@ class MelganGenerator(tf.keras.models.Model):
|
||||||
num_res_blocks=3):
|
num_res_blocks=3):
|
||||||
super(MelganGenerator, self).__init__()
|
super(MelganGenerator, self).__init__()
|
||||||
|
|
||||||
|
self.in_channels = in_channels
|
||||||
|
|
||||||
# assert model parameters
|
# assert model parameters
|
||||||
assert (proj_kernel -
|
assert (proj_kernel -
|
||||||
1) % 2 == 0, " [!] proj_kernel should be an odd number."
|
1) % 2 == 0, " [!] proj_kernel should be an odd number."
|
||||||
|
@ -48,7 +50,7 @@ class MelganGenerator(tf.keras.models.Model):
|
||||||
layer_out_channels = base_channels // (2**(idx + 1))
|
layer_out_channels = base_channels // (2**(idx + 1))
|
||||||
layer_filter_size = upsample_factor * 2
|
layer_filter_size = upsample_factor * 2
|
||||||
layer_stride = upsample_factor
|
layer_stride = upsample_factor
|
||||||
layer_output_padding = upsample_factor % 2
|
# layer_output_padding = upsample_factor % 2
|
||||||
self.upsample_layers += [
|
self.upsample_layers += [
|
||||||
tf.keras.layers.LeakyReLU(act_slope),
|
tf.keras.layers.LeakyReLU(act_slope),
|
||||||
tf.keras.layers.Conv2DTranspose(
|
tf.keras.layers.Conv2DTranspose(
|
||||||
|
@ -59,12 +61,10 @@ class MelganGenerator(tf.keras.models.Model):
|
||||||
# output_padding=layer_output_padding,
|
# output_padding=layer_output_padding,
|
||||||
use_bias=True,
|
use_bias=True,
|
||||||
name=f'{num_layers}'),
|
name=f'{num_layers}'),
|
||||||
ResidualStack(
|
ResidualStack(channels=layer_out_channels,
|
||||||
channels=layer_out_channels,
|
|
||||||
num_res_blocks=num_res_blocks,
|
num_res_blocks=num_res_blocks,
|
||||||
kernel_size=res_kernel,
|
kernel_size=res_kernel,
|
||||||
name=f'layers.{num_layers + 1}'
|
name=f'layers.{num_layers + 1}')
|
||||||
)
|
|
||||||
]
|
]
|
||||||
num_layers += num_res_blocks - 1
|
num_layers += num_res_blocks - 1
|
||||||
|
|
||||||
|
@ -80,9 +80,6 @@ class MelganGenerator(tf.keras.models.Model):
|
||||||
tf.keras.layers.Activation("tanh")
|
tf.keras.layers.Activation("tanh")
|
||||||
]
|
]
|
||||||
|
|
||||||
# self.initial_layer = tf.keras.models.Sequential(self.initial_layer)
|
|
||||||
# self.upsample_layers = tf.keras.models.Sequential(self.upsample_layers)
|
|
||||||
# self.final_layers = tf.keras.models.Sequential(self.final_layers)
|
|
||||||
# self.model_layers = tf.keras.models.Sequential(self.initial_layer + self.upsample_layers + self.final_layers, name="layers")
|
# self.model_layers = tf.keras.models.Sequential(self.initial_layer + self.upsample_layers + self.final_layers, name="layers")
|
||||||
self.model_layers = self.initial_layer + self.upsample_layers + self.final_layers
|
self.model_layers = self.initial_layer + self.upsample_layers + self.final_layers
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from TTS.vocoder.tf.models.melgan_generator import MelganGenerator
|
||||||
from TTS.vocoder.tf.layers.pqmf import PQMF
|
from TTS.vocoder.tf.layers.pqmf import PQMF
|
||||||
|
|
||||||
|
|
||||||
class MultibandMelganGenerator(MelganGenerator):
|
class MultibandMelganGenerator(MelganGenerator): # pylint: disable=too-many-ancestors
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
in_channels=80,
|
in_channels=80,
|
||||||
out_channels=4,
|
out_channels=4,
|
||||||
|
|
|
@ -30,10 +30,7 @@ def transfer_weights_torch_to_tf(tf_vars, var_map_dict, state_dict):
|
||||||
# if tuple, it is a bias variable
|
# if tuple, it is a bias variable
|
||||||
if 'kernel' in tf_var.name:
|
if 'kernel' in tf_var.name:
|
||||||
torch_weight = state_dict[torch_var_name]
|
torch_weight = state_dict[torch_var_name]
|
||||||
try:
|
|
||||||
numpy_weight = torch_weight.permute([2, 1, 0]).numpy()[:, None, :, :]
|
numpy_weight = torch_weight.permute([2, 1, 0]).numpy()[:, None, :, :]
|
||||||
except:
|
|
||||||
breakpoint()
|
|
||||||
if 'bias' in tf_var.name:
|
if 'bias' in tf_var.name:
|
||||||
torch_weight = state_dict[torch_var_name]
|
torch_weight = state_dict[torch_var_name]
|
||||||
numpy_weight = torch_weight
|
numpy_weight = torch_weight
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
import re
|
import re
|
||||||
import importlib
|
import importlib
|
||||||
import numpy as np
|
|
||||||
from matplotlib import pyplot as plt
|
|
||||||
|
|
||||||
|
|
||||||
def to_camel(text):
|
def to_camel(text):
|
||||||
|
|
Loading…
Reference in New Issue