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