Beispiel #1
0
    def interpolate_f0(self, f0_file):

        io_funcs = BinaryIOCollection()
        data = io_funcs.load_float_file(f0_file)
        ip_data = data

        frame_number = len(data)
        last_value = 0.0
        for i in xrange(frame_number):
            if data[i] <= 0.0:
                j = i + 1
                for j in range(i + 1, frame_number):
                    if data[j] > 0.0:
                        break
                if j < frame_number - 1:
                    if last_value > 0.0:
                        step = (data[j] - data[i - 1]) / float(j - i)
                        for k in range(i, j):
                            ip_data[k] = data[i - 1] + step * (k - i + 1)
                    else:
                        for k in range(i, j):
                            ip_data[k] = data[j]
                else:
                    for k in range(i, frame_number):
                        ip_data[k] = last_value
            else:
                ip_data[i] = data[i]
                last_value = data[i]

        return ip_data
Beispiel #2
0
        os.makedirs(out_f0_dir)

    ### Single file processing ###
    SFP = False
    if SFP:
        # filename = 'TheHareandtheTortoise_097_24-23-1-2-1-0'
        filename = 'GoldilocksandtheThreeBears_000_24-0-24-3-0-2'

        print 'processing...' + filename

        f0_file = os.path.join(f0_dir, filename + '.f0')
        lab_file = os.path.join(lab_dir, filename + '.lab')
        out_file = os.path.join(out_dir, filename + '.cmp')

        ### processing f0 file ###
        ori_f0_data = io_funcs.load_float_file(
            f0_file)  # # to process float f0 file
        # ori_lf0_data, frame_number = io_funcs.load_binary_file_frame(lf0_file, 1)
        # ori_lf0_data = np.exp(ori_f0_data)
        # interp_f0_arr = f0_processing.process(ori_f0_data)
        interp_f0_arr = prosody_funcs.interpolate_f0(f0_file)

        ### read label file ###
        [phone, ph_arr,
         mean_f0_arr] = prosody_funcs.read_state_align_label_file(lab_file)

        ### decomposition of f0 file ###
        [dct_features, stat_features
         ] = prosody_funcs.DCT_decomposition(phone, ph_arr, mean_f0_arr,
                                             interp_f0_arr, decomposition_unit,
                                             coef_size)
        prosody_feats = np.concatenate((dct_features, stat_features), axis=0)
