Beispiel #1
0
def main(speaker_name,ivpath):
    ivpath = "{0}{1}/".format(ivpath,speaker_name)
    
    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(speaker_name,test_anchor_num)
    
    ivmodule = iv_module(roop_num,iv_th,tyouhuku_th,anchor_th)
    
    filelist,num,filename = ivmodule.get_filelist(ivpath)#filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist,ori_num,_ = ivmodule.get_filelist(ivpath)     #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0
    
    print("filename:{}".format(filename))
    
    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(ivpath,filelist)#リストにある音声ファイルのcos類似度による重複回数のリストを返す
        
        maxfile = filelist[np.argmax(tyouhuku)]#重複回数が最大となる音声ファイルを探し、

        lis = ivmodule.get_thlist(ivpath,maxfile,filelist)#もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す
        aveiv = []
        for item in lis:
            addcos = 0
            for item2 in filelist:
                addcos =+ ivmodule.calc_cos(ivpath,item, item2)
            if(addcos/len(lis)>iv_th):
                aveiv.append(item2)
        lis = aveiv + lis
        
        if((ivmodule.cnt_filenum(lis)/ori_num) < anchor_th):
            if(anchor_num == 0):
                anchor_num = i
            break
            
        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist,item,ori_num)
            cluster[delnum] = i+1#クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)#クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)
     
    print("anchor_num is:{}\n".format(anchor_num))
    
    #ivmodule.all_clusnum_to_filename(cluster,ori_num,ori_filelist,anchor_num)#クラスタ分けの数字からファイル名をクラスタ毎に取り出す
    queslist = ivmodule.clusnum_to_filename(cluster,ori_num,ori_filelist,anchor_num,ques_anchor_cluster_num)#クラスタ分けの数字からファイル名をクラスタ毎に取り出す
    
    """時間的な分散の云々かんぬん
    print(queslist)
    variance = ivmodule.time_del_clus(ivpath,queslist,filename)
    print(variance)
    """
    
    acc,recall,precision,f_measure = ivmodule.test(ori_filelist,anslist,queslist)
    print("{},{},{},{}".format(acc,recall,precision,f_measure))
    print("acc:{0:.3f}\nrecall:{1:.3f}\nprecision:{2:.3f}\nf_measure:{3:.3f}".format(acc,recall,precision,f_measure))
Beispiel #2
0
def main(speaker_name, ivpath):
    ivpath = "{0}{1}/".format(ivpath, speaker_name)

    ivmodule = iv_module(roop_num, iv_th, tyouhuku_th, anchor_th)
    filename = speaker_name
    filelist, num, _ = ivmodule.get_filelist(
        ivpath)  #filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist, ori_num, _ = ivmodule.get_filelist(
        ivpath)  #ori_filelist:クラスタ分けする全ての音声ファイル
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0

    print("filename:{}".format(filename))

    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(
            ivpath, filelist)  #リストにある音声ファイルのcos類似度による重複回数のリストを返す

        maxfile = filelist[np.argmax(tyouhuku)]  #重複回数が最大となる音声ファイルを探し、

        th_list = ivmodule.get_thlist(
            ivpath, maxfile,
            filelist)  #もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す

        tyouhukulist = ivmodule.get_tyouhukulist(ivpath, filelist,
                                                 th_list)  #重重したwavファイルのリストを返す

        lis = np.array(ivmodule.make_tyouhukulist(
            filelist, tyouhukulist,
            num))  #重複回数が閾値以上のファイルのリストを返してnumpy.arrayに変換

        if ((ivmodule.cnt_filenum(lis) / ori_num) < anchor_th):
            if (anchor_num == 0):
                anchor_num = i
            break

        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist, item, ori_num)
            cluster[delnum] = i + 1  #クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)  #クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)

    cluster = ivmodule.speaker_0reset(cluster, ori_num, anchor_num)

    cluster, anchor_num = ivmodule.speaker_splice(cluster, ori_filelist,
                                                  ori_num, anchor_num)
    cluster = ivmodule.speaker_heikatuka(cluster, ori_filelist, ori_num,
                                         anchor_num)
    print("anchor_num is:{}\n".format(anchor_num))
    ivmodule.all_clusnum_to_filename(cluster, ori_num, ori_filelist,
                                     anchor_num)  #クラスタ分けの数字からファイル名をクラスタ毎に取り出す
