def train(datagene: TextDataGenerator, load_model=None): txtfs = datagene.load_from_path() max_label_len = 200 pinyin_map = PinyinMapper(sil_mode=0) chs_map = ChsMapper() tloader = TextLoader2( txtfs, padding_length=max_label_len, pinyin_map=pinyin_map, chs_map=chs_map, grain=TextLoader2.grain_alpha, cut_sub=175, ) model_helper = SOMMalpha() model_helper.compile(feature_shape=(max_label_len, ), ms_pinyin_size=pinyin_map.max_index, ms_output_size=chs_map.categores) if load_model is not None: model_helper.load(load_model) model_helper.fit(tloader, -1)
def train(datagenes: list, load_model=None): w, h = 1600, 200 max_label_len = 64 dataset = VoiceDatasetList() x_set, y_set = dataset.merge_load(datagenes) pymap = PinyinMapper(sil_mode=-1) vloader = VoiceLoader( x_set, y_set, batch_size=16, feature_pad_len=w, n_mels=h, max_label_len=max_label_len, pymap=pymap, melf=MelFeature5(), all_train=False, ) model_helper = WAVEM(pymap) model_helper.compile(feature_shape=(w, h), label_max_string_length=max_label_len, ms_output_size=pymap.max_index + 1) if load_model is not None: load_model = os.path.abspath(load_model) model_helper.load(load_model) model_helper.fit(vloader, epoch=-1, save_step=100, use_ctc=True)
def train(datagenes: list, load_model=None): w, h = 1600, 200 dataset = VoiceDatasetList() x_set, y_set = dataset.merge_load(datagenes) pymap = PinyinMapper(sil_mode=-1) vloader = VoiceLoader( x_set, y_set, batch_size=16, n_mels=h, feature_pad_len=w, feature_dim=3, pymap=pymap, melf=MelFeature5(), divide_feature_len=8, ) model_helper = DCNN2D(pymap) model_helper.compile(feature_shape=(w, h, 1), ms_output_size=pymap.max_index + 1) # ctcloss 计算要求: index < num_class-1 if load_model is not None: load_model = os.path.abspath(load_model) model_helper.load(load_model) model_helper.fit(vloader, epoch=-1, use_ctc=True)
def train(datagenes: list, load_model=None): w, h = 1600, 200 dataset = VoiceDatasetList() x_set, y_set = dataset.merge_load(datagenes) pymap = PinyinMapper(sil_mode=-1) vloader = VoiceLoader(x_set, y_set, batch_size=16, n_mels=h, feature_pad_len=w, feature_dim=3, cut_sub=32) model_helper = DCBNN2D(pymap) model_helper.compile(feature_shape=(w, h, 1), label_max_string_length=32, ms_output_size=1423) if load_model is not None: load_model = os.path.abspath(load_model) model_helper.load(load_model) model_helper.fit(vloader)
def train(datagenes: list, load_model=None,**kwargs): w, h = 1600, 200 max_label_len = 64 dataset = VoiceDatasetList() x_set, y_set = dataset.merge_load(datagenes) pymap = PinyinMapper(sil_mode=-1) vloader = VoiceLoader(x_set, y_set, batch_size=16, feature_pad_len=w, n_mels=h, max_label_len=max_label_len, pymap=pymap, melf=MelFeature4(), divide_feature_len=8, all_train=False, ) model_helper = DCBNN1D(pymap) model_helper.compile(feature_shape=(w, h), label_max_string_length=max_label_len, ms_output_size=pymap.max_index + 1) if load_model is not None: load_model = os.path.abspath(load_model) model_helper.load(load_model) epoch = kwargs.get("epoch",-1) save_step = kwargs.get("save_step",1000) model_helper.fit(vloader, epoch=epoch, save_step=save_step, use_ctc=True)
def summary(gene): x_set, y_set = gene.load_from_path() py_map = PinyinMapper(sil_mode=-1) vloader = VoiceLoader(x_set, y_set, pymap=py_map,vad_cut=False, check=False) print(f"start to summary the {gene.__class__.__name__} dataset") vloader.summery(audio=True, label=True, plot=True, dataset_name=gene.__class__.__name__)
def predict_dchmm(path="./model/DCBNN1D_cur_best.h5"): dcnn = DCHMM(acmodel_input_shape=(1600, 200), acmodel_output_shape=(200, ), lgmodel_input_shape=None, py_map=PinyinMapper(sil_mode=-1), chs_map=ChsMapper()) dcnn.compile(path) while True: pyline, chline, prob = dcnn.record_from_cmd(3) print(pyline, chline, prob)
def predict_dcsom(ac_path="./model/DCBNN1D_cur_best.h5", lg_path="./model/language/SOMMalpha_step_18000.h5"): dcs = DCSOM(acmodel_input_shape=(1600, 200), acmodel_output_shape=(200, ), lgmodel_input_shape=(200, ), py_map=PinyinMapper(sil_mode=-1), chs_map=ChsMapper(), divide_feature=8) dcs.compile(ac_path, lg_path) while True: try: print(dcs.record_from_cmd(5)) except: print("[info*]未识别到语音")
def real_predict(path="./model/DCBNN1D_cur_best.h5"): ''' :param path:DCBNN1D的预训练权重文件路径 :return: ''' dcnn = DCHMM( acmodel_input_shape=(1600, 200), acmodel_output_shape=(200,), lgmodel_input_shape=None, py_map=PinyinMapper(sil_mode=-1), chs_map=ChsMapper()) dcnn.compile(path) while True: pyline, chline, prob = dcnn.record_from_cmd(3) print(pyline, chline, prob)
def summary_dcbann1d(datagenes:list, load_model = None): w, h = 1600, 200 max_label_len = 64 dataset = VoiceDatasetList() x_set, y_set = dataset.merge_load(datagenes) pymap = PinyinMapper(sil_mode=-1) vloader = VoiceLoader(x_set, y_set, batch_size= 16, feature_pad_len = w, n_mels=h, max_label_len=max_label_len, pymap=pymap, melf=MelFeature5(), divide_feature_len=8, # cut_sub=64, ) model_helper = DCBNN1D(pymap) model_helper.compile(feature_shape=(w, h), label_max_string_length=max_label_len, ms_output_size=pymap.max_index+1) if load_model is not None: load_model = os.path.abspath(load_model) model_helper.load(load_model) viter = vloader.create_iter(one_batch=True) all_err_dict = {} with open("./error_dict.txt", "w", encoding="utf-8") as w: for batch in viter: test_res = model_helper.test(batch,use_ctc=True,return_result=True) err_dict = test_res["err_pylist"] for k,lst in err_dict.items(): errlist = all_err_dict.setdefault(k,[]) errlist.extend(lst) for k,v in err_dict.items(): v = set(v) w.write(f"{k},{' '.join(v)}") print(all_err_dict) with open("./error_dict.txt", "w", encoding="utf-8") as w: for k,v in all_err_dict.items(): v = set(v) w.write(f"{k},{' '.join(v)}")
def real_predict(path): max_label_len = 200 pinyin_map = PinyinMapper(sil_mode=0) chs_map = ChsMapper() model_helper = SOMMalpha() model_helper.compile(feature_shape=(max_label_len, ), ms_pinyin_size=pinyin_map.max_index, ms_output_size=chs_map.categores) model_helper.load(path) while True: string = input("请输入拼音:") xs = [pinyin_map.alist2vector(string)] print(xs) batch = pad_sequences(xs, maxlen=max_label_len, padding="post", truncating="post"), None result = model_helper.predict(batch)[0] print(result.replace("_", ""))
def train_dcnn1d(datagene: list, load_model=None): dataset = VoiceDatasetList() _, y_set = dataset.merge_load(datagene, choose_x=False, choose_y=True) max_label_len = 64 pinyin_map = PinyinMapper(sil_mode=0) chs_map = ChsMapper() tloader = TextLoader(y_set, padding_length=max_label_len, pinyin_map=pinyin_map, cut_sub=16, chs_map=chs_map) model_helper = DCNN1D() model_helper.compile(feature_shape=(max_label_len, tloader.max_py_size), ms_input_size=pinyin_map.max_index, ms_output_size=chs_map.categores) if load_model is not None: model_helper.load(load_model) model_helper.fit(tloader, -1)
alpha_batch = ["".join(sample) for sample in raw_pylist_batch] alpha_vector_batch = self.py_map.batch_alist2vector(alpha_batch) alpha_vector_batch = TextLoader2.corpus2feature(alpha_vector_batch,self.lgmodel_input_shape[0]) ch_list_batch,prob_batch = self.lg_model.predict([alpha_vector_batch,None],True) pyline = np.concatenate(pylist_batch).tolist() chline = ",".join(ch_list_batch).replace("_","") print(pyline,chline) return pyline,chline,[ctc_prob[0]] if __name__ == "__main__": dcs = DCSOM(acmodel_input_shape=(1600,200), acmodel_output_shape=(200,), lgmodel_input_shape=(200,), py_map=PinyinMapper(sil_mode=-1), chs_map=ChsMapper(), divide_feature=8) # dcs.compile("../model/DCBNN1D_step_326000.h5", # "../model/language/SOMMalpha_step_18000.h5") dcs.compile("../model/DCBNN1D_cur_best.h5", "../model/language/SOMMalpha_step_18000.h5") while True: try: print(dcs.record_from_cmd(5)) except: print("[info*]未识别到语音")
def __init__(self, path, strip_tone=False): assert os.path.exists(path), "path not exists!" self.path = path self.strip_tone = strip_tone self.pymap = PinyinMapper() self.chs_map = ChsMapper()
def __init__(self,path): self.path = path self.pymap = PinyinMapper(use_pinyin=True)
def _check(self): '''清洗完后,在根目录下生成一个文件,表示无需再清洗了''' symbol = os.path.join(self.path,"symbol") self.check = os.path.exists(symbol) self.pymap = PinyinMapper() self.chsmap = ChsMapper()