From 78e30ff36bc27fa7750d4f9249191c2a7cc3e2b8 Mon Sep 17 00:00:00 2001 From: wataru Date: Sat, 27 Aug 2022 11:43:55 +0900 Subject: [PATCH] update --- .gitignore | 1 + demo/logs/.gitignore | 2 + demo/mod/attentions.py | 303 +++ demo/mod/commons.py | 161 ++ demo/mod/data_utils.py | 492 +++++ demo/mod/mel_processing.py | 114 ++ demo/mod/models.py | 407 ++++ demo/mod/modules.py | 390 ++++ demo/mod/monotonic_align/__init__.py | 19 + demo/mod/monotonic_align/core.pyx | 42 + .../core.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 983360 bytes demo/mod/monotonic_align/setup.py | 23 + demo/mod/text/__init__.py | 54 + demo/mod/text/cleaners.py | 105 + demo/mod/text/symbols.py | 64 + demo/mod/transforms.py | 193 ++ demo/mod/utils.py | 270 +++ demo/requirements.txt | 85 + demo/serverSIO.py | 96 + demo/setup.sh | 13 + demo/start.sh | 5 + package-lock.json | 1687 +++++++++++++++++ package.json | 8 +- 23 files changed, 4533 insertions(+), 1 deletion(-) create mode 100755 demo/logs/.gitignore create mode 100755 demo/mod/attentions.py create mode 100755 demo/mod/commons.py create mode 100755 demo/mod/data_utils.py create mode 100755 demo/mod/mel_processing.py create mode 100755 demo/mod/models.py create mode 100755 demo/mod/modules.py create mode 100755 demo/mod/monotonic_align/__init__.py create mode 100755 demo/mod/monotonic_align/core.pyx create mode 100755 demo/mod/monotonic_align/monotonic_align/core.cpython-39-x86_64-linux-gnu.so create mode 100755 demo/mod/monotonic_align/setup.py create mode 100755 demo/mod/text/__init__.py create mode 100755 demo/mod/text/cleaners.py create mode 100755 demo/mod/text/symbols.py create mode 100755 demo/mod/transforms.py create mode 100755 demo/mod/utils.py create mode 100644 demo/requirements.txt create mode 100755 demo/serverSIO.py create mode 100755 demo/setup.sh create mode 100755 demo/start.sh create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 421376db..13682990 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ dummy +node_modules diff --git a/demo/logs/.gitignore b/demo/logs/.gitignore new file mode 100755 index 00000000..d6b7ef32 --- /dev/null +++ b/demo/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/demo/mod/attentions.py b/demo/mod/attentions.py new file mode 100755 index 00000000..4e0b0c1f --- /dev/null +++ b/demo/mod/attentions.py @@ -0,0 +1,303 @@ +import copy +import math +import numpy as np +import torch +from torch import nn +from torch.nn import functional as F + +import commons +import modules +from modules import LayerNorm + + +class Encoder(nn.Module): + def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., window_size=4, **kwargs): + super().__init__() + self.hidden_channels = hidden_channels + self.filter_channels = filter_channels + self.n_heads = n_heads + self.n_layers = n_layers + self.kernel_size = kernel_size + self.p_dropout = p_dropout + self.window_size = window_size + + self.drop = nn.Dropout(p_dropout) + self.attn_layers = nn.ModuleList() + self.norm_layers_1 = nn.ModuleList() + self.ffn_layers = nn.ModuleList() + self.norm_layers_2 = nn.ModuleList() + for i in range(self.n_layers): + self.attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, window_size=window_size)) + self.norm_layers_1.append(LayerNorm(hidden_channels)) + self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout)) + self.norm_layers_2.append(LayerNorm(hidden_channels)) + + def forward(self, x, x_mask): + attn_mask = x_mask.unsqueeze(2) * x_mask.unsqueeze(-1) + x = x * x_mask + for i in range(self.n_layers): + y = self.attn_layers[i](x, x, attn_mask) + y = self.drop(y) + x = self.norm_layers_1[i](x + y) + + y = self.ffn_layers[i](x, x_mask) + y = self.drop(y) + x = self.norm_layers_2[i](x + y) + x = x * x_mask + return x + + +class Decoder(nn.Module): + def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., proximal_bias=False, proximal_init=True, **kwargs): + super().__init__() + self.hidden_channels = hidden_channels + self.filter_channels = filter_channels + self.n_heads = n_heads + self.n_layers = n_layers + self.kernel_size = kernel_size + self.p_dropout = p_dropout + self.proximal_bias = proximal_bias + self.proximal_init = proximal_init + + self.drop = nn.Dropout(p_dropout) + self.self_attn_layers = nn.ModuleList() + self.norm_layers_0 = nn.ModuleList() + self.encdec_attn_layers = nn.ModuleList() + self.norm_layers_1 = nn.ModuleList() + self.ffn_layers = nn.ModuleList() + self.norm_layers_2 = nn.ModuleList() + for i in range(self.n_layers): + self.self_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, proximal_bias=proximal_bias, proximal_init=proximal_init)) + self.norm_layers_0.append(LayerNorm(hidden_channels)) + self.encdec_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout)) + self.norm_layers_1.append(LayerNorm(hidden_channels)) + self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout, causal=True)) + self.norm_layers_2.append(LayerNorm(hidden_channels)) + + def forward(self, x, x_mask, h, h_mask): + """ + x: decoder input + h: encoder output + """ + self_attn_mask = commons.subsequent_mask(x_mask.size(2)).to(device=x.device, dtype=x.dtype) + encdec_attn_mask = h_mask.unsqueeze(2) * x_mask.unsqueeze(-1) + x = x * x_mask + for i in range(self.n_layers): + y = self.self_attn_layers[i](x, x, self_attn_mask) + y = self.drop(y) + x = self.norm_layers_0[i](x + y) + + y = self.encdec_attn_layers[i](x, h, encdec_attn_mask) + y = self.drop(y) + x = self.norm_layers_1[i](x + y) + + y = self.ffn_layers[i](x, x_mask) + y = self.drop(y) + x = self.norm_layers_2[i](x + y) + x = x * x_mask + return x + + +class MultiHeadAttention(nn.Module): + def __init__(self, channels, out_channels, n_heads, p_dropout=0., window_size=None, heads_share=True, block_length=None, proximal_bias=False, proximal_init=False): + super().__init__() + assert channels % n_heads == 0 + + self.channels = channels + self.out_channels = out_channels + self.n_heads = n_heads + self.p_dropout = p_dropout + self.window_size = window_size + self.heads_share = heads_share + self.block_length = block_length + self.proximal_bias = proximal_bias + self.proximal_init = proximal_init + self.attn = None + + self.k_channels = channels // n_heads + self.conv_q = nn.Conv1d(channels, channels, 1) + self.conv_k = nn.Conv1d(channels, channels, 1) + self.conv_v = nn.Conv1d(channels, channels, 1) + self.conv_o = nn.Conv1d(channels, out_channels, 1) + self.drop = nn.Dropout(p_dropout) + + if window_size is not None: + n_heads_rel = 1 if heads_share else n_heads + rel_stddev = self.k_channels**-0.5 + self.emb_rel_k = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev) + self.emb_rel_v = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev) + + nn.init.xavier_uniform_(self.conv_q.weight) + nn.init.xavier_uniform_(self.conv_k.weight) + nn.init.xavier_uniform_(self.conv_v.weight) + if proximal_init: + with torch.no_grad(): + self.conv_k.weight.copy_(self.conv_q.weight) + self.conv_k.bias.copy_(self.conv_q.bias) + + def forward(self, x, c, attn_mask=None): + q = self.conv_q(x) + k = self.conv_k(c) + v = self.conv_v(c) + + x, self.attn = self.attention(q, k, v, mask=attn_mask) + + x = self.conv_o(x) + return x + + def attention(self, query, key, value, mask=None): + # reshape [b, d, t] -> [b, n_h, t, d_k] + b, d, t_s, t_t = (*key.size(), query.size(2)) + query = query.view(b, self.n_heads, self.k_channels, t_t).transpose(2, 3) + key = key.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3) + value = value.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3) + + scores = torch.matmul(query / math.sqrt(self.k_channels), key.transpose(-2, -1)) + if self.window_size is not None: + assert t_s == t_t, "Relative attention is only available for self-attention." + key_relative_embeddings = self._get_relative_embeddings(self.emb_rel_k, t_s) + rel_logits = self._matmul_with_relative_keys(query /math.sqrt(self.k_channels), key_relative_embeddings) + scores_local = self._relative_position_to_absolute_position(rel_logits) + scores = scores + scores_local + if self.proximal_bias: + assert t_s == t_t, "Proximal bias is only available for self-attention." + scores = scores + self._attention_bias_proximal(t_s).to(device=scores.device, dtype=scores.dtype) + if mask is not None: + scores = scores.masked_fill(mask == 0, -1e4) + if self.block_length is not None: + assert t_s == t_t, "Local attention is only available for self-attention." + block_mask = torch.ones_like(scores).triu(-self.block_length).tril(self.block_length) + scores = scores.masked_fill(block_mask == 0, -1e4) + p_attn = F.softmax(scores, dim=-1) # [b, n_h, t_t, t_s] + p_attn = self.drop(p_attn) + output = torch.matmul(p_attn, value) + if self.window_size is not None: + relative_weights = self._absolute_position_to_relative_position(p_attn) + value_relative_embeddings = self._get_relative_embeddings(self.emb_rel_v, t_s) + output = output + self._matmul_with_relative_values(relative_weights, value_relative_embeddings) + output = output.transpose(2, 3).contiguous().view(b, d, t_t) # [b, n_h, t_t, d_k] -> [b, d, t_t] + return output, p_attn + + def _matmul_with_relative_values(self, x, y): + """ + x: [b, h, l, m] + y: [h or 1, m, d] + ret: [b, h, l, d] + """ + ret = torch.matmul(x, y.unsqueeze(0)) + return ret + + def _matmul_with_relative_keys(self, x, y): + """ + x: [b, h, l, d] + y: [h or 1, m, d] + ret: [b, h, l, m] + """ + ret = torch.matmul(x, y.unsqueeze(0).transpose(-2, -1)) + return ret + + def _get_relative_embeddings(self, relative_embeddings, length): + max_relative_position = 2 * self.window_size + 1 + # Pad first before slice to avoid using cond ops. + pad_length = max(length - (self.window_size + 1), 0) + slice_start_position = max((self.window_size + 1) - length, 0) + slice_end_position = slice_start_position + 2 * length - 1 + if pad_length > 0: + padded_relative_embeddings = F.pad( + relative_embeddings, + commons.convert_pad_shape([[0, 0], [pad_length, pad_length], [0, 0]])) + else: + padded_relative_embeddings = relative_embeddings + used_relative_embeddings = padded_relative_embeddings[:,slice_start_position:slice_end_position] + return used_relative_embeddings + + def _relative_position_to_absolute_position(self, x): + """ + x: [b, h, l, 2*l-1] + ret: [b, h, l, l] + """ + batch, heads, length, _ = x.size() + # Concat columns of pad to shift from relative to absolute indexing. + x = F.pad(x, commons.convert_pad_shape([[0,0],[0,0],[0,0],[0,1]])) + + # Concat extra elements so to add up to shape (len+1, 2*len-1). + x_flat = x.view([batch, heads, length * 2 * length]) + x_flat = F.pad(x_flat, commons.convert_pad_shape([[0,0],[0,0],[0,length-1]])) + + # Reshape and slice out the padded elements. + x_final = x_flat.view([batch, heads, length+1, 2*length-1])[:, :, :length, length-1:] + return x_final + + def _absolute_position_to_relative_position(self, x): + """ + x: [b, h, l, l] + ret: [b, h, l, 2*l-1] + """ + batch, heads, length, _ = x.size() + # padd along column + x = F.pad(x, commons.convert_pad_shape([[0, 0], [0, 0], [0, 0], [0, length-1]])) + x_flat = x.view([batch, heads, length**2 + length*(length -1)]) + # add 0's in the beginning that will skew the elements after reshape + x_flat = F.pad(x_flat, commons.convert_pad_shape([[0, 0], [0, 0], [length, 0]])) + x_final = x_flat.view([batch, heads, length, 2*length])[:,:,:,1:] + return x_final + + def _attention_bias_proximal(self, length): + """Bias for self-attention to encourage attention to close positions. + Args: + length: an integer scalar. + Returns: + a Tensor with shape [1, 1, length, length] + """ + r = torch.arange(length, dtype=torch.float32) + diff = torch.unsqueeze(r, 0) - torch.unsqueeze(r, 1) + return torch.unsqueeze(torch.unsqueeze(-torch.log1p(torch.abs(diff)), 0), 0) + + +class FFN(nn.Module): + def __init__(self, in_channels, out_channels, filter_channels, kernel_size, p_dropout=0., activation=None, causal=False): + super().__init__() + self.in_channels = in_channels + self.out_channels = out_channels + self.filter_channels = filter_channels + self.kernel_size = kernel_size + self.p_dropout = p_dropout + self.activation = activation + self.causal = causal + + if causal: + self.padding = self._causal_padding + else: + self.padding = self._same_padding + + self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size) + self.conv_2 = nn.Conv1d(filter_channels, out_channels, kernel_size) + self.drop = nn.Dropout(p_dropout) + + def forward(self, x, x_mask): + x = self.conv_1(self.padding(x * x_mask)) + if self.activation == "gelu": + x = x * torch.sigmoid(1.702 * x) + else: + x = torch.relu(x) + x = self.drop(x) + x = self.conv_2(self.padding(x * x_mask)) + return x * x_mask + + def _causal_padding(self, x): + if self.kernel_size == 1: + return x + pad_l = self.kernel_size - 1 + pad_r = 0 + padding = [[0, 0], [0, 0], [pad_l, pad_r]] + x = F.pad(x, commons.convert_pad_shape(padding)) + return x + + def _same_padding(self, x): + if self.kernel_size == 1: + return x + pad_l = (self.kernel_size - 1) // 2 + pad_r = self.kernel_size // 2 + padding = [[0, 0], [0, 0], [pad_l, pad_r]] + x = F.pad(x, commons.convert_pad_shape(padding)) + return x diff --git a/demo/mod/commons.py b/demo/mod/commons.py new file mode 100755 index 00000000..9ad0444b --- /dev/null +++ b/demo/mod/commons.py @@ -0,0 +1,161 @@ +import math +import numpy as np +import torch +from torch import nn +from torch.nn import functional as F + + +def init_weights(m, mean=0.0, std=0.01): + classname = m.__class__.__name__ + if classname.find("Conv") != -1: + m.weight.data.normal_(mean, std) + + +def get_padding(kernel_size, dilation=1): + return int((kernel_size*dilation - dilation)/2) + + +def convert_pad_shape(pad_shape): + l = pad_shape[::-1] + pad_shape = [item for sublist in l for item in sublist] + return pad_shape + + +def intersperse(lst, item): + result = [item] * (len(lst) * 2 + 1) + result[1::2] = lst + return result + + +def kl_divergence(m_p, logs_p, m_q, logs_q): + """KL(P||Q)""" + kl = (logs_q - logs_p) - 0.5 + kl += 0.5 * (torch.exp(2. * logs_p) + ((m_p - m_q)**2)) * torch.exp(-2. * logs_q) + return kl + + +def rand_gumbel(shape): + """Sample from the Gumbel distribution, protect from overflows.""" + uniform_samples = torch.rand(shape) * 0.99998 + 0.00001 + return -torch.log(-torch.log(uniform_samples)) + + +def rand_gumbel_like(x): + g = rand_gumbel(x.size()).to(dtype=x.dtype, device=x.device) + return g + + +def slice_segments(x, ids_str, segment_size=4): + ret = torch.zeros_like(x[:, :, :segment_size]) + for i in range(x.size(0)): + idx_str = ids_str[i] + idx_end = idx_str + segment_size + ret[i] = x[i, :, idx_str:idx_end] + return ret + + +def rand_slice_segments(x, x_lengths=None, segment_size=4): + b, d, t = x.size() + if x_lengths is None: + x_lengths = t + ids_str_max = x_lengths - segment_size + 1 + ids_str = (torch.rand([b]).to(device=x.device) * ids_str_max).to(dtype=torch.long) + ret = slice_segments(x, ids_str, segment_size) + return ret, ids_str + + +def get_timing_signal_1d( + length, channels, min_timescale=1.0, max_timescale=1.0e4): + position = torch.arange(length, dtype=torch.float) + num_timescales = channels // 2 + log_timescale_increment = ( + math.log(float(max_timescale) / float(min_timescale)) / + (num_timescales - 1)) + inv_timescales = min_timescale * torch.exp( + torch.arange(num_timescales, dtype=torch.float) * -log_timescale_increment) + scaled_time = position.unsqueeze(0) * inv_timescales.unsqueeze(1) + signal = torch.cat([torch.sin(scaled_time), torch.cos(scaled_time)], 0) + signal = F.pad(signal, [0, 0, 0, channels % 2]) + signal = signal.view(1, channels, length) + return signal + + +def add_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4): + b, channels, length = x.size() + signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale) + return x + signal.to(dtype=x.dtype, device=x.device) + + +def cat_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4, axis=1): + b, channels, length = x.size() + signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale) + return torch.cat([x, signal.to(dtype=x.dtype, device=x.device)], axis) + + +def subsequent_mask(length): + mask = torch.tril(torch.ones(length, length)).unsqueeze(0).unsqueeze(0) + return mask + + +@torch.jit.script +def fused_add_tanh_sigmoid_multiply(input_a, input_b, n_channels): + n_channels_int = n_channels[0] + in_act = input_a + input_b + t_act = torch.tanh(in_act[:, :n_channels_int, :]) + s_act = torch.sigmoid(in_act[:, n_channels_int:, :]) + acts = t_act * s_act + return acts + + +def convert_pad_shape(pad_shape): + l = pad_shape[::-1] + pad_shape = [item for sublist in l for item in sublist] + return pad_shape + + +def shift_1d(x): + x = F.pad(x, convert_pad_shape([[0, 0], [0, 0], [1, 0]]))[:, :, :-1] + return x + + +def sequence_mask(length, max_length=None): + if max_length is None: + max_length = length.max() + x = torch.arange(max_length, dtype=length.dtype, device=length.device) + return x.unsqueeze(0) < length.unsqueeze(1) + + +def generate_path(duration, mask): + """ + duration: [b, 1, t_x] + mask: [b, 1, t_y, t_x] + """ + device = duration.device + + b, _, t_y, t_x = mask.shape + cum_duration = torch.cumsum(duration, -1) + + cum_duration_flat = cum_duration.view(b * t_x) + path = sequence_mask(cum_duration_flat, t_y).to(mask.dtype) + path = path.view(b, t_x, t_y) + path = path - F.pad(path, convert_pad_shape([[0, 0], [1, 0], [0, 0]]))[:, :-1] + path = path.unsqueeze(1).transpose(2,3) * mask + return path + + +def clip_grad_value_(parameters, clip_value, norm_type=2): + if isinstance(parameters, torch.Tensor): + parameters = [parameters] + parameters = list(filter(lambda p: p.grad is not None, parameters)) + norm_type = float(norm_type) + if clip_value is not None: + clip_value = float(clip_value) + + total_norm = 0 + for p in parameters: + param_norm = p.grad.data.norm(norm_type) + total_norm += param_norm.item() ** norm_type + if clip_value is not None: + p.grad.data.clamp_(min=-clip_value, max=clip_value) + total_norm = total_norm ** (1. / norm_type) + return total_norm diff --git a/demo/mod/data_utils.py b/demo/mod/data_utils.py new file mode 100755 index 00000000..3e06620f --- /dev/null +++ b/demo/mod/data_utils.py @@ -0,0 +1,492 @@ +import time +import os +import random +import numpy as np +import torch +import torch.utils.data +import tqdm + +import commons +from mel_processing import spectrogram_torch +from utils import load_wav_to_torch, load_filepaths_and_text +from text import text_to_sequence, cleaned_text_to_sequence +import struct +#add +from retry import retry +import random +import torchaudio +from scipy.io.wavfile import write + +class TextAudioLoader(torch.utils.data.Dataset): + """ + 1) loads audio, text pairs + 2) normalizes text and converts them to sequences of integers + 3) computes spectrograms from audio files. + """ + def __init__(self, audiopaths_and_text, hparams, use_test = True): + self.audiopaths_and_text = load_filepaths_and_text(audiopaths_and_text) + self.text_cleaners = hparams.text_cleaners + self.max_wav_value = hparams.max_wav_value + self.sampling_rate = hparams.sampling_rate + self.filter_length = hparams.filter_length + self.hop_length = hparams.hop_length + self.win_length = hparams.win_length + self.sampling_rate = hparams.sampling_rate + self.use_test = use_test + + self.cleaned_text = getattr(hparams, "cleaned_text", False) + + self.add_blank = hparams.add_blank + self.min_text_len = getattr(hparams, "min_text_len", 1) + self.max_text_len = getattr(hparams, "max_text_len", 190) + + random.seed(1234) + random.shuffle(self.audiopaths_and_text) + self._filter() + + + def _filter(self): + """ + Filter text & store spec lengths + """ + # Store spectrogram lengths for Bucketing + # wav_length ~= file_size / (wav_channels * Bytes per dim) = file_size / (1 * 2) + # spec_length = wav_length // hop_length + + audiopaths_and_text_new = [] + lengths = [] + for audiopath, text in self.audiopaths_and_text: + if self.min_text_len <= len(text) and len(text) <= self.max_text_len: + audiopaths_and_text_new.append([audiopath, text]) + lengths.append(os.path.getsize(audiopath) // (2 * self.hop_length)) + self.audiopaths_and_text = audiopaths_and_text_new + self.lengths = lengths + + def get_audio_text_pair(self, audiopath_and_text): + # separate filename and text + audiopath, text = audiopath_and_text[0], audiopath_and_text[1] + text = self.get_text(text) + if self.use_test != True: + text = torch.as_tensor("a") + spec, wav = self.get_audio(audiopath) + return (text, spec, wav) + + def get_audio(self, filename): + audio, sampling_rate = load_wav_to_torch(filename) + if sampling_rate != self.sampling_rate: + raise ValueError("{} {} SR doesn't match target {} SR".format( + sampling_rate, self.sampling_rate)) + audio_norm = audio / self.max_wav_value + audio_norm = audio_norm.unsqueeze(0) + spec_filename = filename.replace(".wav", ".spec.pt") + if os.path.exists(spec_filename): + spec = torch.load(spec_filename) + else: + spec = spectrogram_torch(audio_norm, self.filter_length, + self.sampling_rate, self.hop_length, self.win_length, + center=False) + spec = torch.squeeze(spec, 0) + torch.save(spec, spec_filename) + return spec, audio_norm + + def get_text(self, text): + if self.cleaned_text: + text_norm = cleaned_text_to_sequence(text) + else: + text_norm = text_to_sequence(text, self.text_cleaners) + if self.add_blank: + text_norm = commons.intersperse(text_norm, 0) + text_norm = torch.LongTensor(text_norm) + return text_norm + + def __getitem__(self, index): + return self.get_audio_text_pair(self.audiopaths_and_text[index]) + + def __len__(self): + return len(self.audiopaths_and_text) + + +class TextAudioCollate(): + """ Zero-pads model inputs and targets + """ + def __init__(self, return_ids=False): + self.return_ids = return_ids + + def __call__(self, batch): + """Collate's training batch from normalized text and aduio + PARAMS + ------ + batch: [text_normalized, spec_normalized, wav_normalized] + """ + # Right zero-pad all one-hot text sequences to max input length + _, ids_sorted_decreasing = torch.sort( + torch.LongTensor([x[1].size(1) for x in batch]), + dim=0, descending=True) + + max_text_len = max([len(x[0]) for x in batch]) + max_spec_len = max([x[1].size(1) for x in batch]) + max_wav_len = max([x[2].size(1) for x in batch]) + + text_lengths = torch.LongTensor(len(batch)) + spec_lengths = torch.LongTensor(len(batch)) + wav_lengths = torch.LongTensor(len(batch)) + + text_padded = torch.LongTensor(len(batch), max_text_len) + spec_padded = torch.FloatTensor(len(batch), batch[0][1].size(0), max_spec_len) + wav_padded = torch.FloatTensor(len(batch), 1, max_wav_len) + text_padded.zero_() + spec_padded.zero_() + wav_padded.zero_() + for i in range(len(ids_sorted_decreasing)): + row = batch[ids_sorted_decreasing[i]] + + text = row[0] + text_padded[i, :text.size(0)] = text + text_lengths[i] = text.size(0) + + spec = row[1] + spec_padded[i, :, :spec.size(1)] = spec + spec_lengths[i] = spec.size(1) + + wav = row[2] + wav_padded[i, :, :wav.size(1)] = wav + wav_lengths[i] = wav.size(1) + + if self.return_ids: + return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths, ids_sorted_decreasing + return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths + + +"""Multi speaker version""" +class TextAudioSpeakerLoader(torch.utils.data.Dataset): + """ + 1) loads audio, speaker_id, text pairs + 2) normalizes text and converts them to sequences of integers + 3) computes spectrograms from audio files. + """ + def __init__(self, audiopaths_sid_text, hparams, no_text=False, augmentation=False, augmentation_params=None, no_use_textfile = False): + if no_use_textfile: + self.audiopaths_sid_text = list() + else: + self.audiopaths_sid_text = load_filepaths_and_text(audiopaths_sid_text) + + self.text_cleaners = hparams.text_cleaners + self.max_wav_value = hparams.max_wav_value + self.sampling_rate = hparams.sampling_rate + self.filter_length = hparams.filter_length + self.hop_length = hparams.hop_length + self.win_length = hparams.win_length + self.sampling_rate = hparams.sampling_rate + self.no_text = no_text + self.augmentation = augmentation + if augmentation : + self.gain_p = augmentation_params.gain_p + self.min_gain_in_db = augmentation_params.min_gain_in_db + self.max_gain_in_db = augmentation_params.max_gain_in_db + self.time_stretch_p = augmentation_params.time_stretch_p + self.min_rate = augmentation_params.min_rate + self.max_rate = augmentation_params.max_rate + self.pitch_shift_p = augmentation_params.pitch_shift_p + self.min_semitones = augmentation_params.min_semitones + self.max_semitones = augmentation_params.max_semitones + self.add_gaussian_noise_p = augmentation_params.add_gaussian_noise_p + self.min_amplitude = augmentation_params.min_amplitude + self.max_amplitude = augmentation_params.max_amplitude + self.frequency_mask_p = augmentation_params.frequency_mask_p + + self.cleaned_text = getattr(hparams, "cleaned_text", False) + + self.add_blank = hparams.add_blank + self.min_text_len = getattr(hparams, "min_text_len", 1) + self.max_text_len = getattr(hparams, "max_text_len", 1000) + + random.seed(1234) + random.shuffle(self.audiopaths_sid_text) + self._filter() + + @retry(tries=30, delay=10) + def _filter(self): + """ + Filter text & store spec lengths + """ + audiopaths_sid_text_new = [] + lengths = [] + + # for audiopath, sid, text in tqdm.tqdm(self.audiopaths_sid_text): + for audiopath, sid, text in self.audiopaths_sid_text: + if self.min_text_len <= len(text) and len(text) <= self.max_text_len: + audiopaths_sid_text_new.append([audiopath, sid, text]) + lengths.append(os.path.getsize(audiopath) // (2 * self.hop_length)) + self.audiopaths_sid_text = audiopaths_sid_text_new + self.lengths = lengths + + def get_audio_text_speaker_pair(self, audiopath_sid_text): + # separate filename, speaker_id and text + wavdata, sid, text = audiopath_sid_text[0], audiopath_sid_text[1], audiopath_sid_text[2] + text = self.get_text(text) + if self.no_text: + text = self.get_text("a") + spec, wav = self.get_audio(wavdata) + sid = self.get_sid(sid) + return (text, spec, wav, sid) + + @retry(exceptions=(PermissionError), tries=100, delay=10) + def get_audio(self, wavdata): + # 音声データは±1.0内に正規化したtorchベクトルでunsqueeze(0)で外側1次元くるんだものを扱う + audio = torch.FloatTensor(wavdata.astype(np.float32)) + sampling_rate=24000 + try: + if sampling_rate != self.sampling_rate: + raise ValueError("[Error] Exception: source {} SR doesn't match target {} SR".format( + sampling_rate, self.sampling_rate)) + except ValueError as e: + print(e) + exit() + audio_norm = self.get_normalized_audio(audio, self.max_wav_value) + + if self.augmentation: + audio_augmented = self.add_augmentation(audio_norm, sampling_rate) + audio_noised = self.add_noise(audio_augmented, sampling_rate) + # ノーマライズ後のaugmentationとnoise付加で範囲外になったところを削る + audio_augmented = torch.clamp(audio_augmented, -1, 1) + audio_noised = torch.clamp(audio_noised, -1, 1) + # audio(音声波形)は教師信号となるのでノイズは含まずaugmentationのみしたものを使用 + audio_norm = audio_augmented + # spec(スペクトログラム)は入力信号となるのでaugmentationしてさらにノイズを付加したものを使用 + spec = spectrogram_torch(audio_noised, self.filter_length, + self.sampling_rate, self.hop_length, self.win_length, + center=False) + spec_noised = self.add_spectrogram_noise(spec) + spec = torch.squeeze(spec_noised, 0) + else: + spec = spectrogram_torch(audio_norm, self.filter_length, + self.sampling_rate, self.hop_length, self.win_length, + center=False) + spec = torch.squeeze(spec, 0) + return spec, audio_norm + + def add_augmentation(self, audio, sampling_rate): + gain_in_db = 0.0 + if random.random() <= self.gain_p: + gain_in_db = random.uniform(self.min_gain_in_db, self.max_gain_in_db) + time_stretch_rate = 1.0 + if random.random() <= self.time_stretch_p: + time_stretch_rate = random.uniform(self.min_rate, self.max_rate) + pitch_shift_semitones = 0 + if random.random() <= self.pitch_shift_p: + pitch_shift_semitones = random.uniform(self.min_semitones, self.max_semitones) * 100 # 1/100 semitone 単位指定のため + augmentation_effects = [ + ["gain", f"{gain_in_db}"], + ["tempo", f"{time_stretch_rate}"], + ["pitch", f"{pitch_shift_semitones}"], + ["rate", f"{sampling_rate}"] + ] + audio_augmented, _ = torchaudio.sox_effects.apply_effects_tensor(audio, sampling_rate, augmentation_effects) + return audio_augmented + + def add_noise(self, audio, sampling_rate): + # AddGaussianNoise + audio = self.add_gaussian_noise(audio) + return audio + + def add_gaussian_noise(self, audio): + assert self.min_amplitude >= 0.0 + assert self.max_amplitude >= 0.0 + assert self.max_amplitude >= self.min_amplitude + if random.random() > self.add_gaussian_noise_p: + return audio + amplitude = random.uniform(self.min_amplitude, self.max_amplitude) + noise = torch.randn(audio.size()) + noised_audio = audio + amplitude * noise + return noised_audio + + def add_spectrogram_noise(self, spec): + # FrequencyMask + masking = torchaudio.transforms.FrequencyMasking(freq_mask_param=80) + masked = masking(spec) + return masked + + def get_normalized_audio(self, audio, max_wav_value): + audio_norm = audio / max_wav_value + audio_norm = audio_norm.unsqueeze(0) + return audio_norm + + def get_text(self, text): + if self.cleaned_text: + text_norm = cleaned_text_to_sequence(text) + else: + text_norm = text_to_sequence(text, self.text_cleaners) + if self.add_blank: + text_norm = commons.intersperse(text_norm, 0) + text_norm = torch.LongTensor(text_norm) + return text_norm + + def get_sid(self, sid): + sid = torch.LongTensor([int(sid)]) + return sid + + def __getitem__(self, index): + return self.get_audio_text_speaker_pair(self.audiopaths_sid_text[index]) + + def __len__(self): + return len(self.audiopaths_sid_text) + + +class TextAudioSpeakerCollate(): + """ Zero-pads model inputs and targets + """ + def __init__(self, return_ids=False, no_text = False): + self.return_ids = return_ids + self.no_text = no_text + + def __call__(self, batch): + """Collate's training batch from normalized text, audio and speaker identities + PARAMS + ------ + batch: [text_normalized, spec_normalized, wav_normalized, sid] + """ + # Right zero-pad all one-hot text sequences to max input length + + _, ids_sorted_decreasing = torch.sort( + torch.LongTensor([x[1].size(1) for x in batch]), + dim=0, descending=True) + + max_text_len = max([len(x[0]) for x in batch]) + max_spec_len = max([x[1].size(1) for x in batch]) + max_wav_len = max([x[2].size(1) for x in batch]) + + text_lengths = torch.LongTensor(len(batch)) + spec_lengths = torch.LongTensor(len(batch)) + wav_lengths = torch.LongTensor(len(batch)) + sid = torch.LongTensor(len(batch)) + + text_padded = torch.LongTensor(len(batch), max_text_len) + spec_padded = torch.FloatTensor(len(batch), batch[0][1].size(0), max_spec_len) + wav_padded = torch.FloatTensor(len(batch), 1, max_wav_len) + text_padded.zero_() + spec_padded.zero_() + wav_padded.zero_() + for i in range(len(ids_sorted_decreasing)): + row = batch[ids_sorted_decreasing[i]] + + text = row[0] + text_padded[i, :text.size(0)] = text + text_lengths[i] = text.size(0) + + spec = row[1] + spec_padded[i, :, :spec.size(1)] = spec + spec_lengths[i] = spec.size(1) + + wav = row[2] + wav_padded[i, :, :wav.size(1)] = wav + wav_lengths[i] = wav.size(1) + + sid[i] = row[3] + + if self.return_ids: + return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths, sid, ids_sorted_decreasing + return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths, sid + + +class DistributedBucketSampler(torch.utils.data.distributed.DistributedSampler): + """ + Maintain similar input lengths in a batch. + Length groups are specified by boundaries. + Ex) boundaries = [b1, b2, b3] -> any batch is included either {x | b1 < length(x) <=b2} or {x | b2 < length(x) <= b3}. + + It removes samples which are not included in the boundaries. + Ex) boundaries = [b1, b2, b3] -> any x s.t. length(x) <= b1 or length(x) > b3 are discarded. + """ + def __init__(self, dataset, batch_size, boundaries, num_replicas=None, rank=None, shuffle=True): + super().__init__(dataset, num_replicas=num_replicas, rank=rank, shuffle=shuffle) + self.lengths = dataset.lengths + self.batch_size = batch_size + self.boundaries = boundaries + + self.buckets, self.num_samples_per_bucket = self._create_buckets() + self.total_size = sum(self.num_samples_per_bucket) + self.num_samples = self.total_size // self.num_replicas + + def _create_buckets(self): + buckets = [[] for _ in range(len(self.boundaries) - 1)] + for i in range(len(self.lengths)): + length = self.lengths[i] + idx_bucket = self._bisect(length) + if idx_bucket != -1: + buckets[idx_bucket].append(i) + + for i in range(len(buckets) - 1, 0, -1): + if len(buckets[i]) == 0: + buckets.pop(i) + self.boundaries.pop(i+1) + + num_samples_per_bucket = [] + for i in range(len(buckets)): + len_bucket = len(buckets[i]) + total_batch_size = self.num_replicas * self.batch_size + rem = (total_batch_size - (len_bucket % total_batch_size)) % total_batch_size + num_samples_per_bucket.append(len_bucket + rem) + return buckets, num_samples_per_bucket + + def __iter__(self): + # deterministically shuffle based on epoch + g = torch.Generator() + g.manual_seed(self.epoch) + + indices = [] + if self.shuffle: + for bucket in self.buckets: + indices.append(torch.randperm(len(bucket), generator=g).tolist()) + else: + for bucket in self.buckets: + indices.append(list(range(len(bucket)))) + + batches = [] + for i in range(len(self.buckets)): + next_bucket = (i+1) % len(self.buckets) + bucket = self.buckets[i] + len_bucket = len(bucket) + ids_bucket = indices[i] + num_samples_bucket = self.num_samples_per_bucket[i] + + if len_bucket == 0: + print("[Warn] Exception: length of buckets {} is 0. ID:{} Skip.".format(i,i)) + continue + + # add extra samples to make it evenly divisible + rem = num_samples_bucket - len_bucket + ids_bucket = ids_bucket + ids_bucket * (rem // len_bucket) + ids_bucket[:(rem % len_bucket)] + + # subsample + ids_bucket = ids_bucket[self.rank::self.num_replicas] + + # batching + for j in range(len(ids_bucket) // self.batch_size): + batch = [bucket[idx] for idx in ids_bucket[j*self.batch_size:(j+1)*self.batch_size]] + batches.append(batch) + + if self.shuffle: + batch_ids = torch.randperm(len(batches), generator=g).tolist() + batches = [batches[i] for i in batch_ids] + self.batches = batches + + assert len(self.batches) * self.batch_size == self.num_samples + return iter(self.batches) + + def _bisect(self, x, lo=0, hi=None): + if hi is None: + hi = len(self.boundaries) - 1 + + if hi > lo: + mid = (hi + lo) // 2 + if self.boundaries[mid] < x and x <= self.boundaries[mid+1]: + return mid + elif x <= self.boundaries[mid]: + return self._bisect(x, lo, mid) + else: + return self._bisect(x, mid + 1, hi) + else: + return -1 + + def __len__(self): + return self.num_samples // self.batch_size diff --git a/demo/mod/mel_processing.py b/demo/mod/mel_processing.py new file mode 100755 index 00000000..cb33b76d --- /dev/null +++ b/demo/mod/mel_processing.py @@ -0,0 +1,114 @@ +import math +import os +import random +import torch +from torch import nn +import torch.nn.functional as F +import torch.utils.data +import numpy as np +import librosa +import librosa.util as librosa_util +from librosa.util import normalize, pad_center, tiny +from scipy.signal import get_window +from scipy.io.wavfile import read +from librosa.filters import mel as librosa_mel_fn + +MAX_WAV_VALUE = 32768.0 + + +def dynamic_range_compression_torch(x, C=1, clip_val=1e-5): + """ + PARAMS + ------ + C: compression factor + """ + return torch.log(torch.clamp(x, min=clip_val) * C) + + +def dynamic_range_decompression_torch(x, C=1): + """ + PARAMS + ------ + C: compression factor used to compress + """ + return torch.exp(x) / C + + +def spectral_normalize_torch(magnitudes): + output = dynamic_range_compression_torch(magnitudes) + return output + + +def spectral_de_normalize_torch(magnitudes): + output = dynamic_range_decompression_torch(magnitudes) + return output + + +mel_basis = {} +hann_window = {} + + +def spectrogram_torch(y, n_fft, sampling_rate, hop_size, win_size, center=False): + if torch.min(y) < -1.: + print('min value is ', torch.min(y)) + if torch.max(y) > 1.: + print('max value is ', torch.max(y)) + + global hann_window + dtype_device = str(y.dtype) + '_' + str(y.device) + wnsize_dtype_device = str(win_size) + '_' + dtype_device + if wnsize_dtype_device not in hann_window: + hann_window[wnsize_dtype_device] = torch.hann_window(win_size).to(dtype=y.dtype, device=y.device) + + y = torch.nn.functional.pad(y.unsqueeze(1), (int((n_fft-hop_size)/2), int((n_fft-hop_size)/2)), mode='reflect') + y = y.squeeze(1) + + spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device], + center=center, pad_mode='reflect', normalized=False, onesided=True, return_complex=True) + spec = torch.view_as_real(spec) + + spec = torch.sqrt(spec.pow(2).sum(-1) + 1e-6) + return spec + + +def spec_to_mel_torch(spec, n_fft, num_mels, sampling_rate, fmin, fmax): + global mel_basis + dtype_device = str(spec.dtype) + '_' + str(spec.device) + fmax_dtype_device = str(fmax) + '_' + dtype_device + if fmax_dtype_device not in mel_basis: + mel = librosa_mel_fn(sampling_rate, n_fft, num_mels, fmin, fmax) + mel_basis[fmax_dtype_device] = torch.from_numpy(mel).to(dtype=spec.dtype, device=spec.device) + spec = torch.matmul(mel_basis[fmax_dtype_device], spec) + spec = spectral_normalize_torch(spec) + return spec + + +def mel_spectrogram_torch(y, n_fft, num_mels, sampling_rate, hop_size, win_size, fmin, fmax, center=False): + if torch.min(y) < -1.: + print('min value is ', torch.min(y)) + if torch.max(y) > 1.: + print('max value is ', torch.max(y)) + + global mel_basis, hann_window + dtype_device = str(y.dtype) + '_' + str(y.device) + fmax_dtype_device = str(fmax) + '_' + dtype_device + wnsize_dtype_device = str(win_size) + '_' + dtype_device + if fmax_dtype_device not in mel_basis: + mel = librosa_mel_fn(sampling_rate, n_fft, num_mels, fmin, fmax) + mel_basis[fmax_dtype_device] = torch.from_numpy(mel).to(dtype=y.dtype, device=y.device) + if wnsize_dtype_device not in hann_window: + hann_window[wnsize_dtype_device] = torch.hann_window(win_size).to(dtype=y.dtype, device=y.device) + + y = torch.nn.functional.pad(y.unsqueeze(1), (int((n_fft-hop_size)/2), int((n_fft-hop_size)/2)), mode='reflect') + y = y.squeeze(1) + + spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device], + center=center, pad_mode='reflect', normalized=False, onesided=True, return_complex=True) + spec = torch.view_as_real(spec) + + spec = torch.sqrt(spec.pow(2).sum(-1) + 1e-6) + + spec = torch.matmul(mel_basis[fmax_dtype_device], spec) + spec = spectral_normalize_torch(spec) + + return spec diff --git a/demo/mod/models.py b/demo/mod/models.py new file mode 100755 index 00000000..7b40b95f --- /dev/null +++ b/demo/mod/models.py @@ -0,0 +1,407 @@ +import copy +import math +import torch +from torch import nn +from torch.nn import functional as F + +import commons +import modules +import attentions +import monotonic_align + +from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d +from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm +from commons import init_weights, get_padding + + +class TextEncoder(nn.Module): + def __init__(self, + n_vocab, + out_channels, + hidden_channels, + filter_channels, + n_heads, + n_layers, + kernel_size, + p_dropout): + super().__init__() + self.n_vocab = n_vocab + self.out_channels = out_channels + self.hidden_channels = hidden_channels + self.filter_channels = filter_channels + self.n_heads = n_heads + self.n_layers = n_layers + self.kernel_size = kernel_size + self.p_dropout = p_dropout + + self.emb = nn.Embedding(n_vocab, hidden_channels) + nn.init.normal_(self.emb.weight, 0.0, hidden_channels**-0.5) + + self.encoder = attentions.Encoder( + hidden_channels, + filter_channels, + n_heads, + n_layers, + kernel_size, + p_dropout) + self.proj= nn.Conv1d(hidden_channels, out_channels * 2, 1) + + def forward(self, x, x_lengths): + x = self.emb(x) * math.sqrt(self.hidden_channels) # [b, t, h] + x = torch.transpose(x, 1, -1) # [b, h, t] + x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype) + + x = self.encoder(x * x_mask, x_mask) + stats = self.proj(x) * x_mask + + m, logs = torch.split(stats, self.out_channels, dim=1) + return x, m, logs, x_mask + + +class ResidualCouplingBlock(nn.Module): + def __init__(self, + channels, + hidden_channels, + kernel_size, + dilation_rate, + n_layers, + n_flows=4, + gin_channels=0): + super().__init__() + self.channels = channels + self.hidden_channels = hidden_channels + self.kernel_size = kernel_size + self.dilation_rate = dilation_rate + self.n_layers = n_layers + self.n_flows = n_flows + self.gin_channels = gin_channels + + self.flows = nn.ModuleList() + for i in range(n_flows): + self.flows.append(modules.ResidualCouplingLayer(channels, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels, mean_only=True)) + self.flows.append(modules.Flip()) + + def forward(self, x, x_mask, g=None, reverse=False): + if not reverse: + for flow in self.flows: + x, _ = flow(x, x_mask, g=g, reverse=reverse) + else: + for flow in reversed(self.flows): + x = flow(x, x_mask, g=g, reverse=reverse) + return x + + +class PosteriorEncoder(nn.Module): + def __init__(self, + in_channels, + out_channels, + hidden_channels, + kernel_size, + dilation_rate, + n_layers, + gin_channels=0): + super().__init__() + self.in_channels = in_channels + self.out_channels = out_channels + self.hidden_channels = hidden_channels + self.kernel_size = kernel_size + self.dilation_rate = dilation_rate + self.n_layers = n_layers + self.gin_channels = gin_channels + + self.pre = nn.Conv1d(in_channels, hidden_channels, 1) + self.enc = modules.WN(hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels) + self.proj = nn.Conv1d(hidden_channels, out_channels * 2, 1) + + def forward(self, x, x_lengths, g=None): + x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype) + x = self.pre(x) * x_mask + x = self.enc(x, x_mask, g=g) + stats = self.proj(x) * x_mask + m, logs = torch.split(stats, self.out_channels, dim=1) + z = (m + torch.randn_like(m) * torch.exp(logs)) * x_mask + return z, m, logs, x_mask + + +class Generator(torch.nn.Module): + def __init__(self, initial_channel, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=0): + super(Generator, self).__init__() + self.num_kernels = len(resblock_kernel_sizes) + self.num_upsamples = len(upsample_rates) + self.conv_pre = Conv1d(initial_channel, upsample_initial_channel, 7, 1, padding=3) + resblock = modules.ResBlock1 if resblock == '1' else modules.ResBlock2 + + self.ups = nn.ModuleList() + for i, (u, k) in enumerate(zip(upsample_rates, upsample_kernel_sizes)): + self.ups.append(weight_norm( + ConvTranspose1d(upsample_initial_channel//(2**i), upsample_initial_channel//(2**(i+1)), + k, u, padding=(k-u)//2))) + + self.resblocks = nn.ModuleList() + for i in range(len(self.ups)): + ch = upsample_initial_channel//(2**(i+1)) + for j, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)): + self.resblocks.append(resblock(ch, k, d)) + + self.conv_post = Conv1d(ch, 1, 7, 1, padding=3, bias=False) + self.ups.apply(init_weights) + + if gin_channels != 0: + #self.cond = nn.Conv1d(gin_channels, upsample_initial_channel, 1) + gin_channels = 0 + + def forward(self, x, g=None): + x = self.conv_pre(x) + if g is not None: + #x = x + self.cond(g) + g=None + + for i in range(self.num_upsamples): + x = F.leaky_relu(x, modules.LRELU_SLOPE) + x = self.ups[i](x) + xs = None + for j in range(self.num_kernels): + if xs is None: + xs = self.resblocks[i*self.num_kernels+j](x) + else: + xs += self.resblocks[i*self.num_kernels+j](x) + x = xs / self.num_kernels + x = F.leaky_relu(x) + x = self.conv_post(x) + x = torch.tanh(x) + + return x + + def remove_weight_norm(self): + print('Removing weight norm...') + for l in self.ups: + remove_weight_norm(l) + for l in self.resblocks: + l.remove_weight_norm() + + +class DiscriminatorP(torch.nn.Module): + def __init__(self, period, kernel_size=5, stride=3, use_spectral_norm=False): + super(DiscriminatorP, self).__init__() + self.period = period + self.use_spectral_norm = use_spectral_norm + norm_f = weight_norm if use_spectral_norm == False else spectral_norm + self.convs = nn.ModuleList([ + norm_f(Conv2d(1, 32, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))), + norm_f(Conv2d(32, 128, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))), + norm_f(Conv2d(128, 512, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))), + norm_f(Conv2d(512, 1024, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))), + norm_f(Conv2d(1024, 1024, (kernel_size, 1), 1, padding=(get_padding(kernel_size, 1), 0))), + ]) + self.conv_post = norm_f(Conv2d(1024, 1, (3, 1), 1, padding=(1, 0))) + + def forward(self, x): + fmap = [] + + # 1d to 2d + b, c, t = x.shape + if t % self.period != 0: # pad first + n_pad = self.period - (t % self.period) + x = F.pad(x, (0, n_pad), "reflect") + t = t + n_pad + x = x.view(b, c, t // self.period, self.period) + + for l in self.convs: + x = l(x) + x = F.leaky_relu(x, modules.LRELU_SLOPE) + fmap.append(x) + x = self.conv_post(x) + fmap.append(x) + x = torch.flatten(x, 1, -1) + + return x, fmap + + +class DiscriminatorS(torch.nn.Module): + def __init__(self, use_spectral_norm=False): + super(DiscriminatorS, self).__init__() + norm_f = weight_norm if use_spectral_norm == False else spectral_norm + self.convs = nn.ModuleList([ + norm_f(Conv1d(1, 16, 15, 1, padding=7)), + norm_f(Conv1d(16, 64, 41, 4, groups=4, padding=20)), + norm_f(Conv1d(64, 256, 41, 4, groups=16, padding=20)), + norm_f(Conv1d(256, 1024, 41, 4, groups=64, padding=20)), + norm_f(Conv1d(1024, 1024, 41, 4, groups=256, padding=20)), + norm_f(Conv1d(1024, 1024, 5, 1, padding=2)), + ]) + self.conv_post = norm_f(Conv1d(1024, 1, 3, 1, padding=1)) + + def forward(self, x): + fmap = [] + + for l in self.convs: + x = l(x) + x = F.leaky_relu(x, modules.LRELU_SLOPE) + fmap.append(x) + x = self.conv_post(x) + fmap.append(x) + x = torch.flatten(x, 1, -1) + + return x, fmap + + +class MultiPeriodDiscriminator(torch.nn.Module): + def __init__(self, use_spectral_norm=False): + super(MultiPeriodDiscriminator, self).__init__() + periods = [2,3,5,7,11] + + discs = [DiscriminatorS(use_spectral_norm=use_spectral_norm)] + discs = discs + [DiscriminatorP(i, use_spectral_norm=use_spectral_norm) for i in periods] + self.discriminators = nn.ModuleList(discs) + + def forward(self, y, y_hat): + y_d_rs = [] + y_d_gs = [] + fmap_rs = [] + fmap_gs = [] + for i, d in enumerate(self.discriminators): + y_d_r, fmap_r = d(y) + y_d_g, fmap_g = d(y_hat) + y_d_rs.append(y_d_r) + y_d_gs.append(y_d_g) + fmap_rs.append(fmap_r) + fmap_gs.append(fmap_g) + + return y_d_rs, y_d_gs, fmap_rs, fmap_gs + + + +class SynthesizerTrn(nn.Module): + """ + Synthesizer for Training + """ + + def __init__(self, + n_vocab, + spec_channels, + segment_size, + inter_channels, + hidden_channels, + filter_channels, + n_heads, + n_layers, + kernel_size, + p_dropout, + resblock, + resblock_kernel_sizes, + resblock_dilation_sizes, + upsample_rates, + upsample_initial_channel, + upsample_kernel_sizes, + n_flow, + n_speakers=0, + gin_channels=0, + use_sdp=True, + **kwargs): + + super().__init__() + self.n_vocab = n_vocab + self.spec_channels = spec_channels + self.hidden_channels = hidden_channels + self.filter_channels = filter_channels + self.n_heads = n_heads + self.n_layers = n_layers + self.kernel_size = kernel_size + self.p_dropout = p_dropout + self.resblock = resblock + self.resblock_kernel_sizes = resblock_kernel_sizes + self.resblock_dilation_sizes = resblock_dilation_sizes + self.upsample_rates = upsample_rates + self.upsample_initial_channel = upsample_initial_channel + self.upsample_kernel_sizes = upsample_kernel_sizes + self.segment_size = segment_size + self.n_speakers = n_speakers + self.gin_channels = gin_channels + + self.use_sdp = use_sdp + + self.enc_p = TextEncoder(n_vocab, + inter_channels, + hidden_channels, + filter_channels, + n_heads, + n_layers, + kernel_size, + p_dropout) + self.dec = Generator(inter_channels, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=gin_channels) + self.enc_q = PosteriorEncoder(spec_channels, inter_channels, hidden_channels, 5, 1, 16, gin_channels=gin_channels) + self.flow = ResidualCouplingBlock(inter_channels, hidden_channels, 5, 1, 4, n_flows=n_flow, gin_channels=gin_channels) + + if n_speakers > 1: + self.emb_g = nn.Embedding(n_speakers, gin_channels) + + def forward(self, x, x_lengths, y, y_lengths, sid=None): + + x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths) + if self.n_speakers > 0: + g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1] + else: + g = None + + z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g) + z_p = self.flow(z, y_mask, g=g) + + with torch.no_grad(): + # negative cross-entropy + s_p_sq_r = torch.exp(-2 * logs_p) # [b, d, t] + neg_cent1 = torch.sum(-0.5 * math.log(2 * math.pi) - logs_p, [1], keepdim=True) # [b, 1, t_s] + neg_cent2 = torch.matmul(-0.5 * (z_p ** 2).transpose(1, 2), s_p_sq_r) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s] + neg_cent3 = torch.matmul(z_p.transpose(1, 2), (m_p * s_p_sq_r)) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s] + neg_cent4 = torch.sum(-0.5 * (m_p ** 2) * s_p_sq_r, [1], keepdim=True) # [b, 1, t_s] + neg_cent = neg_cent1 + neg_cent2 + neg_cent3 + neg_cent4 + + attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1) + attn = monotonic_align.maximum_path(neg_cent, attn_mask.squeeze(1)).unsqueeze(1).detach() + + # expand prior + m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2) + logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2) + + z_slice, ids_slice = commons.rand_slice_segments(z, y_lengths, self.segment_size) + o = self.dec(z_slice, g=g) + return o, attn, ids_slice, x_mask, y_mask, (z, z_p, m_p, logs_p, m_q, logs_q) + + def voice_conversion(self, y, y_lengths, sid_src, sid_tgt): + assert self.n_speakers > 0, "n_speakers have to be larger than 0." + g_src = self.emb_g(sid_src).unsqueeze(-1) + g_tgt = self.emb_g(sid_tgt).unsqueeze(-1) + z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src) + z_p = self.flow(z, y_mask, g=g_src) + z_hat = self.flow(z_p, y_mask, g=g_tgt, reverse=True) + o_hat = self.dec(z_hat * y_mask, g=g_tgt) + return o_hat, y_mask, (z, z_p, z_hat) + + def voice_ra_pa_db(self, y, y_lengths, sid_src, sid_tgt): + assert self.n_speakers > 0, "n_speakers have to be larger than 0." + g_src = self.emb_g(sid_src).unsqueeze(-1) + g_tgt = self.emb_g(sid_tgt).unsqueeze(-1) + z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src) + o_hat = self.dec(z * y_mask, g=g_tgt) + return o_hat, y_mask, (z) + + def voice_ra_pa_da(self, y, y_lengths, sid_src, sid_tgt): + assert self.n_speakers > 0, "n_speakers have to be larger than 0." + g_src = self.emb_g(sid_src).unsqueeze(-1) + g_tgt = self.emb_g(sid_tgt).unsqueeze(-1) + z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src) + o_hat = self.dec(z * y_mask, g=g_src) + return o_hat, y_mask, (z) + + def voice_conversion_cycle(self, y, y_lengths, sid_src, sid_tgt): + assert self.n_speakers > 0, "n_speakers have to be larger than 0." + g_src = self.emb_g(sid_src).unsqueeze(-1) + g_tgt = self.emb_g(sid_tgt).unsqueeze(-1) + z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src) + z_p = self.flow(z, y_mask, g=g_src) + z_hat = self.flow(z_p, y_mask, g=g_tgt, reverse=True) + z_p_hat = self.flow(z_hat, y_mask, g=g_tgt) + z_hat_hat = self.flow(z_p_hat, y_mask, g=g_src, reverse=True) + o_hat = self.dec(z_hat_hat * y_mask, g=g_tgt) + return o_hat, y_mask, (z, z_p, z_hat) + + diff --git a/demo/mod/modules.py b/demo/mod/modules.py new file mode 100755 index 00000000..9c7fd9cd --- /dev/null +++ b/demo/mod/modules.py @@ -0,0 +1,390 @@ +import copy +import math +import numpy as np +import scipy +import torch +from torch import nn +from torch.nn import functional as F + +from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d +from torch.nn.utils import weight_norm, remove_weight_norm + +import commons +from commons import init_weights, get_padding +from transforms import piecewise_rational_quadratic_transform + + +LRELU_SLOPE = 0.1 + + +class LayerNorm(nn.Module): + def __init__(self, channels, eps=1e-5): + super().__init__() + self.channels = channels + self.eps = eps + + self.gamma = nn.Parameter(torch.ones(channels)) + self.beta = nn.Parameter(torch.zeros(channels)) + + def forward(self, x): + x = x.transpose(1, -1) + x = F.layer_norm(x, (self.channels,), self.gamma, self.beta, self.eps) + return x.transpose(1, -1) + + +class ConvReluNorm(nn.Module): + def __init__(self, in_channels, hidden_channels, out_channels, kernel_size, n_layers, p_dropout): + super().__init__() + self.in_channels = in_channels + self.hidden_channels = hidden_channels + self.out_channels = out_channels + self.kernel_size = kernel_size + self.n_layers = n_layers + self.p_dropout = p_dropout + assert n_layers > 1, "Number of layers should be larger than 0." + + self.conv_layers = nn.ModuleList() + self.norm_layers = nn.ModuleList() + self.conv_layers.append(nn.Conv1d(in_channels, hidden_channels, kernel_size, padding=kernel_size//2)) + self.norm_layers.append(LayerNorm(hidden_channels)) + self.relu_drop = nn.Sequential( + nn.ReLU(), + nn.Dropout(p_dropout)) + for _ in range(n_layers-1): + self.conv_layers.append(nn.Conv1d(hidden_channels, hidden_channels, kernel_size, padding=kernel_size//2)) + self.norm_layers.append(LayerNorm(hidden_channels)) + self.proj = nn.Conv1d(hidden_channels, out_channels, 1) + self.proj.weight.data.zero_() + self.proj.bias.data.zero_() + + def forward(self, x, x_mask): + x_org = x + for i in range(self.n_layers): + x = self.conv_layers[i](x * x_mask) + x = self.norm_layers[i](x) + x = self.relu_drop(x) + x = x_org + self.proj(x) + return x * x_mask + + +class DDSConv(nn.Module): + """ + Dialted and Depth-Separable Convolution + """ + def __init__(self, channels, kernel_size, n_layers, p_dropout=0.): + super().__init__() + self.channels = channels + self.kernel_size = kernel_size + self.n_layers = n_layers + self.p_dropout = p_dropout + + self.drop = nn.Dropout(p_dropout) + self.convs_sep = nn.ModuleList() + self.convs_1x1 = nn.ModuleList() + self.norms_1 = nn.ModuleList() + self.norms_2 = nn.ModuleList() + for i in range(n_layers): + dilation = kernel_size ** i + padding = (kernel_size * dilation - dilation) // 2 + self.convs_sep.append(nn.Conv1d(channels, channels, kernel_size, + groups=channels, dilation=dilation, padding=padding + )) + self.convs_1x1.append(nn.Conv1d(channels, channels, 1)) + self.norms_1.append(LayerNorm(channels)) + self.norms_2.append(LayerNorm(channels)) + + def forward(self, x, x_mask, g=None): + if g is not None: + x = x + g + for i in range(self.n_layers): + y = self.convs_sep[i](x * x_mask) + y = self.norms_1[i](y) + y = F.gelu(y) + y = self.convs_1x1[i](y) + y = self.norms_2[i](y) + y = F.gelu(y) + y = self.drop(y) + x = x + y + return x * x_mask + + +class WN(torch.nn.Module): + def __init__(self, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=0, p_dropout=0): + super(WN, self).__init__() + assert(kernel_size % 2 == 1) + self.hidden_channels =hidden_channels + self.kernel_size = kernel_size, + self.dilation_rate = dilation_rate + self.n_layers = n_layers + self.gin_channels = gin_channels + self.p_dropout = p_dropout + + self.in_layers = torch.nn.ModuleList() + self.res_skip_layers = torch.nn.ModuleList() + self.drop = nn.Dropout(p_dropout) + + if gin_channels != 0: + cond_layer = torch.nn.Conv1d(gin_channels, 2*hidden_channels*n_layers, 1) + self.cond_layer = torch.nn.utils.weight_norm(cond_layer, name='weight') + + for i in range(n_layers): + dilation = dilation_rate ** i + padding = int((kernel_size * dilation - dilation) / 2) + in_layer = torch.nn.Conv1d(hidden_channels, 2*hidden_channels, kernel_size, + dilation=dilation, padding=padding) + in_layer = torch.nn.utils.weight_norm(in_layer, name='weight') + self.in_layers.append(in_layer) + + # last one is not necessary + if i < n_layers - 1: + res_skip_channels = 2 * hidden_channels + else: + res_skip_channels = hidden_channels + + res_skip_layer = torch.nn.Conv1d(hidden_channels, res_skip_channels, 1) + res_skip_layer = torch.nn.utils.weight_norm(res_skip_layer, name='weight') + self.res_skip_layers.append(res_skip_layer) + + def forward(self, x, x_mask, g=None, **kwargs): + output = torch.zeros_like(x) + n_channels_tensor = torch.IntTensor([self.hidden_channels]) + + if g is not None: + g = self.cond_layer(g) + + for i in range(self.n_layers): + x_in = self.in_layers[i](x) + if g is not None: + cond_offset = i * 2 * self.hidden_channels + g_l = g[:,cond_offset:cond_offset+2*self.hidden_channels,:] + else: + g_l = torch.zeros_like(x_in) + + acts = commons.fused_add_tanh_sigmoid_multiply( + x_in, + g_l, + n_channels_tensor) + acts = self.drop(acts) + + res_skip_acts = self.res_skip_layers[i](acts) + if i < self.n_layers - 1: + res_acts = res_skip_acts[:,:self.hidden_channels,:] + x = (x + res_acts) * x_mask + output = output + res_skip_acts[:,self.hidden_channels:,:] + else: + output = output + res_skip_acts + return output * x_mask + + def remove_weight_norm(self): + if self.gin_channels != 0: + torch.nn.utils.remove_weight_norm(self.cond_layer) + for l in self.in_layers: + torch.nn.utils.remove_weight_norm(l) + for l in self.res_skip_layers: + torch.nn.utils.remove_weight_norm(l) + + +class ResBlock1(torch.nn.Module): + def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5)): + super(ResBlock1, self).__init__() + self.convs1 = nn.ModuleList([ + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0], + padding=get_padding(kernel_size, dilation[0]))), + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1], + padding=get_padding(kernel_size, dilation[1]))), + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[2], + padding=get_padding(kernel_size, dilation[2]))) + ]) + self.convs1.apply(init_weights) + + self.convs2 = nn.ModuleList([ + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1, + padding=get_padding(kernel_size, 1))), + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1, + padding=get_padding(kernel_size, 1))), + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1, + padding=get_padding(kernel_size, 1))) + ]) + self.convs2.apply(init_weights) + + def forward(self, x, x_mask=None): + for c1, c2 in zip(self.convs1, self.convs2): + xt = F.leaky_relu(x, LRELU_SLOPE) + if x_mask is not None: + xt = xt * x_mask + xt = c1(xt) + xt = F.leaky_relu(xt, LRELU_SLOPE) + if x_mask is not None: + xt = xt * x_mask + xt = c2(xt) + x = xt + x + if x_mask is not None: + x = x * x_mask + return x + + def remove_weight_norm(self): + for l in self.convs1: + remove_weight_norm(l) + for l in self.convs2: + remove_weight_norm(l) + + +class ResBlock2(torch.nn.Module): + def __init__(self, channels, kernel_size=3, dilation=(1, 3)): + super(ResBlock2, self).__init__() + self.convs = nn.ModuleList([ + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0], + padding=get_padding(kernel_size, dilation[0]))), + weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1], + padding=get_padding(kernel_size, dilation[1]))) + ]) + self.convs.apply(init_weights) + + def forward(self, x, x_mask=None): + for c in self.convs: + xt = F.leaky_relu(x, LRELU_SLOPE) + if x_mask is not None: + xt = xt * x_mask + xt = c(xt) + x = xt + x + if x_mask is not None: + x = x * x_mask + return x + + def remove_weight_norm(self): + for l in self.convs: + remove_weight_norm(l) + + +class Log(nn.Module): + def forward(self, x, x_mask, reverse=False, **kwargs): + if not reverse: + y = torch.log(torch.clamp_min(x, 1e-5)) * x_mask + logdet = torch.sum(-y, [1, 2]) + return y, logdet + else: + x = torch.exp(x) * x_mask + return x + + +class Flip(nn.Module): + def forward(self, x, *args, reverse=False, **kwargs): + x = torch.flip(x, [1]) + if not reverse: + logdet = torch.zeros(x.size(0)).to(dtype=x.dtype, device=x.device) + return x, logdet + else: + return x + + +class ElementwiseAffine(nn.Module): + def __init__(self, channels): + super().__init__() + self.channels = channels + self.m = nn.Parameter(torch.zeros(channels,1)) + self.logs = nn.Parameter(torch.zeros(channels,1)) + + def forward(self, x, x_mask, reverse=False, **kwargs): + if not reverse: + y = self.m + torch.exp(self.logs) * x + y = y * x_mask + logdet = torch.sum(self.logs * x_mask, [1,2]) + return y, logdet + else: + x = (x - self.m) * torch.exp(-self.logs) * x_mask + return x + + +class ResidualCouplingLayer(nn.Module): + def __init__(self, + channels, + hidden_channels, + kernel_size, + dilation_rate, + n_layers, + p_dropout=0, + gin_channels=0, + mean_only=False): + assert channels % 2 == 0, "channels should be divisible by 2" + super().__init__() + self.channels = channels + self.hidden_channels = hidden_channels + self.kernel_size = kernel_size + self.dilation_rate = dilation_rate + self.n_layers = n_layers + self.half_channels = channels // 2 + self.mean_only = mean_only + + self.pre = nn.Conv1d(self.half_channels, hidden_channels, 1) + self.enc = WN(hidden_channels, kernel_size, dilation_rate, n_layers, p_dropout=p_dropout, gin_channels=gin_channels) + self.post = nn.Conv1d(hidden_channels, self.half_channels * (2 - mean_only), 1) + self.post.weight.data.zero_() + self.post.bias.data.zero_() + + def forward(self, x, x_mask, g=None, reverse=False): + x0, x1 = torch.split(x, [self.half_channels]*2, 1) + h = self.pre(x0) * x_mask + h = self.enc(h, x_mask, g=g) + stats = self.post(h) * x_mask + if not self.mean_only: + m, logs = torch.split(stats, [self.half_channels]*2, 1) + else: + m = stats + logs = torch.zeros_like(m) + + if not reverse: + x1 = m + x1 * torch.exp(logs) * x_mask + x = torch.cat([x0, x1], 1) + logdet = torch.sum(logs, [1,2]) + return x, logdet + else: + x1 = (x1 - m) * torch.exp(-logs) * x_mask + x = torch.cat([x0, x1], 1) + return x + + +class ConvFlow(nn.Module): + def __init__(self, in_channels, filter_channels, kernel_size, n_layers, num_bins=10, tail_bound=5.0): + super().__init__() + self.in_channels = in_channels + self.filter_channels = filter_channels + self.kernel_size = kernel_size + self.n_layers = n_layers + self.num_bins = num_bins + self.tail_bound = tail_bound + self.half_channels = in_channels // 2 + + self.pre = nn.Conv1d(self.half_channels, filter_channels, 1) + self.convs = DDSConv(filter_channels, kernel_size, n_layers, p_dropout=0.) + self.proj = nn.Conv1d(filter_channels, self.half_channels * (num_bins * 3 - 1), 1) + self.proj.weight.data.zero_() + self.proj.bias.data.zero_() + + def forward(self, x, x_mask, g=None, reverse=False): + x0, x1 = torch.split(x, [self.half_channels]*2, 1) + h = self.pre(x0) + h = self.convs(h, x_mask, g=g) + h = self.proj(h) * x_mask + + b, c, t = x0.shape + h = h.reshape(b, c, -1, t).permute(0, 1, 3, 2) # [b, cx?, t] -> [b, c, t, ?] + + unnormalized_widths = h[..., :self.num_bins] / math.sqrt(self.filter_channels) + unnormalized_heights = h[..., self.num_bins:2*self.num_bins] / math.sqrt(self.filter_channels) + unnormalized_derivatives = h[..., 2 * self.num_bins:] + + x1, logabsdet = piecewise_rational_quadratic_transform(x1, + unnormalized_widths, + unnormalized_heights, + unnormalized_derivatives, + inverse=reverse, + tails='linear', + tail_bound=self.tail_bound + ) + + x = torch.cat([x0, x1], 1) * x_mask + logdet = torch.sum(logabsdet * x_mask, [1,2]) + if not reverse: + return x, logdet + else: + return x diff --git a/demo/mod/monotonic_align/__init__.py b/demo/mod/monotonic_align/__init__.py new file mode 100755 index 00000000..3d7009c4 --- /dev/null +++ b/demo/mod/monotonic_align/__init__.py @@ -0,0 +1,19 @@ +import numpy as np +import torch +from .monotonic_align.core import maximum_path_c + + +def maximum_path(neg_cent, mask): + """ Cython optimized version. + neg_cent: [b, t_t, t_s] + mask: [b, t_t, t_s] + """ + device = neg_cent.device + dtype = neg_cent.dtype + neg_cent = neg_cent.data.cpu().numpy().astype(np.float32) + path = np.zeros(neg_cent.shape, dtype=np.int32) + + t_t_max = mask.sum(1)[:, 0].data.cpu().numpy().astype(np.int32) + t_s_max = mask.sum(2)[:, 0].data.cpu().numpy().astype(np.int32) + maximum_path_c(path, neg_cent, t_t_max, t_s_max) + return torch.from_numpy(path).to(device=device, dtype=dtype) diff --git a/demo/mod/monotonic_align/core.pyx b/demo/mod/monotonic_align/core.pyx new file mode 100755 index 00000000..bfaabd4d --- /dev/null +++ b/demo/mod/monotonic_align/core.pyx @@ -0,0 +1,42 @@ +cimport cython +from cython.parallel import prange + + +@cython.boundscheck(False) +@cython.wraparound(False) +cdef void maximum_path_each(int[:,::1] path, float[:,::1] value, int t_y, int t_x, float max_neg_val=-1e9) nogil: + cdef int x + cdef int y + cdef float v_prev + cdef float v_cur + cdef float tmp + cdef int index = t_x - 1 + + for y in range(t_y): + for x in range(max(0, t_x + y - t_y), min(t_x, y + 1)): + if x == y: + v_cur = max_neg_val + else: + v_cur = value[y-1, x] + if x == 0: + if y == 0: + v_prev = 0. + else: + v_prev = max_neg_val + else: + v_prev = value[y-1, x-1] + value[y, x] += max(v_prev, v_cur) + + for y in range(t_y - 1, -1, -1): + path[y, index] = 1 + if index != 0 and (index == y or value[y-1, index] < value[y-1, index-1]): + index = index - 1 + + +@cython.boundscheck(False) +@cython.wraparound(False) +cpdef void maximum_path_c(int[:,:,::1] paths, float[:,:,::1] values, int[::1] t_ys, int[::1] t_xs) nogil: + cdef int b = paths.shape[0] + cdef int i + for i in prange(b, nogil=True): + maximum_path_each(paths[i], values[i], t_ys[i], t_xs[i]) diff --git a/demo/mod/monotonic_align/monotonic_align/core.cpython-39-x86_64-linux-gnu.so b/demo/mod/monotonic_align/monotonic_align/core.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..d42eff714b1b42fc96cfceb02d8a14248865011b GIT binary patch literal 983360 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
vn?Ye2aGhF$wkVC1mg> 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Ν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

