2022-12-03 16:54:06 +08:00
|
|
|
from models.synthesizer.synthesize import run_synthesis
|
|
|
|
from models.synthesizer.hparams import hparams
|
2021-08-07 11:56:00 +08:00
|
|
|
from utils.argutils import print_args
|
|
|
|
import argparse
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
class MyFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter):
|
|
|
|
pass
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
description="Creates ground-truth aligned (GTA) spectrograms from the vocoder.",
|
|
|
|
formatter_class=MyFormatter
|
|
|
|
)
|
|
|
|
parser.add_argument("datasets_root", type=str, help=\
|
|
|
|
"Path to the directory containing your SV2TTS directory. If you specify both --in_dir and "
|
|
|
|
"--out_dir, this argument won't be used.")
|
2021-09-24 09:47:51 +08:00
|
|
|
parser.add_argument("-m", "--model_dir", type=str,
|
|
|
|
default="synthesizer/saved_models/mandarin/", help=\
|
2021-08-07 11:56:00 +08:00
|
|
|
"Path to the pretrained model directory.")
|
|
|
|
parser.add_argument("-i", "--in_dir", type=str, default=argparse.SUPPRESS, help= \
|
|
|
|
"Path to the synthesizer directory that contains the mel spectrograms, the wavs and the "
|
|
|
|
"embeds. Defaults to <datasets_root>/SV2TTS/synthesizer/.")
|
|
|
|
parser.add_argument("-o", "--out_dir", type=str, default=argparse.SUPPRESS, help= \
|
|
|
|
"Path to the output vocoder directory that will contain the ground truth aligned mel "
|
|
|
|
"spectrograms. Defaults to <datasets_root>/SV2TTS/vocoder/.")
|
|
|
|
parser.add_argument("--hparams", default="",
|
|
|
|
help="Hyperparameter overrides as a comma-separated list of name=value "
|
|
|
|
"pairs")
|
|
|
|
parser.add_argument("--no_trim", action="store_true", help=\
|
|
|
|
"Preprocess audio without trimming silences (not recommended).")
|
|
|
|
parser.add_argument("--cpu", action="store_true", help=\
|
|
|
|
"If True, processing is done on CPU, even when a GPU is available.")
|
|
|
|
args = parser.parse_args()
|
|
|
|
print_args(args, parser)
|
|
|
|
modified_hp = hparams.parse(args.hparams)
|
|
|
|
|
|
|
|
if not hasattr(args, "in_dir"):
|
|
|
|
args.in_dir = os.path.join(args.datasets_root, "SV2TTS", "synthesizer")
|
|
|
|
if not hasattr(args, "out_dir"):
|
|
|
|
args.out_dir = os.path.join(args.datasets_root, "SV2TTS", "vocoder")
|
|
|
|
|
|
|
|
if args.cpu:
|
|
|
|
# Hide GPUs from Pytorch to force CPU processing
|
|
|
|
os.environ["CUDA_VISIBLE_DEVICES"] = ""
|
|
|
|
|
|
|
|
# Verify webrtcvad is available
|
|
|
|
if not args.no_trim:
|
|
|
|
try:
|
|
|
|
import webrtcvad
|
|
|
|
except:
|
|
|
|
raise ModuleNotFoundError("Package 'webrtcvad' not found. This package enables "
|
|
|
|
"noise removal and is recommended. Please install and try again. If installation fails, "
|
|
|
|
"use --no_trim to disable this error message.")
|
|
|
|
del args.no_trim
|
|
|
|
|
|
|
|
run_synthesis(args.in_dir, args.out_dir, args.model_dir, modified_hp)
|
|
|
|
|