示例#1
0
    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)
示例#2
0
文件: WAVE.py 项目: xmpx/ASRFrame
    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)
示例#3
0
文件: ABCDNN.py 项目: xmpx/ASRFrame
    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)
示例#4
0
文件: ABCDNN.py 项目: xmpx/ASRFrame
    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)
示例#5
0
    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)
示例#6
0
 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__)
示例#7
0
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)
示例#8
0
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*]未识别到语音")
示例#9
0
文件: DCHMM.py 项目: xmpx/ASRFrame
    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)
示例#10
0
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)}")
示例#11
0
    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("_", ""))
示例#12
0
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)
示例#13
0
        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*]未识别到语音")
示例#14
0
 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()
示例#15
0
 def __init__(self,path):
     self.path = path
     self.pymap = PinyinMapper(use_pinyin=True)
示例#16
0
文件: dataset.py 项目: xmpx/ASRFrame
 def _check(self):
     '''清洗完后,在根目录下生成一个文件,表示无需再清洗了'''
     symbol = os.path.join(self.path,"symbol")
     self.check = os.path.exists(symbol)
     self.pymap = PinyinMapper()
     self.chsmap = ChsMapper()