ooA7&D**vd0S1wy}50m7% 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 literal 0 HcmV?d00001 diff --git a/demo/mod/monotonic_align/setup.py b/demo/mod/monotonic_align/setup.py new file mode 100755 index 00000000..d68e6672 --- /dev/null +++ b/demo/mod/monotonic_align/setup.py @@ -0,0 +1,23 @@ +import numpy as np +import torch +import sys +print(sys.path) +sys.path.append("/backend/mod/") +print(sys.path) +from .monotonic_align.core import maximum_path_c + + +def maximum_path(neg_cent, mask): + """ Cython optimized version. + neg_cent: [b, t_t, t_s] + mask: [b, t_t, t_s] + """ + device = neg_cent.device + dtype = neg_cent.dtype + neg_cent = neg_cent.data.cpu().numpy().astype(np.float32) + path = np.zeros(neg_cent.shape, dtype=np.int32) + + t_t_max = mask.sum(1)[:, 0].data.cpu().numpy().astype(np.int32) + t_s_max = mask.sum(2)[:, 0].data.cpu().numpy().astype(np.int32) + maximum_path_c(path, neg_cent, t_t_max, t_s_max) + return torch.from_numpy(path).to(device=device, dtype=dtype) diff --git a/demo/mod/text/__init__.py b/demo/mod/text/__init__.py new file mode 100755 index 00000000..4ac41f90 --- /dev/null +++ b/demo/mod/text/__init__.py @@ -0,0 +1,54 @@ +""" from https://github.com/keithito/tacotron """ +from text import cleaners +from text.symbols import symbols + + +# Mappings from symbol to numeric ID and vice versa: +_symbol_to_id = {s: i for i, s in enumerate(symbols)} +_id_to_symbol = {i: s for i, s in enumerate(symbols)} + + +def text_to_sequence(text, cleaner_names): + '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text. + Args: + text: string to convert to a sequence + cleaner_names: names of the cleaner functions to run the text through + Returns: + List of integers corresponding to the symbols in the text + ''' + sequence = [] + + clean_text = _clean_text(text, cleaner_names) + for symbol in clean_text: + symbol_id = _symbol_to_id[symbol] + sequence += [symbol_id] + return sequence + + +def cleaned_text_to_sequence(cleaned_text): + '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text. + Args: + text: string to convert to a sequence + Returns: + List of integers corresponding to the symbols in the text + ''' + sequence = [_symbol_to_id[symbol] for symbol in cleaned_text] + return sequence + + +def sequence_to_text(sequence): + '''Converts a sequence of IDs back to a string''' + result = '' + for symbol_id in sequence: + s = _id_to_symbol[symbol_id] + result += s + return result + + +def _clean_text(text, cleaner_names): + for name in cleaner_names: + cleaner = getattr(cleaners, name) + if not cleaner: + raise Exception('Unknown cleaner: %s' % name) + text = cleaner(text) + return text diff --git a/demo/mod/text/cleaners.py b/demo/mod/text/cleaners.py new file mode 100755 index 00000000..32afd52c --- /dev/null +++ b/demo/mod/text/cleaners.py @@ -0,0 +1,105 @@ +""" The following information was added with reference to https://github.com/jaywalnut310/vits/tree/1eef52ed50743f77fca9ff6773ba673497f6bf9d. """ +""" from https://github.com/keithito/tacotron """ + +''' +Cleaners are transformations that run over the input text at both training and eval time. + +Cleaners can be selected by passing a comma-delimited list of cleaner names as the "cleaners" +hyperparameter. Some cleaners are English-specific. You'll typically want to use: + 1. "english_cleaners" for English text + 2. "transliteration_cleaners" for non-English text that can be transliterated to ASCII using + the Unidecode library (https://pypi.python.org/pypi/Unidecode) + 3. "basic_cleaners" if you do not want to transliterate (in this case, you should also update + the symbols in symbols.py to match your data). +''' + +import re +from unidecode import unidecode +from phonemizer import phonemize + + +# Regular expression matching whitespace: +_whitespace_re = re.compile(r'\s+') + +# List of (regular expression, replacement) pairs for abbreviations: +_abbreviations = [(re.compile('\\b%s\\.' % x[0], re.IGNORECASE), x[1]) for x in [ + ('mrs', 'misess'), + ('mr', 'mister'), + ('dr', 'doctor'), + ('st', 'saint'), + ('co', 'company'), + ('jr', 'junior'), + ('maj', 'major'), + ('gen', 'general'), + ('drs', 'doctors'), + ('rev', 'reverend'), + ('lt', 'lieutenant'), + ('hon', 'honorable'), + ('sgt', 'sergeant'), + ('capt', 'captain'), + ('esq', 'esquire'), + ('ltd', 'limited'), + ('col', 'colonel'), + ('ft', 'fort'), +]] + + +def expand_abbreviations(text): + for regex, replacement in _abbreviations: + text = re.sub(regex, replacement, text) + return text + + +def expand_numbers(text): + return normalize_numbers(text) + + +def lowercase(text): + return text.lower() + + +def collapse_whitespace(text): + return re.sub(_whitespace_re, ' ', text) + + +def convert_to_ascii(text): + return unidecode(text) + + +def basic_cleaners(text): + '''Basic pipeline that lowercases and collapses whitespace without transliteration.''' + text = lowercase(text) + text = collapse_whitespace(text) + return text + + +def transliteration_cleaners(text): + '''Pipeline for non-English text that transliterates to ASCII.''' + text = convert_to_ascii(text) + text = lowercase(text) + text = collapse_whitespace(text) + return text + + +def english_cleaners(text): + '''Pipeline for English text, including abbreviation expansion.''' + text = convert_to_ascii(text) + text = lowercase(text) + text = expand_abbreviations(text) + phonemes = phonemize(text, language='en-us', backend='espeak', strip=True) + phonemes = collapse_whitespace(phonemes) + return phonemes + + +def english_cleaners2(text): + '''Pipeline for English text, including abbreviation expansion. + punctuation + stress''' + text = convert_to_ascii(text) + text = lowercase(text) + text = expand_abbreviations(text) + phonemes = phonemize(text, language='en-us', backend='espeak', strip=True, preserve_punctuation=True, with_stress=True) + phonemes = collapse_whitespace(phonemes) + return phonemes + +def japanese_cleaners(text): + phonemes = text.split('-') + return phonemes \ No newline at end of file diff --git a/demo/mod/text/symbols.py b/demo/mod/text/symbols.py new file mode 100755 index 00000000..2a46c1fa --- /dev/null +++ b/demo/mod/text/symbols.py @@ -0,0 +1,64 @@ +""" The following information was added with reference to https://github.com/jaywalnut310/vits/tree/1eef52ed50743f77fca9ff6773ba673497f6bf9d """ +""" from https://github.com/keithito/tacotron """ + +''' +Defines the set of symbols used in text input to the model. +''' +_pad = '_' +_punctuation = ';:,.!?¡¿—…"«»“” ' +_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +_letters_ipa = "ɑɐɒæɓʙβɔɕçɗɖðʤəɘɚɛɜɝɞɟʄɡɠɢʛɦɧħɥʜɨɪʝɭɬɫɮʟɱɯɰŋɳɲɴøɵɸθœɶʘɹɺɾɻʀʁɽʂʃʈʧʉʊʋⱱʌɣɤʍχʎʏʑʐʒʔʡʕʢǀǁǂǃˈˌːˑʼʴʰʱʲʷˠˤ˞↓↑→↗↘'̩'ᵻ" + + +# Export all symbols: +symbols = [_pad] + list(_punctuation) + list(_letters) + list(_letters_ipa) + +# Special symbol ids +SPACE_ID = symbols.index(" ") + +symbols = [ + "A", + "E", + "I", + "N", + "O", + "U", + "a", + "b", + "by", + "ch", + "cl", + "d", + "dy", + "e", + "f", + "g", + "gy", + "h", + "hy", + "i", + "j", + "k", + "ky", + "m", + "my", + "n", + "ny", + "o", + "p", + "py", + "r", + "ry", + "s", + "sh", + "t", + "ts", + "ty", + "u", + "v", + "w", + "y", + "z", + "pau", + "sil" +] diff --git a/demo/mod/transforms.py b/demo/mod/transforms.py new file mode 100755 index 00000000..4793d67c --- /dev/null +++ b/demo/mod/transforms.py @@ -0,0 +1,193 @@ +import torch +from torch.nn import functional as F + +import numpy as np + + +DEFAULT_MIN_BIN_WIDTH = 1e-3 +DEFAULT_MIN_BIN_HEIGHT = 1e-3 +DEFAULT_MIN_DERIVATIVE = 1e-3 + + +def piecewise_rational_quadratic_transform(inputs, + unnormalized_widths, + unnormalized_heights, + unnormalized_derivatives, + inverse=False, + tails=None, + tail_bound=1., + min_bin_width=DEFAULT_MIN_BIN_WIDTH, + min_bin_height=DEFAULT_MIN_BIN_HEIGHT, + min_derivative=DEFAULT_MIN_DERIVATIVE): + + if tails is None: + spline_fn = rational_quadratic_spline + spline_kwargs = {} + else: + spline_fn = unconstrained_rational_quadratic_spline + spline_kwargs = { + 'tails': tails, + 'tail_bound': tail_bound + } + + outputs, logabsdet = spline_fn( + inputs=inputs, + unnormalized_widths=unnormalized_widths, + unnormalized_heights=unnormalized_heights, + unnormalized_derivatives=unnormalized_derivatives, + inverse=inverse, + min_bin_width=min_bin_width, + min_bin_height=min_bin_height, + min_derivative=min_derivative, + **spline_kwargs + ) + return outputs, logabsdet + + +def searchsorted(bin_locations, inputs, eps=1e-6): + bin_locations[..., -1] += eps + return torch.sum( + inputs[..., None] >= bin_locations, + dim=-1 + ) - 1 + + +def unconstrained_rational_quadratic_spline(inputs, + unnormalized_widths, + unnormalized_heights, + unnormalized_derivatives, + inverse=False, + tails='linear', + tail_bound=1., + min_bin_width=DEFAULT_MIN_BIN_WIDTH, + min_bin_height=DEFAULT_MIN_BIN_HEIGHT, + min_derivative=DEFAULT_MIN_DERIVATIVE): + inside_interval_mask = (inputs >= -tail_bound) & (inputs <= tail_bound) + outside_interval_mask = ~inside_interval_mask + + outputs = torch.zeros_like(inputs) + logabsdet = torch.zeros_like(inputs) + + if tails == 'linear': + unnormalized_derivatives = F.pad(unnormalized_derivatives, pad=(1, 1)) + constant = np.log(np.exp(1 - min_derivative) - 1) + unnormalized_derivatives[..., 0] = constant + unnormalized_derivatives[..., -1] = constant + + outputs[outside_interval_mask] = inputs[outside_interval_mask] + logabsdet[outside_interval_mask] = 0 + else: + raise RuntimeError('{} tails are not implemented.'.format(tails)) + + outputs[inside_interval_mask], logabsdet[inside_interval_mask] = rational_quadratic_spline( + inputs=inputs[inside_interval_mask], + unnormalized_widths=unnormalized_widths[inside_interval_mask, :], + unnormalized_heights=unnormalized_heights[inside_interval_mask, :], + unnormalized_derivatives=unnormalized_derivatives[inside_interval_mask, :], + inverse=inverse, + left=-tail_bound, right=tail_bound, bottom=-tail_bound, top=tail_bound, + min_bin_width=min_bin_width, + min_bin_height=min_bin_height, + min_derivative=min_derivative + ) + + return outputs, logabsdet + +def rational_quadratic_spline(inputs, + unnormalized_widths, + unnormalized_heights, + unnormalized_derivatives, + inverse=False, + left=0., right=1., bottom=0., top=1., + min_bin_width=DEFAULT_MIN_BIN_WIDTH, + min_bin_height=DEFAULT_MIN_BIN_HEIGHT, + min_derivative=DEFAULT_MIN_DERIVATIVE): + if torch.min(inputs) < left or torch.max(inputs) > right: + raise ValueError('Input to a transform is not within its domain') + + num_bins = unnormalized_widths.shape[-1] + + if min_bin_width * num_bins > 1.0: + raise ValueError('Minimal bin width too large for the number of bins') + if min_bin_height * num_bins > 1.0: + raise ValueError('Minimal bin height too large for the number of bins') + + widths = F.softmax(unnormalized_widths, dim=-1) + widths = min_bin_width + (1 - min_bin_width * num_bins) * widths + cumwidths = torch.cumsum(widths, dim=-1) + cumwidths = F.pad(cumwidths, pad=(1, 0), mode='constant', value=0.0) + cumwidths = (right - left) * cumwidths + left + cumwidths[..., 0] = left + cumwidths[..., -1] = right + widths = cumwidths[..., 1:] - cumwidths[..., :-1] + + derivatives = min_derivative + F.softplus(unnormalized_derivatives) + + heights = F.softmax(unnormalized_heights, dim=-1) + heights = min_bin_height + (1 - min_bin_height * num_bins) * heights + cumheights = torch.cumsum(heights, dim=-1) + cumheights = F.pad(cumheights, pad=(1, 0), mode='constant', value=0.0) + cumheights = (top - bottom) * cumheights + bottom + cumheights[..., 0] = bottom + cumheights[..., -1] = top + heights = cumheights[..., 1:] - cumheights[..., :-1] + + if inverse: + bin_idx = searchsorted(cumheights, inputs)[..., None] + else: + bin_idx = searchsorted(cumwidths, inputs)[..., None] + + input_cumwidths = cumwidths.gather(-1, bin_idx)[..., 0] + input_bin_widths = widths.gather(-1, bin_idx)[..., 0] + + input_cumheights = cumheights.gather(-1, bin_idx)[..., 0] + delta = heights / widths + input_delta = delta.gather(-1, bin_idx)[..., 0] + + input_derivatives = derivatives.gather(-1, bin_idx)[..., 0] + input_derivatives_plus_one = derivatives[..., 1:].gather(-1, bin_idx)[..., 0] + + input_heights = heights.gather(-1, bin_idx)[..., 0] + + if inverse: + a = (((inputs - input_cumheights) * (input_derivatives + + input_derivatives_plus_one + - 2 * input_delta) + + input_heights * (input_delta - input_derivatives))) + b = (input_heights * input_derivatives + - (inputs - input_cumheights) * (input_derivatives + + input_derivatives_plus_one + - 2 * input_delta)) + c = - input_delta * (inputs - input_cumheights) + + discriminant = b.pow(2) - 4 * a * c + assert (discriminant >= 0).all() + + root = (2 * c) / (-b - torch.sqrt(discriminant)) + outputs = root * input_bin_widths + input_cumwidths + + theta_one_minus_theta = root * (1 - root) + denominator = input_delta + ((input_derivatives + input_derivatives_plus_one - 2 * input_delta) + * theta_one_minus_theta) + derivative_numerator = input_delta.pow(2) * (input_derivatives_plus_one * root.pow(2) + + 2 * input_delta * theta_one_minus_theta + + input_derivatives * (1 - root).pow(2)) + logabsdet = torch.log(derivative_numerator) - 2 * torch.log(denominator) + + return outputs, -logabsdet + else: + theta = (inputs - input_cumwidths) / input_bin_widths + theta_one_minus_theta = theta * (1 - theta) + + numerator = input_heights * (input_delta * theta.pow(2) + + input_derivatives * theta_one_minus_theta) + denominator = input_delta + ((input_derivatives + input_derivatives_plus_one - 2 * input_delta) + * theta_one_minus_theta) + outputs = input_cumheights + numerator / denominator + + derivative_numerator = input_delta.pow(2) * (input_derivatives_plus_one * theta.pow(2) + + 2 * input_delta * theta_one_minus_theta + + input_derivatives * (1 - theta).pow(2)) + logabsdet = torch.log(derivative_numerator) - 2 * torch.log(denominator) + + return outputs, logabsdet diff --git a/demo/mod/utils.py b/demo/mod/utils.py new file mode 100755 index 00000000..fae83f01 --- /dev/null +++ b/demo/mod/utils.py @@ -0,0 +1,270 @@ +import os +import glob +import sys +import argparse +import logging +import json +import subprocess +import numpy as np +from scipy.io.wavfile import read +import torch + +MATPLOTLIB_FLAG = False + +logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) +logger = logging + + +def load_checkpoint(checkpoint_path, model, optimizer=None): + assert os.path.isfile(checkpoint_path), f"No such file or directory: {checkpoint_path}" + checkpoint_dict = torch.load(checkpoint_path, map_location='cpu') + iteration = checkpoint_dict['iteration'] + learning_rate = checkpoint_dict['learning_rate'] + if optimizer is not None: + optimizer.load_state_dict(checkpoint_dict['optimizer']) + saved_state_dict = checkpoint_dict['model'] + if hasattr(model, 'module'): + state_dict = model.module.state_dict() + else: + state_dict = model.state_dict() + new_state_dict= {} + for k, v in state_dict.items(): + try: + new_state_dict[k] = saved_state_dict[k] + except: + logger.info("%s is not in the checkpoint" % k) + new_state_dict[k] = v + if hasattr(model, 'module'): + model.module.load_state_dict(new_state_dict) + else: + model.load_state_dict(new_state_dict) + logger.info("Loaded checkpoint '{}' (iteration {})" .format( + checkpoint_path, iteration)) + return model, optimizer, learning_rate, iteration + + +def save_checkpoint(model, optimizer, learning_rate, iteration, checkpoint_path): + logger.info("Saving model and optimizer state at iteration {} to {}".format( + iteration, checkpoint_path)) + if hasattr(model, 'module'): + state_dict = model.module.state_dict() + else: + state_dict = model.state_dict() + torch.save({'model': state_dict, + 'iteration': iteration, + 'optimizer': optimizer.state_dict(), + 'learning_rate': learning_rate}, checkpoint_path) + + +def summarize(writer, global_step, scalars={}, histograms={}, images={}, audios={}, audio_sampling_rate=22050): + for k, v in scalars.items(): + writer.add_scalar(k, v, global_step) + for k, v in histograms.items(): + writer.add_histogram(k, v, global_step) + for k, v in images.items(): + writer.add_image(k, v, global_step, dataformats='HWC') + for k, v in audios.items(): + writer.add_audio(k, v, global_step, audio_sampling_rate) + + +def latest_checkpoint_path(dir_path, regex="G_*.pth"): + f_list = glob.glob(os.path.join(dir_path, regex)) + f_list.sort(key=lambda f: int("".join(filter(str.isdigit, f)))) + x = f_list[-1] + print(x) + return x + + +def plot_spectrogram_to_numpy(spectrogram): + global MATPLOTLIB_FLAG + if not MATPLOTLIB_FLAG: + import matplotlib + matplotlib.use("Agg") + MATPLOTLIB_FLAG = True + mpl_logger = logging.getLogger('matplotlib') + mpl_logger.setLevel(logging.WARNING) + import matplotlib.pylab as plt + import numpy as np + + fig, ax = plt.subplots(figsize=(10,2)) + im = ax.imshow(spectrogram, aspect="auto", origin="lower", + interpolation='none') + plt.colorbar(im, ax=ax) + plt.xlabel("Frames") + plt.ylabel("Channels") + plt.tight_layout() + + fig.canvas.draw() + data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='') + data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,)) + plt.close() + return data + + +def plot_alignment_to_numpy(alignment, info=None): + global MATPLOTLIB_FLAG + if not MATPLOTLIB_FLAG: + import matplotlib + matplotlib.use("Agg") + MATPLOTLIB_FLAG = True + mpl_logger = logging.getLogger('matplotlib') + mpl_logger.setLevel(logging.WARNING) + import matplotlib.pylab as plt + import numpy as np + + fig, ax = plt.subplots(figsize=(6, 4)) + im = ax.imshow(alignment.transpose(), aspect='auto', origin='lower', + interpolation='none') + fig.colorbar(im, ax=ax) + xlabel = 'Decoder timestep' + if info is not None: + xlabel += '\n\n' + info + plt.xlabel(xlabel) + plt.ylabel('Encoder timestep') + plt.tight_layout() + + fig.canvas.draw() + data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='') + data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,)) + plt.close() + return data + + +def load_wav_to_torch(full_path): + sampling_rate, data = read(full_path) # scipy.io.wavfile + return torch.FloatTensor(data.astype(np.float32)), sampling_rate + + +def load_filepaths_and_text(filename, split="|"): + with open(filename, encoding='utf-8') as f: + filepaths_and_text = [line.strip().split(split) for line in f] + return filepaths_and_text + + +def get_hparams(init=True): + parser = argparse.ArgumentParser() + parser.add_argument('-c', '--config', type=str, default="./configs/base.json", + help='JSON file for configuration') + parser.add_argument('-m', '--model', type=str, required=True, + help='Model name') + parser.add_argument('-fg', '--fine_tuning_g', type=str, default=None, + help='If fine tuning, please specify model(G)') + parser.add_argument('-fd', '--fine_tuning_d', type=str, default=None, + help='If fine tuning, please specify model(D)') + + args = parser.parse_args() + model_dir = os.path.join("./logs", args.model) + + if not os.path.exists(model_dir): + os.makedirs(model_dir) + + config_path = args.config + config_save_path = os.path.join(model_dir, "config.json") + if init: + with open(config_path, "r") as f: + data = f.read() + with open(config_save_path, "w") as f: + f.write(data) + else: + with open(config_save_path, "r") as f: + data = f.read() + config = json.loads(data) + + #Added about fine tuning + if args.fine_tuning_g != None and args.fine_tuning_d != None: + config['fine_flag'] = True + config['fine_model_g'] = args.fine_tuning_g + config['fine_model_d'] = args.fine_tuning_d + else: + config['fine_flag'] = False + + hparams = HParams(**config) + hparams.model_dir = model_dir + return hparams + + +def get_hparams_from_dir(model_dir): + config_save_path = os.path.join(model_dir, "config.json") + with open(config_save_path, "r") as f: + data = f.read() + config = json.loads(data) + + hparams =HParams(**config) + hparams.model_dir = model_dir + return hparams + + +def get_hparams_from_file(config_path): + with open(config_path, "r") as f: + data = f.read() + config = json.loads(data) + + hparams =HParams(**config) + return hparams + + +def check_git_hash(model_dir): + source_dir = os.path.dirname(os.path.realpath(__file__)) + if not os.path.exists(os.path.join(source_dir, ".git")): + logger.warn("{} is not a git repository, therefore hash value comparison will be ignored.".format( + source_dir + )) + return + + cur_hash = subprocess.getoutput("git rev-parse HEAD") + + path = os.path.join(model_dir, "githash") + if os.path.exists(path): + saved_hash = open(path).read() + if saved_hash != cur_hash: + logger.warn("git hash values are different. {}(saved) != {}(current)".format( + saved_hash[:8], cur_hash[:8])) + else: + open(path, "w").write(cur_hash) + + +def get_logger(model_dir, filename="train.log"): + global logger + logger = logging.getLogger(os.path.basename(model_dir)) + logger.setLevel(logging.DEBUG) + + formatter = logging.Formatter("%(asctime)s\t%(name)s\t%(levelname)s\t%(message)s") + if not os.path.exists(model_dir): + os.makedirs(model_dir) + h = logging.FileHandler(os.path.join(model_dir, filename)) + h.setLevel(logging.DEBUG) + h.setFormatter(formatter) + logger.addHandler(h) + return logger + + +class HParams(): + def __init__(self, **kwargs): + for k, v in kwargs.items(): + if type(v) == dict: + v = HParams(**v) + self[k] = v + + def keys(self): + return self.__dict__.keys() + + def items(self): + return self.__dict__.items() + + def values(self): + return self.__dict__.values() + + def __len__(self): + return len(self.__dict__) + + def __getitem__(self, key): + return getattr(self, key) + + def __setitem__(self, key, value): + return setattr(self, key, value) + + def __contains__(self, key): + return key in self.__dict__ + + def __repr__(self): + return self.__dict__.__repr__() diff --git a/demo/requirements.txt b/demo/requirements.txt new file mode 100644 index 00000000..d6f87d68 --- /dev/null +++ b/demo/requirements.txt @@ -0,0 +1,85 @@ +absl-py==1.2.0 +appdirs==1.4.4 +attrs==22.1.0 +audioread==3.0.0 +Babel==2.10.3 +bidict==0.22.0 +cachetools==5.2.0 +certifi==2022.6.15 +cffi==1.15.1 +charset-normalizer==2.1.1 +clldutils==3.12.0 +colorama==0.4.5 +colorlog==6.6.0 +csvw==3.1.1 +cycler==0.11.0 +Cython==0.29.32 +decorator==5.1.1 +dlinfo==1.2.1 +dnspython==2.2.1 +eventlet==0.33.1 +fonttools==4.36.0 +google-auth==2.11.0 +google-auth-oauthlib==0.4.6 +greenlet==1.1.2 +grpcio==1.47.0 +idna==3.3 +importlib-metadata==4.12.0 +isodate==0.6.1 +joblib==1.1.0 +jsonschema==4.14.0 +kiwisolver==1.4.4 +language-tags==1.1.0 +librosa==0.9.2 +llvmlite==0.39.0 +Markdown==3.4.1 +MarkupSafe==2.1.1 +matplotlib==3.5.3 +numba==0.56.0 +numpy==1.22.4 +oauthlib==3.2.0 +packaging==21.3 +phonemizer==3.2.1 +Pillow==9.2.0 +pooch==1.6.0 +protobuf==3.19.4 +psutil==5.9.1 +py==1.11.0 +pyasn1==0.4.8 +pyasn1-modules==0.2.8 +pycparser==2.21 +pyopenjtalk==0.2.0 +pyparsing==3.0.9 +pyrsistent==0.18.1 +python-dateutil==2.8.2 +python-engineio==4.3.4 +python-socketio==5.7.1 +pytz==2022.2.1 +rdflib==6.2.0 +regex==2022.8.17 +requests==2.28.1 +requests-oauthlib==1.3.1 +resampy==0.4.0 +retry==0.9.2 +rfc3986==1.5.0 +rsa==4.9 +scikit-learn==1.1.2 +scipy==1.9.0 +segments==2.2.1 +six==1.16.0 +SoundFile==0.10.3.post1 +tabulate==0.8.10 +tensorboard==2.10.0 +tensorboard-data-server==0.6.1 +tensorboard-plugin-wit==1.8.1 +threadpoolctl==3.1.0 +torch==1.12.1+cu113 +torchaudio==0.12.1+cu113 +torchvision==0.13.1+cu113 +tqdm==4.64.0 +typing-extensions==4.3.0 +Unidecode==1.3.4 +uritemplate==4.1.1 +urllib3==1.26.11 +Werkzeug==2.2.2 +zipp==3.8.1 diff --git a/demo/serverSIO.py b/demo/serverSIO.py new file mode 100755 index 00000000..f2d4769e --- /dev/null +++ b/demo/serverSIO.py @@ -0,0 +1,96 @@ +import eventlet +import socketio +import sys +from datetime import datetime +import struct + +import torch +import numpy as np +from scipy.io.wavfile import write + +sys.path.append("mod") +sys.path.append("mod/text") +import utils +from data_utils import TextAudioSpeakerLoader, TextAudioSpeakerCollate +from models import SynthesizerTrn +from text.symbols import symbols + + + +class MyCustomNamespace(socketio.Namespace): # 名前空間を設定するクラス + def __init__(self, namespace, config, model): + super().__init__(namespace) + self.hps =utils.get_hparams_from_file(config) + self.net_g = SynthesizerTrn( + len(symbols), + self.hps.data.filter_length // 2 + 1, + self.hps.train.segment_size // self.hps.data.hop_length, + n_speakers=self.hps.data.n_speakers, + **self.hps.model) + self.net_g.eval() + self.gpu_num = torch.cuda.device_count() + print("GPU_NUM:",self.gpu_num) + utils.load_checkpoint( model, self.net_g, None) + + def on_connect(self, sid, environ): + print('[{}] connet sid : {}'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S') , sid)) + # print('[{}] connet env : {}'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S') , environ)) + + def on_request_message(self, sid, msg): # 送信してきたクライアントだけにメッセージを送る関数 + # print("MESSGaa", msg) + gpu = int(msg[0]) + srcId = int(msg[1]) + dstId = int(msg[2]) + timestamp = int(msg[3]) + data = msg[4] + # print(srcId, dstId, timestamp) + unpackedData = np.array(struct.unpack('<%sh'%(len(data) // struct.calcsize('=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + } + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + } + } +} diff --git a/package.json b/package.json index bf3b6c2c..4cd2ac3d 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "scripts": { "build:docker": "date +%Y%m%d%H%M%S > trainer/dummy && DOCKER_BUILDKIT=1 docker build -f trainer/Dockerfile trainer/ -t voice-changer", "copy:frontend":"docker run -v `pwd`/docs:/docs --entrypoint /bin/bash -ti voice-changer -c \"cp -r /voice-changer-internal/frontend/dist/* /docs\"", + "copy:backend":"docker run -v `pwd`/demo:/demo --entrypoint /bin/bash -ti voice-changer -c \"cp -r /voice-changer-internal/voice-change-service/* /demo/\"", + "copy:requirements":"docker run -v `pwd`/demo:/demo --entrypoint /bin/bash -ti voice-changer -c \"pip3 freeze > /demo/requirements.txt\"", + "create:demo":"run-p copy:frontend copy:backend copy:requirements", "push:docker": "bash script/001_pushDocker.sh", "test": "echo \"Error: no test specified\" && exit 1" }, @@ -19,5 +22,8 @@ "bugs": { "url": "https://github.com/w-okada/voice-changer/issues" }, - "homepage": "https://github.com/w-okada/voice-changer#readme" + "homepage": "https://github.com/w-okada/voice-changer#readme", + "devDependencies": { + "npm-run-all": "^4.1.5" + } }