From 5479e9039df173e28d94793f43094aa9bb74d319 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:32:07 +0800 Subject: [PATCH] [pre-commit.ci] pre-commit autoupdate (#243) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.7 → v0.1.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.7...v0.1.8) - [github.com/psf/black: 23.11.0 → 23.12.0](https://github.com/psf/black/compare/23.11.0...23.12.0) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 +- onnx_infer.py | 4 +- onnx_modules/V220_OnnxInference/__init__.py | 97 +++++++++++++-------- onnx_modules/V220_novq_dev/models_onnx.py | 1 - 4 files changed, 67 insertions(+), 39 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b26b437..ac150ac 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,13 +7,13 @@ repos: - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.7 + rev: v0.1.8 hooks: - id: ruff args: [ --fix ] - repo: https://github.com/psf/black - rev: 23.11.0 + rev: 23.12.0 hooks: - id: black diff --git a/onnx_infer.py b/onnx_infer.py index 81df5bc..b58125d 100644 --- a/onnx_infer.py +++ b/onnx_infer.py @@ -2,7 +2,7 @@ from onnx_modules.V220_OnnxInference import OnnxInferenceSession import numpy as np Session = OnnxInferenceSession( { - "enc" : "onnx/BertVits2.2PT/BertVits2.2PT_enc_p.onnx", + "enc" : "onnx/BertVits2.2PT/BertVits2.2PT_enc_p.onnx", "emb_g" : "onnx/BertVits2.2PT/BertVits2.2PT_emb.onnx", "dp" : "onnx/BertVits2.2PT/BertVits2.2PT_dp.onnx", "sdp" : "onnx/BertVits2.2PT/BertVits2.2PT_sdp.onnx", @@ -68,4 +68,4 @@ audio = Session( sid ) -print(audio) \ No newline at end of file +print(audio) diff --git a/onnx_modules/V220_OnnxInference/__init__.py b/onnx_modules/V220_OnnxInference/__init__.py index 74256d2..1519e08 100644 --- a/onnx_modules/V220_OnnxInference/__init__.py +++ b/onnx_modules/V220_OnnxInference/__init__.py @@ -1,17 +1,20 @@ import numpy as np import onnxruntime as ort + def convert_pad_shape(pad_shape): layer = pad_shape[::-1] pad_shape = [item for sublist in layer for item in sublist] return pad_shape + def sequence_mask(length, max_length=None): if max_length is None: max_length = length.max() x = np.arange(max_length, dtype=length.dtype) return np.expand_dims(x, 0) < np.expand_dims(length, 1) + def generate_path(duration, mask): """ duration: [b, 1, t_x] @@ -28,8 +31,9 @@ def generate_path(duration, mask): path = np.expand_dims(path, 1).transpose(0, 1, 3, 2) return path -class OnnxInferenceSession(): - def __init__(self, path, Providers = ["CPUExecutionProvider"]): + +class OnnxInferenceSession: + def __init__(self, path, Providers=["CPUExecutionProvider"]): self.enc = ort.InferenceSession(path["enc"], providers=Providers) self.emb_g = ort.InferenceSession(path["emb_g"], providers=Providers) self.dp = ort.InferenceSession(path["dp"], providers=Providers) @@ -38,43 +42,56 @@ class OnnxInferenceSession(): self.dec = ort.InferenceSession(path["dec"], providers=Providers) def __call__( - self, - seq, - tone, - language, - bert_zh, - bert_jp, - bert_en, - emo, - sid, - seed = 114514, - seq_noise_scale = 0.8, - sdp_noise_scale = 0.6, - length_scale = 1., - sdp_ratio = 0. - ): - g = self.emb_g.run(None, {'sid': sid.astype(np.int64),})[0] + self, + seq, + tone, + language, + bert_zh, + bert_jp, + bert_en, + emo, + sid, + seed=114514, + seq_noise_scale=0.8, + sdp_noise_scale=0.6, + length_scale=1.0, + sdp_ratio=0.0, + ): + g = self.emb_g.run( + None, + { + "sid": sid.astype(np.int64), + }, + )[0] g = np.expand_dims(g, -1) enc_rtn = self.enc.run( None, { - "x" : seq.astype(np.int64), - "t" : tone.astype(np.int64), - "language" : language.astype(np.int64), - "bert_0" : bert_zh.astype(np.float32), - "bert_1" : bert_jp.astype(np.float32), - "bert_2" : bert_en.astype(np.float32), - "emo" : emo.astype(np.float32), - "g" : g.astype(np.float32) - }) + "x": seq.astype(np.int64), + "t": tone.astype(np.int64), + "language": language.astype(np.int64), + "bert_0": bert_zh.astype(np.float32), + "bert_1": bert_jp.astype(np.float32), + "bert_2": bert_en.astype(np.float32), + "emo": emo.astype(np.float32), + "g": g.astype(np.float32), + }, + ) x, m_p, logs_p, x_mask = enc_rtn[0], enc_rtn[1], enc_rtn[2], enc_rtn[3] np.random.seed(seed) zinput = np.random.randn(x.shape[0], 2, x.shape[2]) * sdp_noise_scale - logw = self.sdp.run(None, {"x" : x, "x_mask" : x_mask, "zin" : zinput.astype(np.float32), "g" : g})[0] * (sdp_ratio) + \ - self.dp.run(None, {"x" : x, "x_mask" : x_mask, "g" : g})[0] * (1 - sdp_ratio) + logw = self.sdp.run( + None, {"x": x, "x_mask": x_mask, "zin": zinput.astype(np.float32), "g": g} + )[0] * (sdp_ratio) + self.dp.run(None, {"x": x, "x_mask": x_mask, "g": g})[ + 0 + ] * ( + 1 - sdp_ratio + ) w = np.exp(logw) * x_mask * length_scale w_ceil = np.ceil(w) - y_lengths = np.clip(np.sum(w_ceil, (1, 2)), a_min=1., a_max=100000).astype(np.int64) + y_lengths = np.clip(np.sum(w_ceil, (1, 2)), a_min=1.0, a_max=100000).astype( + np.int64 + ) y_mask = np.expand_dims(sequence_mask(y_lengths, None), 1) attn_mask = np.expand_dims(x_mask, 2) * np.expand_dims(y_mask, -1) attn = generate_path(w_ceil, attn_mask) @@ -84,9 +101,21 @@ class OnnxInferenceSession(): logs_p = np.matmul(attn.squeeze(1), logs_p.transpose(0, 2, 1)).transpose( 0, 2, 1 ) # [b, t', t], [b, t, d] -> [b, d, t'] - - z_p = m_p + np.random.randn(m_p.shape[0], m_p.shape[1], m_p.shape[2]) * np.exp(logs_p) * seq_noise_scale - z = self.flow.run(None, {"z_p" : z_p.astype(np.float32), "y_mask" : y_mask.astype(np.float32), "g": g})[0] + z_p = ( + m_p + + np.random.randn(m_p.shape[0], m_p.shape[1], m_p.shape[2]) + * np.exp(logs_p) + * seq_noise_scale + ) - return self.dec.run(None, {"z_in" : z.astype(np.float32), "g": g})[0] \ No newline at end of file + z = self.flow.run( + None, + { + "z_p": z_p.astype(np.float32), + "y_mask": y_mask.astype(np.float32), + "g": g, + }, + )[0] + + return self.dec.run(None, {"z_in": z.astype(np.float32), "g": g})[0] diff --git a/onnx_modules/V220_novq_dev/models_onnx.py b/onnx_modules/V220_novq_dev/models_onnx.py index ee44181..0be6158 100644 --- a/onnx_modules/V220_novq_dev/models_onnx.py +++ b/onnx_modules/V220_novq_dev/models_onnx.py @@ -6,7 +6,6 @@ from torch.nn import functional as F import commons import modules from . import attentions_onnx -from vector_quantize_pytorch import VectorQuantize from torch.nn import Conv1d, ConvTranspose1d, Conv2d from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm