|
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 |