def voiceContoursGetter(pitchContourJson, classificationResult):
    contours_bins, contours_contourSaliences, contours_start_times, duration = cr.contourReader(pitchContourJson)
    contours_bins, contours_contourSaliences, contours_start_times, toRmIndex_cal = cr.contourFilter(contours_bins, contours_contourSaliences, contours_start_times, framesize = 2048, hopsize = 128)

    toRmIndex_json, classification = classificationResultReader(classificationResult)
            
    if len(toRmIndex_cal) == len(toRmIndex_json):
        contours_bins_out = []
        contours_contourSaliences_out = []
        contours_start_times_out = []
    
        for ii in range(len(classification)):
            if classification[ii] == 0:
                contours_bins_out.append(contours_bins[ii])
                contours_contourSaliences_out.append(contours_contourSaliences[ii])
                contours_start_times_out.append(contours_start_times[ii])
        return contours_bins_out, contours_contourSaliences_out, contours_start_times_out, duration
    else:
        print 'problem with toRmIndex length, not equal.'
        return
def featureNormalization(featureList):
    '''
    the structure of normalized feature list is [(feature0, mean0, sd0), (feature1, mean1, sd1), ...]
    '''
    normalizedFeatureList = []
    for ii in range(len(featureList)-1):
        normalizedFeature, mean, sd = fc.scaleFeatures(featureList[ii])
        normalizedFeatureList.append((normalizedFeature, mean, sd))
    normalizedFeatureList.append(featureList[-1])
    return normalizedFeatureList

jj = 1
for filename in filenamesvoicePath:
    print jj, len(allfilenames)
    contours_bins, contours_contourSaliences, contours_start_times, duration = cr.contourReader(filename)
    contours_bins, contours_contourSaliences, contours_start_times, toRmIndexCF = cr.contourFilter(contours_bins, contours_contourSaliences, contours_start_times, framesize = 2048, hopsize = 128)
    #contours_bins, contours_contourSaliences, contours_start_times, toRmIndexRF = registerFilter(contours_bins, contours_contourSaliences, contours_start_times, tonicHz = 350.0) # need to give tonic firstly

    lengthContour, meanPitchContour, sdPitchContour, totalSalience, meanSalience, sdSalience, mfccs = fc.featureExtract(contours_bins, contours_contourSaliences)

    featureList = featureListCreate(featureList, lengthContour, meanPitchContour, sdPitchContour, totalSalience, meanSalience, sdSalience, mfccs, 0)
    jj += 1

for filename in filenamesnonvoicePath:
    print jj, len(allfilenames)
    contours_bins, contours_contourSaliences, contours_start_times, duration = cr.contourReader(filename)
    contours_bins, contours_contourSaliences, contours_start_times, toRmIndexCF = cr.contourFilter(contours_bins, contours_contourSaliences, contours_start_times, framesize = 2048, hopsize = 128)
    #contours_bins, contours_contourSaliences, contours_start_times, toRmIndexRF = registerFilter(contours_bins, contours_contourSaliences, contours_start_times, tonicHz = 350.0) # need to give tonic firstly

    lengthContour, meanPitchContour, sdPitchContour, totalSalience, meanSalience, sdSalience, mfccs = fc.featureExtract(contours_bins, contours_contourSaliences)