|
import json |
|
import os |
|
import pathlib |
|
|
|
default_param = {} |
|
default_param["bins"] = 768 |
|
default_param["unstable_bins"] = 9 |
|
default_param["reduction_bins"] = 762 |
|
default_param["sr"] = 44100 |
|
default_param["pre_filter_start"] = 757 |
|
default_param["pre_filter_stop"] = 768 |
|
default_param["band"] = {} |
|
|
|
|
|
default_param["band"][1] = { |
|
"sr": 11025, |
|
"hl": 128, |
|
"n_fft": 960, |
|
"crop_start": 0, |
|
"crop_stop": 245, |
|
"lpf_start": 61, |
|
"res_type": "polyphase", |
|
} |
|
|
|
default_param["band"][2] = { |
|
"sr": 44100, |
|
"hl": 512, |
|
"n_fft": 1536, |
|
"crop_start": 24, |
|
"crop_stop": 547, |
|
"hpf_start": 81, |
|
"res_type": "sinc_best", |
|
} |
|
|
|
|
|
def int_keys(d): |
|
r = {} |
|
for k, v in d: |
|
if k.isdigit(): |
|
k = int(k) |
|
r[k] = v |
|
return r |
|
|
|
|
|
class ModelParameters(object): |
|
def __init__(self, config_path=""): |
|
if ".pth" == pathlib.Path(config_path).suffix: |
|
import zipfile |
|
|
|
with zipfile.ZipFile(config_path, "r") as zip: |
|
self.param = json.loads( |
|
zip.read("param.json"), object_pairs_hook=int_keys |
|
) |
|
elif ".json" == pathlib.Path(config_path).suffix: |
|
with open(config_path, "r") as f: |
|
self.param = json.loads(f.read(), object_pairs_hook=int_keys) |
|
else: |
|
self.param = default_param |
|
|
|
for k in [ |
|
"mid_side", |
|
"mid_side_b", |
|
"mid_side_b2", |
|
"stereo_w", |
|
"stereo_n", |
|
"reverse", |
|
]: |
|
if not k in self.param: |
|
self.param[k] = False |
|
|