Beispiel #3
0
def main(speaker_name, ivpath):
    ivpath = "{0}{1}/".format(ivpath, speaker_name)

    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(
        speaker_name, test_anchor_num)

    ivmodule = iv_module(roop_num, iv_th, tyouhuku_th, anchor_th)

    filelist, num, filename = ivmodule.get_filelist(
        ivpath)  #filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist, ori_num, _ = ivmodule.get_filelist(
        ivpath)  #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0

    print("filename:{}".format(filename))

    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(
            ivpath, filelist)  #リストにある音声ファイルのcos類似度による重複回数のリストを返す

        maxfile = filelist[np.argmax(tyouhuku)]  #重複回数が最大となる音声ファイルを探し、

        th_list = ivmodule.get_thlist(
            ivpath, maxfile,
            filelist)  #もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す

        tyouhukulist = ivmodule.get_tyouhukulist(ivpath, filelist,
                                                 th_list)  #重重したwavファイルのリストを返す

        lis = np.array(ivmodule.make_tyouhukulist(
            filelist, tyouhukulist,
            num))  #重複回数が閾値以上のファイルのリストを返してnumpy.arrayに変換

        if ((ivmodule.cnt_filenum(lis) / ori_num) < anchor_th):
            if (anchor_num == 0):
                anchor_num = i
            break

        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist, item, ori_num)
            cluster[delnum] = i + 1  #クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)  #クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)

    print("anchor_num is:{}\n".format(anchor_num))

    #ivmodule.all_clusnum_to_filename(cluster,ori_num,ori_filelist,anchor_num)#クラスタ分けの数字からファイル名をクラスタ毎に取り出す
    queslist = ivmodule.clusnum_to_filename(
        cluster, ori_num, ori_filelist, anchor_num,
        test_anchor_num)  #クラスタ分けの数字からファイル名をクラスタ毎に取り出す

    acc, recall, precision, f_measure = ivmodule.test(ori_filelist, anslist,
                                                      queslist)

    print("acc:{0:.3f}\nrecall:{1:.3f}\nprecision:{2:.3f}\nf_measure:{3:.3f}".
          format(acc, recall, precision, f_measure))

    #for plot program
    clus0or1 = []
    for item in ori_filelist:
        flag = 0
        for item2 in anslist:
            if (item == item2):
                clus0or1.append("1")
                flag = 1
                break
        if (flag == 0):
            clus0or1.append("0")
    clus0or1 = np.array(clus0or1)

    iv = []
    for item in ori_filelist:
        iv.append(ivmodule.get_ivdata(ivpath, item))

    chart1, chart2 = [], []
    for i, item in enumerate(ori_filelist):  #図の重ねがけで使う
        if (clus0or1[i] == "0"):
            chart1.append(i)
        else:
            chart2.append(i)

    df_wine_all = pd.DataFrame(iv)
    X = df_wine_all.iloc[0:].values

    # 3:データの整形-------------------------------------------------------
    sc = preprocessing.StandardScaler()
    sc.fit(X)
    X = sc.transform(X)

    # 解説4:主成分分析を実施-------------------------------
    pca = decomposition.PCA(n_components=2)

    X_transformed = pca.fit_transform(X)

    # 6: 結果をプロットする-----------------------------
    #matplotlib inline
    X = X_transformed[:, 0]
    Y = X_transformed[:, 1]

    X_1, X_2, Y_1, Y_2 = [], [], [], []

    for item in chart1:
        X_1.append(X[item])
        Y_1.append(Y[item])
    for item in chart2:
        X_2.append(X[item])
        Y_2.append(Y[item])

    plt.figure(figsize=(5, 5))
    plt.subplot(1, 1, 1)
    plt.scatter(X_1, Y_1, marker="o", c="black")
    plt.scatter(X_2, Y_2, marker="x", c="black")
    #plt.scatter(X,Y,c=clus0or1)
    plt.xlabel('PC1')
    plt.ylabel('PC2')
    plt.show
Beispiel #4
0
st = []
end = []

