PicoAudio2 / utils /config.py
rookie9's picture
Upload 77 files
f582ec6 verified
raw
history blame
1.64 kB
from pathlib import Path
import sys
from typing import Union
import os
import hydra
import omegaconf
from omegaconf import OmegaConf
def multiply(*args):
result = 1
for arg in args:
result *= arg
return result
def get_pitch_downsample_ratio(
autoencoder_config: dict, pitch_frame_resolution: float
):
latent_frame_resolution = autoencoder_config[
"downsampling_ratio"] / autoencoder_config["sample_rate"]
return round(latent_frame_resolution / pitch_frame_resolution)
def register_omegaconf_resolvers() -> None:
"""
Register custom resolver for hydra configs, which can be used in YAML
files for dynamically setting values
"""
omegaconf.OmegaConf.clear_resolvers()
omegaconf.OmegaConf.register_new_resolver("len", len, replace=True)
omegaconf.OmegaConf.register_new_resolver(
"multiply", multiply, replace=True
)
omegaconf.OmegaConf.register_new_resolver(
"get_pitch_downsample_ratio", get_pitch_downsample_ratio, replace=True
)
def generate_config_from_command_line_overrides(
config_file: Union[str, Path]
) -> omegaconf.DictConfig:
register_omegaconf_resolvers()
config_file = Path(config_file).resolve()
config_name = config_file.name.__str__()
config_path = config_file.parent.__str__()
config_path = os.path.relpath(config_path, Path(__file__).resolve().parent)
overrides = sys.argv[1:]
with hydra.initialize(version_base=None, config_path=config_path):
config = hydra.compose(config_name=config_name, overrides=overrides)
omegaconf.OmegaConf.resolve(config)
return config