70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
import json
|
|
import os
|
|
import pathlib
|
|
|
|
default_param = {}
|
|
default_param["bins"] = 768
|
|
default_param["unstable_bins"] = 9 # training only
|
|
default_param["reduction_bins"] = 762 # training only
|
|
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, # inference only
|
|
"res_type": "polyphase",
|
|
}
|
|
|
|
default_param["band"][2] = {
|
|
"sr": 44100,
|
|
"hl": 512,
|
|
"n_fft": 1536,
|
|
"crop_start": 24,
|
|
"crop_stop": 547,
|
|
"hpf_start": 81, # inference only
|
|
"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
|