for line in strings:
    data = line.split(" ")

    st.append(round(float(data[2]), 2))  #発話区間の始まりの配列
    end.append(round(float(data[3]), 2))  #発話区間の終わりの配列

f.close

ivpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/iv/soturon_news_ivdata/"
ivpath = "{0}{1}/".format(ivpath, newsname)

ivmodule = iv_module(0, 0.8, 5, 0.05, ivpath, wavpath)

f = open(
    "/mnt/disk2/bati_dic/news/work2/noza/{0}/matoldresult_{0}_mar4w_02".format(
        newsname), "r")  #音源識別のテキスト(_02)
strings = f.readlines()
audio_d = []  #音源識別結果の配列
for item in strings:
    audio_d.append(int(item))

interval_list = []  #発話の間の種類の配列
interval_time = []  #発話の間の秒数の配列
sox_cnt = 0

for i, item1 in enumerate(st):
    cnt_speech_interval = 0
Beispiel #5
0
def main(speaker_name, ivpath):
    ivpath = "{0}{1}/".format(ivpath, speaker_name)

    test_anchor_num = 1  #評価したいアンカーのクラスタ番号の指定
    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(
        speaker_name, test_anchor_num)

    ivmodule = iv_module(roop_num, iv_th, tyouhuku_th, anchor_th)

    filelist, num, filename = ivmodule.get_filelist(
        ivpath)  #filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist, ori_num, _ = ivmodule.get_filelist(
        ivpath)  #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0

    print("filename:{}".format(filename))

    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(
            ivpath, filelist)  #リストにある音声ファイルのcos類似度による重複回数のリストを返す

        maxfile = filelist[np.argmax(tyouhuku)]  #重複回数が最大となる音声ファイルを探し、

        th_list = ivmodule.get_thlist(
            ivpath, maxfile,
            filelist)  #もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す

        tyouhukulist = ivmodule.get_tyouhukulist(ivpath, filelist,
                                                 th_list)  #重重したwavファイルのリストを返す

        lis = np.array(ivmodule.make_tyouhukulist(
            filelist, tyouhukulist,
            num))  #重複回数が閾値以上のファイルのリストを返してnumpy.arrayに変換

        if ((ivmodule.cnt_filenum(lis) / ori_num) < anchor_th):
            if (anchor_num == 0):
                anchor_num = i
            break

        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist, item, ori_num)
            cluster[delnum] = i + 1  #クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)  #クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)

    print("anchor_num is:{}\n".format(anchor_num))

    #ivmodule.all_clusnum_to_filename(cluster,ori_num,ori_filelist,anchor_num)#クラスタ分けの数字からファイル名をクラスタ毎に取り出す
    queslist = ivmodule.clusnum_to_filename(
        cluster, ori_num, ori_filelist, anchor_num,
        test_anchor_num)  #クラスタ分けの数字からファイル名をクラスタ毎に取り出す

    acc, recall, precision, f_measure = ivmodule.test(ori_filelist, anslist,
                                                      queslist)

    print("acc:{0:.3f}\nrecall:{1:.3f}\nprecision:{2:.3f}\nf_measure:{3:.3f}".
          format(acc, recall, precision, f_measure))
Beispiel #6
0
ivpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/iv/soturon_news_ivdata/"

newslist = ["NHK0826","NHK1112","NHK1113","NHK1114"]
calclist = []
f_measurelist = []
print(iv_th)
#def main(speaker_name,ivpath):
for speaker_name in newslist:
    ivpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/iv/soturon_news_ivdata/"
    ivpath = "{0}{1}/".format(ivpath,speaker_name)
    
    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(speaker_name,test_anchor_num)
    if(search_mode == "all_anchor"):
        anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/all_anchor.txt".format(speaker_name)#if all anchor search
    
    ivmodule = iv_module(roop_num,iv_th,tyouhuku_th,anchor_th,ivpath,wavpath)
    
    filelist,num,filename = ivmodule.get_filelist(ivpath)#filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist,ori_num,_ = ivmodule.get_filelist(ivpath)     #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0
    
    ori_filelist,ori_num = ivmodule.timecut(wavpath,ori_filelist,time_th)
    filelist,num = ivmodule.timecut(wavpath,ori_filelist,time_th)
    
    
    
    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
