本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種基于隊(duì)列的聲紋數(shù)據(jù)處理方法、裝置及電子設(shè)備。
背景技術(shù):
1、聲紋識(shí)別技術(shù)是生物識(shí)別技術(shù)的一種,通過(guò)將聲音信號(hào)轉(zhuǎn)換為電信號(hào),利用計(jì)算機(jī)進(jìn)行識(shí)別。在進(jìn)行聲紋識(shí)別時(shí),一般是將從音頻文件中提取的聲紋數(shù)據(jù)與存儲(chǔ)的聲紋模型進(jìn)行比對(duì)認(rèn)證,從而達(dá)到聲紋識(shí)別的功能。
2、相關(guān)技術(shù)中,聲紋提取程序可以采用多個(gè)進(jìn)程提取聲紋數(shù)據(jù),聲紋提取進(jìn)程通常是python進(jìn)程,由于python線程不能充分利用計(jì)算資源,因此必須是多個(gè)進(jìn)程,每個(gè)進(jìn)程不斷處理聲紋提取請(qǐng)求,并把提取的結(jié)果保存到多個(gè)聲紋文件中的一個(gè)聲紋文件中。然而,多個(gè)進(jìn)程同時(shí)寫(xiě)入同一個(gè)聲紋文件容易導(dǎo)致數(shù)據(jù)沖突,且可能存在某些聲紋文件被頻繁寫(xiě)入,而其他聲紋文件長(zhǎng)時(shí)間未被寫(xiě)入,因此也難以保證聲紋文件寫(xiě)入的均衡性。
3、因此,如何避免多個(gè)線程同時(shí)寫(xiě)入同一個(gè)聲紋文件導(dǎo)致的寫(xiě)入沖突,同時(shí)保證聲紋文件寫(xiě)入的均衡性是亟需解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明實(shí)施例提供一種基于隊(duì)列的聲紋數(shù)據(jù)處理方法、裝置及電子設(shè)備,以避免多個(gè)線程同時(shí)寫(xiě)入同一個(gè)聲紋文件導(dǎo)致的寫(xiě)入沖突,同時(shí)保證聲紋文件寫(xiě)入的均衡性以及高效性。
2、本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
3、第一方面,提供了一種基于隊(duì)列的聲紋數(shù)據(jù)處理方法,所述方法包括:
4、創(chuàng)建并維護(hù)共享隊(duì)列,其中,所述共享隊(duì)列為先進(jìn)先出且具備阻塞功能隊(duì)列,用于存儲(chǔ)聲紋文件標(biāo)識(shí)隊(duì)列;
5、聲紋數(shù)據(jù)寫(xiě)入進(jìn)程在初始化階段以追加寫(xiě)入模式一次性打開(kāi)待寫(xiě)入聲紋數(shù)據(jù)的聲紋文件并緩存所述聲紋文件的句柄,且連接到所述共享隊(duì)列;
6、當(dāng)有寫(xiě)入需求時(shí),所述聲紋數(shù)據(jù)寫(xiě)入進(jìn)程從所述共享隊(duì)列中獲取第一文件標(biāo)識(shí),使用所述第一文件標(biāo)識(shí)代表的第一文件的句柄將寫(xiě)入需求對(duì)應(yīng)的第一聲紋數(shù)據(jù)寫(xiě)入所述第一文件;
7、完成第一聲紋數(shù)據(jù)寫(xiě)入后將所述第一文件標(biāo)識(shí)放回所述共享隊(duì)列。
8、第二方面,提供一種基于隊(duì)列的聲紋數(shù)據(jù)處理裝置,應(yīng)用于具備聲紋數(shù)據(jù)寫(xiě)入功能的系統(tǒng),包括:
9、隊(duì)列管理模塊,用于創(chuàng)建并維護(hù)共享隊(duì)列,其中,所述共享隊(duì)列為先進(jìn)先出且具備阻塞功能隊(duì)列,用于存儲(chǔ)聲紋文件標(biāo)識(shí)隊(duì)列;
10、進(jìn)程初始化模塊,用于聲紋數(shù)據(jù)寫(xiě)入進(jìn)程在初始化階段以追加寫(xiě)入模式一次性打開(kāi)待寫(xiě)入聲紋數(shù)據(jù)的聲紋文件并緩存所述聲紋文件的句柄,且連接到所述共享隊(duì)列;
11、第三方面,提供了一種電子設(shè)備,包括:處理器和存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有能夠被所述處理器執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,所述處理器執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令以實(shí)現(xiàn)上述任一實(shí)施例提供的基于隊(duì)列的聲紋數(shù)據(jù)處理方法。
12、本發(fā)明實(shí)施例提供的技術(shù)方案至少具有以下有益效果:
13、由于任意一個(gè)聲紋數(shù)據(jù)寫(xiě)入進(jìn)程在需要寫(xiě)入聲紋數(shù)據(jù)時(shí)是從共享隊(duì)列中按先進(jìn)先出的順序獲取第一文件標(biāo)識(shí)的,因此可以避免多個(gè)進(jìn)程同時(shí)寫(xiě)入同一個(gè)聲紋文件導(dǎo)致的寫(xiě)入沖突。
1.一種基于隊(duì)列的聲紋數(shù)據(jù)處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述創(chuàng)建并維護(hù)共享隊(duì)列,包括:
3.根據(jù)權(quán)利要求1或2所述的基于隊(duì)列的聲紋數(shù)據(jù)處理方法,其特征在于,還包括:為每個(gè)聲紋數(shù)據(jù)寫(xiě)入進(jìn)程設(shè)置數(shù)據(jù)緩存區(qū),所述數(shù)據(jù)緩存區(qū)用于暫存待寫(xiě)入的聲紋數(shù)據(jù);
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述數(shù)據(jù)緩存區(qū)包括第一緩存區(qū)和第二緩存區(qū);所述將所述第一聲紋數(shù)據(jù)寫(xiě)入所述數(shù)據(jù)緩存區(qū),包括:將第一聲紋數(shù)據(jù)寫(xiě)入所述第一緩存區(qū),當(dāng)數(shù)據(jù)緩存區(qū)的數(shù)據(jù)量達(dá)到設(shè)定閾值時(shí),將第一聲紋數(shù)據(jù)寫(xiě)入所述第二緩存區(qū);所述當(dāng)數(shù)據(jù)緩存區(qū)的數(shù)據(jù)量達(dá)到設(shè)定閾值時(shí),將所述第一聲紋數(shù)據(jù)批量寫(xiě)入第一文件,包括:當(dāng)所述第一緩存區(qū)的數(shù)據(jù)量達(dá)到預(yù)設(shè)閾值時(shí),將所述第一緩存區(qū)內(nèi)第一聲紋數(shù)據(jù)批量寫(xiě)入所述第一文件。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括:
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括:
9.一種基于隊(duì)列的聲紋數(shù)據(jù)處理裝置,其特征在于,應(yīng)用于具備聲紋數(shù)據(jù)寫(xiě)入功能的系統(tǒng),包括:
10.一種電子設(shè)備,其特征在于,包括:處理器和存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有能夠被所述處理器執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,所述處理器執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令以實(shí)現(xiàn)權(quán)利要求1至8任一項(xiàng)所述的基于隊(duì)列的聲紋數(shù)據(jù)處理方法。