Пример #1
0
    print('===' * 10, outdir)
    audio = Audio(config_loader.config)
    if args.checkpoint is not None:
        all_weights = [args.checkpoint]

    elif args.all_weights:
        all_weights = [(config_loader.weights_dir / x.stem).as_posix()
                       for x in config_loader.weights_dir.iterdir()
                       if x.suffix == '.index']
    else:
        all_weights = [None]  # default

    if args.verbose:
        print(f'\nWeights list: \n{all_weights}\n')
    for weights in all_weights:
        model = config_loader.load_model(weights)
        file_name = f'{fname}_ttsstep{model.step}'
        print(f'Output wav under {outdir}')
        wavs = []
        for i, text_line in enumerate(text):
            out = model.predict(text_line,
                                spk_emb=spk_emb,
                                encode=True,
                                phoneme_max_duration=None,
                                speed_regulator=0.8)
            mel = out['mel'].numpy().T
            wav = audio.reconstruct_waveform(mel)
            wavs.append(wav)
            if args.store_mel:
                np.save((outdir / (file_name + f'_{i}')).with_suffix('.mel'),
                        out['mel'].numpy())
Пример #2
0
fill_gaps = args.fill_mode_max or args.fill_mode_next
fix_jumps = args.fix_jumps
fill_mode = f"{f'max' * args.fill_mode_max}{f'next' * args.fill_mode_next}"
filling_tag = f"{f'(max)' * args.fill_mode_max}{f'(next)' * args.fill_mode_next}"
tag_description = ''.join([
    f'{"_weighted" * weighted}{"_best" * (not weighted)}',
    f'{"_binary" * binary}', f'{"_filled" * fill_gaps}{filling_tag}',
    f'{"_fix_jumps" * fix_jumps}', f'_layer{args.extract_layer}'
])
writer_tag = f'DurationExtraction{tag_description}'
print(writer_tag)
config_manager = Config(config_path=args.config, model_kind='autoregressive')
config = config_manager.config
config_manager.print_config()
if args.autoregressive_weights != '':
    model = config_manager.load_model(args.autoregressive_weights)
else:
    model = config_manager.load_model()
if model.r != 1:
    print(
        f"ERROR: model's reduction factor is greater than 1, check config. (r={model.r}"
    )

data_prep = AutoregressivePreprocessor.from_config(
    config=config_manager, tokenizer=model.text_pipeline.tokenizer)
data_handler = TextMelDataset.from_config(config_manager,
                                          preprocessor=data_prep,
                                          kind='phonemized')

target_dir = config_manager.data_dir / f'durations'
target_dir.mkdir(exist_ok=True)