Beispiel #7
0
clusters = 5
import sys
print("clusnum,acc,recall,precision,f-measure")
if (anchor_num == 1):
    filename = ["NHK0826", "NHK1112", "NHK1113", "NHK1114"]
else:
    filename = ["NHK1112", "NHK1114"]
for roop, single_filename in enumerate(filename):
    print(single_filename)
    cluster1, cluster2, cluster3, cluster4, cluster5 = [], [], [], [], []
    sub_cluster1, sub_cluster2 = [], []
    wavpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/data/news/"
    ivpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/iv/soturon_news_ivdata/{0}/".format(
        single_filename)

    ivmodule = iv_module(100, 0.6, 10, 10, ivpath, wavpath)
    filelist, num, filename = get_filelist(ivpath)
    all_anchor = []
    ori_filelist, ori_num = ivmodule.timecut(wavpath, filelist, time_th)
    filelist, num = ivmodule.timecut(wavpath, filelist, time_th)

    from sklearn.cluster import KMeans
    ivlist = []
    for item in ori_filelist:
        ivlist.append(ivmodule.get_ivdata(ivpath, item))

    ivlist = np.array(ivlist)
    pred = KMeans(n_clusters=clusters).fit_predict(ivlist)
    cnt = [0] * clusters

    for i, item in enumerate(pred):
Beispiel #8
0
import os
from kenkyu_module import iv_module

#path = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/data/news/*.wav"
#path = "/home/nozaki/newsdata/cutwav/vdet_wav/*.wav"
#path = "./*.y"
path = "/home/nozaki/speaker_clustering/news_i-vector/iv/raw/*.y"
path_list = glob.glob(path)
path_list.sort()
#path_list1=["./JF012_0043.y"]
time_list = []
name = ""
list_same,list_other = [],[]
ivpath = ""
#ivpath = "/home/nozaki/speaker_clustering/news_i-vector/iv/raw"
ivmodule = iv_module(0,0.8,5,0.05,path,"")

for item in path_list:
    result1 = item.replace("./","")
    sp1 = re.sub("_[a-xA-Z0-9_]*.y","",result1)
    result1 = result1.replace(".y","")
    print("now:",result1)
    for item2 in path_list:
    	if(item != item2):
	    	result2 = item2.replace("./","")
	    	sp2 = re.sub("_[a-xA-Z0-9_]*.y","",result2)
	    	result2 = result2.replace(".y","")
	    	if(sp1 == sp2):
	    		list_same.append(ivmodule.calc_cos(ivpath,result1,result2))
	    	else:
	    		list_other.append(ivmodule.calc_cos(ivpath,result1,result2))
Beispiel #9
0
    recall = float(tp/(tp+fn))
        
    precision = float(tp/(tp+fp))
        
    if(recall + precision == 0):
        print("Error ansclusterとquesclusterのリストが完全不一致です。")
        return 0,0,0,0
    
    f_measure = float((2*recall*precision)/(recall + precision))
    
    return acc,recall,precision,f_measure

single_filename = "NHK1114"
print(single_filename)
print("2")
ivmodule = iv_module(100,0.6,10,10)

cluster1,cluster2,cluster3,cluster4,cluster5 = [],[],[],[],[]
sub_cluster1,sub_cluster2 = [],[]
wavpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/data/news/"
ivpath = "/home/nozaki/speaker_clustering/02_i-vector_system_with_ALIZE3.0/iv/soturon_news_ivdata/{0}/".format(single_filename)

filelist,num,filename = get_filelist(ivpath)

miniv,minitem1,minitem2 = k_medoidos(ivpath,filelist)
sub_cluster1,sub_cluster2 = mksubclus(ivpath,filelist,minitem1,minitem2)
cluster5,cluster4 = better_clus(sub_cluster1,sub_cluster2)