Beispiel #3
0
                        org_dur_features.append(st_arr[j][k] /
                                                (np.power(10, 4) * 5))

                org_dur_features = np.array(org_dur_features).reshape(
                    num_of_phones, 5)
                org_dur_all_files = np.concatenate(
                    (org_dur_all_files,
                     np.sum(np.array(org_dur_features), axis=1)),
                    axis=0)

                #print np.sum(np.array(org_dur_features), axis=1)

                ### load generated output ###
                # gen_data = io_funcs.load_binary_file(gen_file, 1)
                gen_file = os.path.join(gen_dir, filename + '.cmp')
                gen_data = io_funcs.load_float_file(gen_file)

                ##### denormalization of data #####
                print 'denormalizing the data....'
                if (normalization == "MVN"):
                    denorm_data = data_normalization.MVN_denormalize(
                        gen_data, out_dim, stats_file)
                    #gen_data = io_funcs.load_float_file(gen_file)
                    #bkp_denorm_data = data_normalization.MVN_denormalize(gen_data, out_dim, stats_file)
                else:
                    denorm_data = gen_data

                denorm_data = np.array(denorm_data)
                #bkp_denorm_data = np.array(bkp_denorm_data)

                ### post-processing of state-duration modification ###
     
     ph_all_files.append(phone[j])
     for k in range(5):
         org_dur_features.append(st_arr[j][k]/(np.power(10,4)*5))
 
 org_dur_features = np.array(org_dur_features).reshape(num_of_phones, 5)
 org_dur_all_files = np.concatenate((org_dur_all_files, 
                                     np.sum(np.array(org_dur_features), axis=1)), axis=0) 
 
 
 #print np.sum(np.array(org_dur_features), axis=1)
  
 ### load generated output ###
 # gen_data = io_funcs.load_binary_file(gen_file, 1)
 gen_file = os.path.join(gen_dir, filename + '.cmp')
 gen_data = io_funcs.load_float_file(gen_file)
                 
 ##### denormalization of data #####
 print 'denormalizing the data....'
 if(normalization == "MVN"):
     denorm_data = data_normalization.MVN_denormalize(gen_data, out_dim, stats_file)
     #gen_data = io_funcs.load_float_file(gen_file)
     #bkp_denorm_data = data_normalization.MVN_denormalize(gen_data, out_dim, stats_file)
 else:
     denorm_data = gen_data
 
 denorm_data = np.array(denorm_data)
 #bkp_denorm_data = np.array(bkp_denorm_data)
 
 ### post-processing of state-duration modification ###
 if out_dim==8:
     os.makedirs(out_f0_dir)
 
 ### Single file processing ###
 SFP = False;
 if SFP:
     # filename = 'TheHareandtheTortoise_097_24-23-1-2-1-0'
     filename = 'GoldilocksandtheThreeBears_000_24-0-24-3-0-2'
     
     print 'processing...'+filename 
      
     f0_file = os.path.join(f0_dir, filename + '.f0')
     lab_file = os.path.join(lab_dir, filename + '.lab') 
     out_file = os.path.join(out_dir, filename + '.cmp')
     
     ### processing f0 file ###
     ori_f0_data = io_funcs.load_float_file(f0_file)  # # to process float f0 file
     # ori_lf0_data, frame_number = io_funcs.load_binary_file_frame(lf0_file, 1)
     # ori_lf0_data = np.exp(ori_f0_data)
     # interp_f0_arr = f0_processing.process(ori_f0_data)
     interp_f0_arr = prosody_funcs.interpolate_f0(f0_file)
     
     ### read label file ###
     [phone, ph_arr, mean_f0_arr] = prosody_funcs.read_state_align_label_file(lab_file)
     
     ### decomposition of f0 file ###
     [dct_features, stat_features] = prosody_funcs.DCT_decomposition(phone, ph_arr, mean_f0_arr, interp_f0_arr, decomposition_unit, coef_size)
     prosody_feats = np.concatenate((dct_features, stat_features), axis=0)
     # io_funcs.array_to_binary_file(dct_features, out_file)
     
     nrows = len(dct_features)/coef_size
     X1 = np.array(dct_features).reshape(nrows, coef_size)
Beispiel #6
0
        feat_dir_path + '/')
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    ### Single file processing ###
    SFP = 1
    if SFP:
        # filename = 'TheHareandtheTortoise_097_24-23-1-2-1-0'
        filename = 'GoldilocksandtheThreeBears_000_24-0-24-3-0-2'

        f0_file = os.path.join(f0_dir, filename + '.f0')
        lab_file = os.path.join(lab_dir, filename + '.lab')
        out_file = os.path.join(out_dir, filename + '.cmp')

        ### processing f0 file ###
        ori_f0_data = io_funcs.load_float_file(
            f0_file)  # # to process float f0 file
        # ori_lf0_data, frame_number = io_funcs.load_binary_file_frame(lf0_file, 1)
        # ori_lf0_data = np.exp(ori_f0_data)
        # interp_f0_arr = f0_processing.process(ori_f0_data)
        interp_f0_arr = prosody_funcs.interpolate_f0(f0_file)

        ### read label file ###
        [phone, ph_arr,
         mean_f0_arr] = prosody_funcs.read_state_align_label_file(lab_file)

        ### decomposition of f0 file ###
        [dct_features, stat_features
         ] = prosody_funcs.DCT_decomposition(phone, ph_arr, mean_f0_arr,
                                             interp_f0_arr, decomposition_unit,
                                             coef_size)
        prosody_feats = np.concatenate((dct_features, stat_features), axis=0)