miniv,minitem1,minitem2 = k_medoidos(ivpath,cluster4)
sub_cluster1,sub_cluster2 = mksubclus(ivpath,cluster4,minitem1,minitem2)
cluster4,cluster3 = better_clus(sub_cluster1,sub_cluster2)
def main(speaker_name,ivpath):
    ivpath = "{0}{1}/".format(ivpath,speaker_name)
    
    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(speaker_name,test_anchor_num)
    
    ivmodule = iv_module(roop_num,iv_th,tyouhuku_th,anchor_th)
    
    filelist,num,filename = ivmodule.get_filelist(ivpath)#filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist,ori_num,_ = ivmodule.get_filelist(ivpath)     #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0
    
    print("filename:{}".format(filename))
    
    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(ivpath,filelist)#リストにある音声ファイルのcos類似度による重複回数のリストを返す
        
        maxfile = filelist[np.argmax(tyouhuku)]#重複回数が最大となる音声ファイルを探し、

        th_list = ivmodule.get_thlist(ivpath,maxfile,filelist)#もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す
        
        tyouhukulist = ivmodule.get_tyouhukulist(ivpath,filelist,th_list)#重重したwavファイルのリストを返す

        lis = np.array(ivmodule.make_tyouhukulist(filelist,tyouhukulist,num))#重複回数が閾値以上のファイルのリストを返してnumpy.arrayに変換
        
        if((ivmodule.cnt_filenum(lis)/ori_num) < anchor_th):
            if(anchor_num == 0):
                anchor_num = i
            break
            
        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist,item,ori_num)
            cluster[delnum] = i+1#クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)#クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)
    
    #for plot program
    clus0or1 = []
    for item in ori_filelist:
        flag = 0
        for item2 in anslist:
            if(item == item2):
                clus0or1.append("1")
                flag = 1
                break
        if(flag == 0):
            clus0or1.append("0")
    clus0or1 = np.array(clus0or1)
    
    iv = []
    for item in ori_filelist:
        iv.append(ivmodule.get_ivdata(ivpath,item))

    chart1,chart2 = [],[]
    for i,item in enumerate(ori_filelist):#図の重ねがけで使う
        if(clus0or1[i]=="0"):
            chart1.append(i)
        else:
            chart2.append(i)
        
    df_wine_all = pd.DataFrame(iv)
    X=df_wine_all.iloc[0:].values
    
    # 3:データの整形-------------------------------------------------------
    sc=preprocessing.StandardScaler()
    sc.fit(X)
    X=sc.transform(X)
    #print(X)
    
    labels,center = affinity_propagation(X)
    clusnum = max(labels)+1
    print("a number of cluster is {0}".format(clusnum))
    
    print("center iv is")
    
    num = []    
    for item in range(clusnum):
        sub = 0
        for item2 in labels:
            if(item == item2):
                sub += 1
        num.append(sub)
    
    cluslist = []
    for i,item in enumerate(center):
        cluslist.append(ori_filelist[item])
        print(ori_filelist[item],labels[item],num[i])
        
    """
Beispiel #11
0
def main(speaker_name, ivpath):
    ivpath = "{0}{1}/".format(ivpath, speaker_name)

    anstxtpath = "/home/nozaki/speaker_clustering/news_kotae/{0}/re_anchor{1}.txt".format(
        speaker_name, test_anchor_num)

    ivmodule = iv_module(roop_num, iv_th, tyouhuku_th, anchor_th, ivpath,
                         wavpath)

    filelist, num, filename = ivmodule.get_filelist(
        ivpath)  #filelist:ループされていく毎に減っていくwavデータのリスト
    ori_filelist, ori_num, _ = ivmodule.get_filelist(
        ivpath)  #ori_filelist:クラスタ分けする全ての音声ファイル
    anslist = ivmodule.read_ansfile(anstxtpath)
    cluster = np.zeros(ori_num)
    all_anchor = []
    anchor_num = 0

    print("filename:{}".format(filename))

    for i in range(roop_num):
        num = ivmodule.cnt_filenum(filelist)
        tyouhuku = ivmodule.cnt_tyouhuku_num(
            ivpath, filelist)  #リストにある音声ファイルのcos類似度による重複回数のリストを返す

        maxfile = filelist[np.argmax(tyouhuku)]  #重複回数が最大となる音声ファイルを探し、

        th_list = ivmodule.get_thlist(
            ivpath, maxfile,
            filelist)  #もっとも重複した音声ファイルが多い音声ファイルの重複したwavファイルのリストを返す

        tyouhukulist = ivmodule.get_tyouhukulist(ivpath, filelist,
                                                 th_list)  #重重したwavファイルのリストを返す

        lis = np.array(ivmodule.make_tyouhukulist(
            filelist, tyouhukulist,
            num))  #重複回数が閾値以上のファイルのリストを返してnumpy.arrayに変換

        if ((ivmodule.cnt_filenum(lis) / ori_num) < anchor_th):
            if (anchor_num == 0):
                anchor_num = i
            break

        for item in lis:
            delnum = ivmodule.search_filenum(ori_filelist, item, ori_num)
            cluster[delnum] = i + 1  #クラスタ分けされた音声ファイルにラベルを付ける
            filelist.remove(item)  #クラスタ分けされた音声ファイルをリストから削除する
            all_anchor.append(item)

    print("anchor_num is:{}\n".format(anchor_num))

    #ivmodule.all_clusnum_to_filename(cluster,ori_num,ori_filelist,anchor_num)#クラスタ分けの数字からファイル名をクラスタ毎に取り出す
    queslist = ivmodule.clusnum_to_filename(
        cluster, ori_num, ori_filelist, anchor_num,
        test_anchor_num)  #クラスタ分けの数字からファイル名をクラスタ毎に取り出す

    #acc,recall,precision,f_measure,tp,tn,fp,fn = ivmodule.test(ori_filelist,anslist,queslist)

    #print("acc:{0:.3f}\nrecall:{1:.3f}\nprecision:{2:.3f}\nf_measure:{3:.3f}".format(acc,recall,precision,f_measure))

    #for plot program
    clus0or1 = []
    for item in ori_filelist:
        flag = 0
        for item2 in anslist:
            if (item == item2):
                clus0or1.append("1")
                flag = 1
                break
        if (flag == 0):
            clus0or1.append("0")
    clus0or1 = np.array(clus0or1)

    iv = []
    for item in ori_filelist:
        iv.append(ivmodule.get_ivdata(ivpath, item))

    chart1, chart2 = [], []
    for i, item in enumerate(ori_filelist):  #図の重ねがけで使う
        if (clus0or1[i] == "0"):
            chart1.append(i)
        else:
            chart2.append(i)

    df_wine_all = pd.DataFrame(iv)
    X = df_wine_all.iloc[0:].values

    # 3:データの整形-------------------------------------------------------
    sc = preprocessing.StandardScaler()
    sc.fit(X)
    X = sc.transform(X)
    # 解説4:主成分分析を実施-------------------------------
    pca = decomposition.PCA(n_components=10)

    X_transformed = pca.fit_transform(X)
    #print(X_transformed)
    # 6: 結果をプロットする-----------------------------
    #matplotlib inline
    plt.figure(figsize=(5, 5))
    plt.subplot(1, 1, 1)
    X = X_transformed[:, 0]
    Y = X_transformed[:, 1]

    clusters = 6

    ivlist = np.array(X_transformed)
    pred = KMeans(n_clusters=clusters).fit_predict(ivlist)
    X_1, Y_1 = [], []

    cnt = [0] * clusters

    for i, item in enumerate(pred):
        cnt[item] += 1

    cnt = np.array(cnt)
    argcnt = cnt.argsort()[::-1]

    plt.title("scatter plot of 2-dimensional i-vector")
    colors = [
        "red", "green", "blue", "magenta", "orangered", "yellow", "cyan",
        "lime", "cornflowerblue", "black", "gray"
    ]
    chart1, chart2 = [], []
    for j in argcnt:
        chart1 = []
        X_1, Y_1 = [], []
        for i, item in enumerate(ori_filelist):  #図の重ねがけで使う
            if (pred[i] == j):
                chart1.append(i)
        for item in chart1:
            X_1.append(X[item])
            Y_1.append(Y[item])
        plt.scatter(X_1, Y_1, marker=".", c=colors[j])
    X_1, Y_1 = [], []

    #plt.scatter(X_1,Y_1,marker="o",c="red")
    #plt.scatter(X_2,Y_2,marker="x",c="black")
    #plt.title("scatter plot of 2-dimensional i-vector")

    plt.grid(which='major', color='black', linestyle=':')
    #plt.scatter(X,Y,c=clus0or1)
    plt.xlabel('iv1')
    plt.ylabel('iv2')
    plt.legend()