本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種歌曲音頻拼接方法及設(shè)備。
背景技術(shù):
隨著計算機技術(shù)不斷的開發(fā)和完善,手機和平板電腦等終端已經(jīng)成為了人們生活中不可或缺的一個部分,通過在終端中安裝的各種應(yīng)用功能,可以實現(xiàn)用戶的不同需求,例如:通信、游戲、聽音樂等
現(xiàn)有的音樂應(yīng)用除了可以對所需的音樂文件進(jìn)行下載以及播放外,還可以實現(xiàn)歌曲演唱的功能,用戶可以通過這類音樂應(yīng)用演唱各類歌曲。但是在用戶演唱時,由于個人的音域、音色匹配程度及發(fā)揮狀態(tài),可能在演繹一首歌曲的時候有的句子唱的好,有的句子唱的差,用戶有時就會因為幾句演唱發(fā)揮的不好而不上傳或者刪除演唱的清唱音頻數(shù)據(jù)。導(dǎo)致用戶的清唱音頻數(shù)據(jù)得不到合理的利用,用戶的演唱積極性也不高。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種歌曲音頻拼接方法及設(shè)備,可以從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
本發(fā)明第一方面提供一種歌曲音頻拼接方法,包括:
獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù);
分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列;
計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和;
根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù);
根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
本發(fā)明第二方面提供一種歌曲音頻拼接設(shè)備,包括:
數(shù)據(jù)獲取單元,用于獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù);
第一音符值轉(zhuǎn)換單元,用于分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列;
第一計算單元,用于計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和;
第一分句數(shù)據(jù)選擇單元,用于根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù);
數(shù)據(jù)生成單元,用于根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
本發(fā)明實施例中,通過獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列,以計算每個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù),實現(xiàn)了從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的一種歌曲音頻拼接方法的流程示意圖;
圖2是本發(fā)明實施例提供的另一種歌曲音頻拼接方法的流程示意圖;
圖3是本發(fā)明實施例提供的一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例提供的第一音符值轉(zhuǎn)換單元的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例提供的第一分句數(shù)據(jù)選擇單元的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的另一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖;
圖7是本發(fā)明實施例提供的另一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
圖1是本發(fā)明實施例提供的一種歌曲音頻拼接方法的流程示意圖,本方法流程可以由歌曲音頻拼接設(shè)備實施,所述歌曲音頻拼接設(shè)備可以為音樂應(yīng)用的后臺服務(wù)設(shè)備,所述音樂應(yīng)用可以為音樂播放應(yīng)用、K歌應(yīng)用等。本發(fā)明實施例適用于任何可以被用戶演繹的歌曲,以下僅以一首歌曲,即目標(biāo)歌曲作為參考進(jìn)行詳細(xì)說明。如圖所示,所述方法至少包括:
步驟S101,獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
具體的,在本發(fā)明實施例中,演繹音頻數(shù)據(jù)可以是用戶演唱目標(biāo)歌曲時通過具有錄音功能的終端設(shè)備錄制的音頻數(shù)據(jù),該演繹音頻數(shù)據(jù)可以是只有用戶演唱的清唱音頻數(shù)據(jù),也可以是包括用戶演唱的清唱音頻數(shù)據(jù)以及目標(biāo)歌曲的伴奏混音等背景音樂的音頻數(shù)據(jù),這里不作具體限定。其中,目標(biāo)歌曲中包括多個分句,對于分句的劃分可以通過目標(biāo)歌曲的歌詞信息來進(jìn)行劃分,例如目標(biāo)歌曲為《新年好》,則“新年好啊,新年好啊,祝福大家新年好”就可以被定義為三個分句。用戶在對目標(biāo)歌曲演唱完成后,可以將其演唱的演繹音頻數(shù)據(jù)上傳或者保存在歌曲音頻拼接設(shè)備中,歌曲音頻拼接設(shè)備就可以獲取到多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),從而可以獲取到多個用戶針對目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
步驟S102,分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,歌曲音頻拼接設(shè)備可以提取各用戶演繹的各個分句的目標(biāo)清唱音頻數(shù)據(jù)的基頻信息,并且根據(jù)各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息獲取對應(yīng)的音符值序列。可以理解的是,基頻信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
具體實施中,歌曲音頻拼接設(shè)備可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,歌曲音頻拼接設(shè)備可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的每個分句的清唱音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的每個分句都對應(yīng)存在至少一個基頻點。歌曲音頻拼接設(shè)備對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的每個分句對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而歌曲音頻拼接設(shè)備就獲取到了各個分句的不用用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
在一種可能的實施場景中,歌曲音頻拼接設(shè)備可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
需要說明的是,歌曲音頻拼接設(shè)備對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
可選的,在提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息之前,歌曲音頻拼接設(shè)備可以先對每個清唱音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k 16bit的PCM格式。
步驟S103,計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。
具體的,歌曲音頻拼接設(shè)備可以分別計算多個用戶中的某一目標(biāo)用戶演繹的某一目標(biāo)分句的音符值序列與其他用戶演繹該對應(yīng)分句的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y2,C演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y3,D演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y4,則歌曲音頻拼接設(shè)備可以分別計算Y1與Y2之間的基頻距離,Y1與Y3之間的基頻距離,Y1與Y4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲的第k分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第k分句的音符值序列包括p個音符值,則通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
或
其中,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,yitk為第i個用戶的第k分句的音符值序列的第t幀的音符值,yjtk為第j個用戶的第k分句的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,第一個基頻距離公式中的12代表一個八度,也就是說,第一個基頻距離公式中認(rèn)為第i個用戶和第j個用戶對第k分句的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式的其中一個,可以依次計算出目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲的第k分句為目標(biāo)分句為例,基頻距離和的公式可以為:
其中,Sik為第i個用戶演繹第k分句的清唱音頻數(shù)據(jù)的基頻距離和,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
步驟S104,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
具體的,目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)可以指在多個用戶演繹的目標(biāo)分句的清唱音頻數(shù)據(jù)中選擇出的一個用于拼接的清唱音頻數(shù)據(jù)。該目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)的確定可以依據(jù)之前計算得到的各個用戶演繹的目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,再結(jié)合不同的預(yù)設(shè)算法進(jìn)行選取。
在第一種可能的實施場景中,歌曲音頻拼接設(shè)備可以獲取各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和中最小的基頻距離和,確定該最小的基頻距離和所對應(yīng)的目標(biāo)清唱音頻數(shù)據(jù),將該目標(biāo)清唱音頻數(shù)據(jù)作為目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)即可。
在第二種可能的實施場景中,歌曲音頻拼接設(shè)備可以按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序,從而獲取排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù),從備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。具體的,在備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù)時,歌曲音頻拼接設(shè)備可以根據(jù)預(yù)先設(shè)定的規(guī)則進(jìn)行依次迭代,從而選擇出各個分句之間匹配度最合適的多個分句清唱音頻數(shù)據(jù);歌曲音頻拼接設(shè)備也可以隨機的從備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),在本實施例中不作具體限定。
需要說明的是,在第二種實施場景中的一種情況下,N可以是歌曲音頻拼接設(shè)備中預(yù)先設(shè)定的,例如,歌曲音頻拼接設(shè)備可以預(yù)先設(shè)定取排序中用戶數(shù)量的一半的清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù),則若有10個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),將這10個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,取前5個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)即可。
在第二種實施場景中的另一種情況下,N可以是根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度來確定的。具體來說,歌曲音頻拼接設(shè)備可以根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。這里,N可以由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。例如,若有5個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),歌曲音頻拼接設(shè)備將這5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,分別計算得到5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,設(shè)排名前三位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度均大于預(yù)設(shè)置信度閾值,而排名第四位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度小于預(yù)設(shè)置信度閾值,則這里N即為3,也即將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前3個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
進(jìn)一步的,在計算置信度時,歌曲音頻拼接設(shè)備可以先在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度。具體來說,在一種情況下,歌曲音頻拼接設(shè)備可以分別計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的比值,若計算得到的比值均大于預(yù)設(shè)的第一置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。在另一種情況下,歌曲音頻拼接設(shè)備可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果的比值,M可以是歌曲音頻拼接設(shè)備預(yù)設(shè)的,若計算得到的比值大于預(yù)設(shè)的第二置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度時,置信度公式可以表示為:
其中,f為第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,為第k分句對應(yīng)的排名前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果。
在確定排序第1個清唱音頻數(shù)據(jù)的置信度達(dá)到預(yù)設(shè)置信度閾值后,歌曲音頻拼接設(shè)備可以進(jìn)一步確定其他各個清唱音頻數(shù)據(jù)的置信度。具體實施中,歌曲音頻拼接設(shè)備可以根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。若某一清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)的第三置信度閾值,那么則可以認(rèn)為該清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即該清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。按照該方法,歌曲音頻拼接設(shè)備可以確定獲取置信度大于預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中其他各個清唱音頻數(shù)據(jù)的置信度時,可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比值,即置信度公式可以表示為:
其中,vj為第k分句的清唱音頻數(shù)據(jù)中除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,Skj為第k分句對應(yīng)的除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的基頻距離和。
步驟S105,根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
具體的,在步驟S104根據(jù)上述其中一種方法確定出目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)后,歌曲音頻拼接設(shè)備可以將被選出的各個分句清唱音頻數(shù)據(jù)按照各個分句對應(yīng)在目標(biāo)歌曲中的位置和順序拼接起來。其中,各個分句之間可以根據(jù)目標(biāo)歌曲中各個分句之間的空隙時間補充一定時長的靜音,最后再與目標(biāo)歌曲的伴奏進(jìn)行混音,從而生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),該拼接音頻數(shù)據(jù)包括多個用戶對每個分句演繹的分句清唱音頻數(shù)據(jù)。例如,目標(biāo)歌曲有4個分句G1、G2、G3和G4,設(shè)總共有3個用戶演唱了該目標(biāo)歌曲,用戶A對4個分句演繹的清唱音頻數(shù)據(jù)分別為a1、a2、a3、a4,用戶B對4個分句演繹的清唱音頻數(shù)據(jù)分別為b1、b2、b3、b4,用戶C對4個分句演繹的清唱音頻數(shù)據(jù)分別為c1、c2、c3、c4,其中,歌曲音頻拼接設(shè)備根據(jù)上述算法最終確定:G1分句對應(yīng)的分句清唱音頻數(shù)據(jù)為b1,G2分句對應(yīng)的分句清唱音頻數(shù)據(jù)為c2,G3分句對應(yīng)的分句清唱音頻數(shù)據(jù)為b3,G4分句對應(yīng)的分句清唱音頻數(shù)據(jù)為a4,那么歌曲音頻拼接設(shè)備就可以將b1、c2、b3以及a4這四個清唱音頻數(shù)據(jù)進(jìn)行拼接,最終生成目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
本發(fā)明實施例中,通過獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列,以計算每個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù),實現(xiàn)了從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
圖2是本發(fā)明實施例提供的另一種歌曲音頻拼接方法的流程示意圖,在本發(fā)明實施例中,在聚類得到排名的時對高低八度進(jìn)行了兼容,因而在拼接的時候前后兩句的基調(diào)(如差了一個八度)不一樣的話,效果就會比較難聽,本實施例使用迭代的方法對挑選出的各個分句對應(yīng)的清唱音頻數(shù)據(jù)進(jìn)行匹配,以保證拼接后生成的拼接音頻數(shù)據(jù)的前后句子的基調(diào)一致。如圖所示,該方法包括:
步驟S201,獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
具體的,演繹音頻數(shù)據(jù)可以是用戶演唱目標(biāo)歌曲時通過具有錄音功能的終端設(shè)備錄制的音頻數(shù)據(jù),該演繹音頻數(shù)據(jù)可以是只有用戶演唱的清唱音頻數(shù)據(jù)。其中,目標(biāo)歌曲中包括多個分句,對于分句的劃分可以通過目標(biāo)歌曲的歌詞信息來進(jìn)行劃分,例如目標(biāo)歌曲為《新年好》,則“新年好啊,新年好啊,祝福大家新年好”就可以被定義為三個分句。用戶在對目標(biāo)歌曲演唱完成后,可以將其演唱的演繹音頻數(shù)據(jù)上傳或者保存在歌曲音頻拼接設(shè)備中,歌曲音頻拼接設(shè)備就可以獲取到多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),從而可以獲取到多個用戶針對目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
步驟S202,分別提取各用戶演繹的目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻信息,獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,在本發(fā)明實施中,演繹音頻數(shù)據(jù)可以是用戶演唱目標(biāo)歌曲時通過具有錄音功能的終端設(shè)備錄制的音頻數(shù)據(jù),該演繹音頻數(shù)據(jù)只有用戶演唱的清唱音頻數(shù)據(jù)。用戶在對目標(biāo)歌曲演唱完成后,可以將其演唱的演繹音頻數(shù)據(jù)上傳或者保存在歌曲音頻拼接設(shè)備中,歌曲音頻拼接設(shè)備就可以獲取到多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)。
進(jìn)一步的,歌曲音頻拼接設(shè)備可以分別提取各用戶演繹的目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻信息,并獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。也就是說,這里歌曲音頻拼接設(shè)備獲取的是不同用戶針對目標(biāo)歌曲演繹的完整的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列??梢岳斫獾氖牵l信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
具體實施中,歌曲音頻拼接設(shè)備可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的演繹音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的目標(biāo)歌曲對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,歌曲音頻拼接設(shè)備可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的演繹音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的演繹音頻數(shù)據(jù)都對應(yīng)存在至少一個基頻點。歌曲音頻拼接設(shè)備對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的演繹音頻數(shù)據(jù)對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而歌曲音頻拼接設(shè)備就獲取到了不用用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
在一種可能的實施場景中,歌曲音頻拼接設(shè)備可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
需要說明的是,歌曲音頻拼接設(shè)備對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
可選的,在提取各用戶的演繹音頻數(shù)據(jù)的基頻信息之前,歌曲音頻拼接設(shè)備可以先對每個演繹音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k16bit的PCM格式。
步驟S203,計算所述多個用戶中的目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列分別與所述多個用戶中其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。
具體的,歌曲音頻拼接設(shè)備可以分別計算多個用戶中的某一目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列與其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W2,C演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W3,D演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W4,則歌曲音頻拼接設(shè)備可以分別計算W1與W2之間的基頻距離,W1與W3之間的基頻距離,W1與W4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲為例,由于大家演唱的是同一首歌,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為q,意味著目標(biāo)歌曲有q幀,演繹音頻數(shù)據(jù)的音符值序列包括q個音符值,則通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
其中,Lij為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,yit為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列的第t幀的音符值,yjt為第j個用戶的演繹音頻數(shù)據(jù)的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,基頻距離公式中的12代表一個八度,也就是說,基頻距離公式中認(rèn)為第i個用戶和第j個用戶對目標(biāo)歌曲的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式,可以依次計算出目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列分別與多個用戶中其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲為例,基頻距離和的公式可以為:
其中,Si為第i個用戶的演繹音頻數(shù)據(jù)的基頻距離和,Lij為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
步驟S204,根據(jù)各個用戶的演繹音頻數(shù)據(jù)的基頻距離和,將基頻距離和最小的演繹音頻數(shù)據(jù)作為參考清唱音頻數(shù)據(jù)。
具體的,根據(jù)計算出的各個用戶的演繹音頻數(shù)據(jù)的基頻距離和,可以確定出其中基頻距離和最小的一個用戶的演繹音頻數(shù)據(jù),則將該用戶的演繹音頻數(shù)據(jù)作為目標(biāo)歌曲的參考清唱音頻數(shù)據(jù)。
步驟S205,分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,歌曲音頻拼接設(shè)備可以提取各用戶演繹的各個分句的目標(biāo)清唱音頻數(shù)據(jù)的基頻信息,并且根據(jù)各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息獲取對應(yīng)的音符值序列??梢岳斫獾氖?,基頻信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
具體實施中,歌曲音頻拼接設(shè)備可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,歌曲音頻拼接設(shè)備可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的每個分句的清唱音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的每個分句都對應(yīng)存在至少一個基頻點。歌曲音頻拼接設(shè)備對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的每個分句對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而歌曲音頻拼接設(shè)備就獲取到了各個分句的不用用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
在一種可能的實施場景中,歌曲音頻拼接設(shè)備可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
需要說明的是,歌曲音頻拼接設(shè)備對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
可選的,在提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息之前,歌曲音頻拼接設(shè)備可以先對每個清唱音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k 16bit的PCM格式。
步驟S206,計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。
具體的,歌曲音頻拼接設(shè)備可以分別計算多個用戶中的某一目標(biāo)用戶演繹的某一目標(biāo)分句的音符值序列與其他用戶演繹該對應(yīng)分句的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y2,C演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y3,D演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y4,則歌曲音頻拼接設(shè)備可以分別計算Y1與Y2之間的基頻距離,Y1與Y3之間的基頻距離,Y1與Y4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲的第k分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第k分句的音符值序列包括p個音符值,則通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
其中,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,yitk為第i個用戶的第k分句的音符值序列的第t幀的音符值,yjtk為第j個用戶的第k分句的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,基頻距離公式中的12代表一個八度,也就是說,基頻距離公式中認(rèn)為第i個用戶和第j個用戶對第k分句的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式,可以依次計算出目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲的第k分句為目標(biāo)分句為例,基頻距離和的公式可以為:
其中,Sik為第i個用戶演繹第k分句的清唱音頻數(shù)據(jù)的基頻距離和,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
步驟S207,按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序。
具體的,歌曲音頻拼接設(shè)備根據(jù)上述方法計算得到基頻距離和,將基頻距離和從小到大進(jìn)行排序,該排序也即為各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的排序。例如,目標(biāo)分句為G1,有三個用戶演唱,A用戶演唱G1的清唱音頻數(shù)據(jù)a1的基頻距離和排序為第一,B用戶演唱G1的清唱音頻數(shù)據(jù)b1的基頻距離和排序為第二,C用戶演唱G1的清唱音頻數(shù)據(jù)c1的基頻距離和排序為第三。那么,ABC三個用戶演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)排序也即為a1、b1、c1。
步驟S208,獲取排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
具體的,N可以是根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度來確定的。具體來說,歌曲音頻拼接設(shè)備可以根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
這里,N可以由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。例如,若有5個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),歌曲音頻拼接設(shè)備將這5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,分別計算得到5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,設(shè)排名前三位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度均大于預(yù)設(shè)置信度閾值,而排名第四位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度小于預(yù)設(shè)置信度閾值,則這里N即為3,也即將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前3個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
進(jìn)一步的,在計算置信度時,歌曲音頻拼接設(shè)備可以先在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度。具體來說,在一種情況下,歌曲音頻拼接設(shè)備可以分別計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的比值,若計算得到的比值均大于預(yù)設(shè)的第一置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。在另一種情況下,歌曲音頻拼接設(shè)備可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果的比值,M可以是歌曲音頻拼接設(shè)備預(yù)設(shè)的,若計算得到的比值大于預(yù)設(shè)的第二置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度時,置信度公式可以表示為:
其中,f為第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,為第k分句對應(yīng)的排名前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果。
在確定排序第1個清唱音頻數(shù)據(jù)的置信度達(dá)到預(yù)設(shè)置信度閾值后,歌曲音頻拼接設(shè)備可以進(jìn)一步確定其他各個清唱音頻數(shù)據(jù)的置信度。具體實施中,歌曲音頻拼接設(shè)備可以根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。若某一清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)的第三置信度閾值,那么則可以認(rèn)為該清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即該清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。按照該方法,歌曲音頻拼接設(shè)備可以確定獲取置信度大于預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中其他各個清唱音頻數(shù)據(jù)的置信度時,可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比值,即置信度公式可以表示為:
其中,vj為第k分句的清唱音頻數(shù)據(jù)中除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,Skj為第k分句對應(yīng)的除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的基頻距離和。
需要說明的是,這里步驟S202~S204與步驟S205~S208之間的前后執(zhí)行順序可以調(diào)換。
步驟S209,從所述備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
步驟S210,判斷所述目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差是否均小于預(yù)設(shè)基調(diào)閾值。若是,則執(zhí)行步驟S212,否則,則執(zhí)行步驟S211。
步驟S211,重新從各個分句對應(yīng)的備選清唱音頻數(shù)據(jù)中選擇其中的清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),直至各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于預(yù)設(shè)基調(diào)閾值。
具體的,歌曲音頻拼接設(shè)備可以首先從目標(biāo)歌曲的第一個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù),然后計算第一個分句的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第一分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并將該第一分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差作為基調(diào)閾值。接著從目標(biāo)歌曲的第二個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù),然后計算第二個分句的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第二分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并判斷第二分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差是否小于基調(diào)閾值,若是,則繼續(xù)從目標(biāo)歌曲的下一個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù);否則,則執(zhí)行步驟S211,即重新從第二分句的備選清唱音頻數(shù)據(jù)中選擇一個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),直到選擇出的第二分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第二分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值。
可以理解的,歌曲音頻拼接設(shè)備可以按照上述原理,分別判斷出所選擇的目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差是否均小于預(yù)設(shè)基調(diào)閾值。當(dāng)基調(diào)差均小于基調(diào)閾值時,則說明已經(jīng)為目標(biāo)歌曲的每個分句確定了合適的分句清唱音頻數(shù)據(jù),這些分句清唱音頻數(shù)據(jù)之間可以認(rèn)為不存在基調(diào)差或者僅存在微小的基調(diào)差,也即這些分句清唱音頻數(shù)據(jù)拼接生成的拼接音頻數(shù)據(jù)的基調(diào)比較平穩(wěn)。否則,歌曲音頻拼接設(shè)備針對基調(diào)差不小于基調(diào)閾值的分句對應(yīng)的分句清唱音頻數(shù)據(jù),可以重新從該分句的備選清唱音頻數(shù)據(jù)中選擇一個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),直到選擇出的該分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的對應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值。
具體實施中,以目標(biāo)歌曲的第c分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第c分句的音符值序列包括p個音符值,則通過預(yù)設(shè)的基調(diào)差公式可以求出針對目標(biāo)歌曲的演繹中,第c分句對應(yīng)的分句清唱數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第c分句的清唱音頻數(shù)據(jù)之間的基調(diào)差。其中,基調(diào)差公式可以表示為:
其中,yutc指第c分句對應(yīng)的分句清唱數(shù)據(jù)的音符值序列的第t幀的音符值,yrtc參考清唱音頻數(shù)據(jù)的第c分句的清唱音頻數(shù)據(jù)的音符值序列的第t幀的音符值,mini表示yutc和yrtc兩個音符值序列匹配度最高的i,即基調(diào)閾值。
在一種可能的情況下,即使歌曲音頻拼接設(shè)備窮盡某一分句(非第一個分句)的備選清唱音頻數(shù)據(jù)中的所有清唱音頻數(shù)據(jù),都無法找到與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值的清唱音頻數(shù)據(jù),那么說明該分句無法匹配第一分句確定的分句清唱音頻數(shù)據(jù)。在這種情況下,歌曲音頻拼接設(shè)備需要重新從第一個分句的備選清唱音頻數(shù)據(jù)中確定一個新的分句清唱音頻數(shù)據(jù),再計算第一個分句的新的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第一分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并將該第一分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差作為新的基調(diào)閾值,相應(yīng)的,其他分句根據(jù)該基調(diào)差重新確定對應(yīng)的分句清唱音頻數(shù)據(jù),直到目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于基調(diào)閾值。
在一種可能的情況下,即使歌曲音頻拼接設(shè)備窮盡第一個分句的備選清唱音頻數(shù)據(jù)中的所有清唱音頻數(shù)據(jù),都無法使各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于基調(diào)閾值。也即無法使每一個分句都匹配第一分句確定的分句清唱音頻數(shù)據(jù)。那么歌曲音頻拼接設(shè)備可以暫停對目標(biāo)歌曲的拼接處理,等待新的清唱音頻數(shù)據(jù)補充后,再重新進(jìn)行迭代挑選。
需要說明的是,在本發(fā)明實施例中,在從備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為某一目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)時,歌曲音頻拼接設(shè)備可以先將備選清唱音頻數(shù)據(jù)中排名第1個清唱音頻數(shù)據(jù)作為目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),當(dāng)排名第1個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù)達(dá)不到匹配要求的時候,再將備選清唱音頻數(shù)據(jù)中排名第2個清唱音頻數(shù)據(jù)作為目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。也即按照備選清唱音頻數(shù)據(jù)排名的先后順序,從排名第1的備選清唱音頻數(shù)據(jù)開始依次進(jìn)行挑選。按照該方法在備選清唱音頻數(shù)據(jù)中確定目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
下面舉例說明上述迭代算法,設(shè)目標(biāo)歌曲包括三個分句G1、G2和G3,G1對應(yīng)的備選清唱音頻數(shù)據(jù)排序為:a1、b1和c1,G2對應(yīng)的備選清唱音頻數(shù)據(jù)排序為:a2、b2和c2,G3對應(yīng)的備選清唱音頻數(shù)據(jù)排序為:a3、b3和c3。參考清唱音頻數(shù)據(jù)的三個分句的清唱音頻數(shù)據(jù)分別為R1、R2和R3。
首先,將第一分句G1的備選清唱音頻數(shù)據(jù)中排名第1的a1作為G1的分句清唱音頻數(shù)據(jù),并計算a1與R1之間的基調(diào)差i1;接著將G2的備選清唱音頻數(shù)據(jù)中排名第1的a2作為G2的分句清唱音頻數(shù)據(jù),并計算a2與R2之間的基調(diào)差i2,判斷i2與i1的差的絕對值是否小于1,也即基調(diào)差差距很小,如果是,那么則確定a2與a1匹配;則進(jìn)一步將G3的備選清唱音頻數(shù)據(jù)中排名第1的a3作為G3的分句清唱音頻數(shù)據(jù),并計算a3與R3之間的基調(diào)差i3,判斷i3與i1的差的絕對值是否小于1,也即基調(diào)差差距很小,如果是,那么則確定a3與a1匹配,從而可以確定a1、a2和a3即為各分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
在另一種情況下,a2與R2之間的基調(diào)差i2,判斷i2與i1的差的絕對值是否小于1,如果不是,那么則確定a2與a1不匹配;則歌曲音頻拼接設(shè)備重新在G2的備選清唱音頻數(shù)據(jù)中排名第2的b2作為G2的分句清唱音頻數(shù)據(jù),并計算b2與R2之間的基調(diào)差i4,判斷i4與i1的差的絕對值是否小于1,也即基調(diào)差差距很小,如果是,那么則確定b2與a1匹配;則進(jìn)一步將G3的備選清唱音頻數(shù)據(jù)中排名第1的a3作為G3的分句清唱音頻數(shù)據(jù),并計算a3與R3之間的基調(diào)差i3,判斷i3與i1的差的絕對值是否小于1,也即基調(diào)差差距很小,如果是,那么則確定a3與a1匹配,從而可以確定a1、b2和a3即為各分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
在又一種情況下,a2與R2之間的基調(diào)差i2,若i2與i1的差的絕對值大于1,那么則確定a2與a1不匹配;則歌曲音頻拼接設(shè)備重新在G2的備選清唱音頻數(shù)據(jù)中排名第2的b2作為G2的分句清唱音頻數(shù)據(jù),并計算b2與R2之間的基調(diào)差i4,若i4與i1的差的絕對值大于1,那么則確定b2與a1不匹配;則歌曲音頻拼接設(shè)備重新在G2的備選清唱音頻數(shù)據(jù)中排名第2的c2作為G2的分句清唱音頻數(shù)據(jù),并計算c2與R2之間的基調(diào)差i5,若i5與i1的差的絕對值大于1,那么則確定c2與a1不匹配。也就是說,G2的備選清唱音頻數(shù)據(jù)中的所有清唱音頻數(shù)據(jù)均與a1不匹配,那么則需要重新確定第一分句對應(yīng)的分句清唱音頻數(shù)據(jù),即將第一分句G1的備選清唱音頻數(shù)據(jù)中排名第2的b1作為G1的分句清唱音頻數(shù)據(jù),并計算b1與R1之間的基調(diào)差h1,然后再將其他分句重新確定出的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)之間的基調(diào)差和h1做比較后,確定與b1是否匹配,如果仍然找不到與b1匹配的分句清唱音頻數(shù)據(jù),則重新再將c1確定為G1的分句清唱音頻數(shù)據(jù),如果仍然找不到與c1匹配的分句清唱音頻數(shù)據(jù),則暫停對目標(biāo)歌曲的拼接處理。
步驟S212,根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
具體的,在確定出目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)后,歌曲音頻拼接設(shè)備可以將被選出的各個分句清唱音頻數(shù)據(jù)按照各個分句對應(yīng)在目標(biāo)歌曲中的位置和順序拼接起來。其中,各個分句之間可以根據(jù)目標(biāo)歌曲中各個分句之間的空隙時間補充一定時長的靜音,最后再與目標(biāo)歌曲的伴奏進(jìn)行混音,從而生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),該拼接音頻數(shù)據(jù)包括多個用戶對每個分句演繹的分句清唱音頻數(shù)據(jù)。
本發(fā)明實施例中,通過獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列,以計算每個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù),實現(xiàn)了從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
下面將結(jié)合圖3-圖6,對本發(fā)明實施例提供的歌曲音頻拼接設(shè)備進(jìn)行詳細(xì)介紹。需要說明的是,圖3-圖6所示的歌曲音頻拼接設(shè)備,用于執(zhí)行本發(fā)明圖1和圖2所示實施例的方法,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明圖1和圖2所示的實施例。
圖3是本發(fā)明實施例提供的一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖,所述歌曲音頻拼接設(shè)備包括:
數(shù)據(jù)獲取單元310,用于獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
具體的,在本發(fā)明實施例中,演繹音頻數(shù)據(jù)可以是用戶演唱目標(biāo)歌曲時通過具有錄音功能的終端設(shè)備錄制的音頻數(shù)據(jù),該演繹音頻數(shù)據(jù)可以是只有用戶演唱的清唱音頻數(shù)據(jù),也可以是包括用戶演唱的清唱音頻數(shù)據(jù)以及目標(biāo)歌曲的伴奏混音等背景音樂的音頻數(shù)據(jù),這里不作具體限定。其中,目標(biāo)歌曲中包括多個分句,對于分句的劃分可以通過目標(biāo)歌曲的歌詞信息來進(jìn)行劃分,例如目標(biāo)歌曲為《新年好》,則“新年好啊,新年好啊,祝福大家新年好”就可以被定義為三個分句。用戶在對目標(biāo)歌曲演唱完成后,可以將其演唱的演繹音頻數(shù)據(jù)上傳或者保存在歌曲音頻拼接設(shè)備中,數(shù)據(jù)獲取單元310就可以獲取到多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),從而可以獲取到多個用戶針對目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
第一音符值轉(zhuǎn)換單元320,用于分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,第一音符值轉(zhuǎn)換單元320可以提取各用戶演繹的各個分句的目標(biāo)清唱音頻數(shù)據(jù)的基頻信息,并且根據(jù)各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息獲取對應(yīng)的音符值序列??梢岳斫獾氖?,基頻信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
在一種可能的實施場景中,第一音符值轉(zhuǎn)換單元320可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
可選的,在提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息之前,第一音符值轉(zhuǎn)換單元320可以先對每個清唱音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k 16bit的PCM格式。
可選的,可以一并參見圖4,圖4是本發(fā)明實施例提供的第一音符值轉(zhuǎn)換單元的結(jié)構(gòu)示意圖,所述第一音符值轉(zhuǎn)換單元320包括:
基頻點生成子單元321,用于按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點。
具體實施中,基頻點生成子單元321可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,歌曲音頻拼接設(shè)備可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的每個分句的清唱音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的每個分句都對應(yīng)存在至少一個基頻點。
第一音符值轉(zhuǎn)換子單元322,用于對所述至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的所述各基頻點的基頻值轉(zhuǎn)換為所述各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
第一音符值轉(zhuǎn)換子單元322對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的每個分句對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而歌曲音頻拼接設(shè)備就獲取到了各個分句的不用用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
需要說明的是,第一音符值轉(zhuǎn)換子單元322對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
第一計算單元330,用于計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。
具體的,第一計算單元330可以分別計算多個用戶中的某一目標(biāo)用戶演繹的某一目標(biāo)分句的音符值序列與其他用戶演繹該對應(yīng)分句的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y2,C演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y3,D演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y4,則第一計算單元330可以分別計算Y1與Y2之間的基頻距離,Y1與Y3之間的基頻距離,Y1與Y4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲的第k分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第k分句的音符值序列包括p個音符值,則第一計算單元330通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
或
其中,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,yitk為第i個用戶的第k分句的音符值序列的第t幀的音符值,yjtk為第j個用戶的第k分句的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,第一個基頻距離公式中的12代表一個八度,也就是說,第一個基頻距離公式中認(rèn)為第i個用戶和第j個用戶對第k分句的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式的其中一個,第一計算單元330可以依次計算出目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲的第k分句為目標(biāo)分句為例,基頻距離和的公式可以為:
其中,Sik為第i個用戶演繹第k分句的清唱音頻數(shù)據(jù)的基頻距離和,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
第一分句數(shù)據(jù)選擇單元340,用于根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
具體的,目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)可以指在多個用戶演繹的目標(biāo)分句的清唱音頻數(shù)據(jù)中選擇出的一個用于拼接的清唱音頻數(shù)據(jù)。該目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)的確定可以依據(jù)之前計算得到的各個用戶演繹的目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,再結(jié)合不同的預(yù)設(shè)算法進(jìn)行選取。
在第一種可能的實施場景中,第一分句數(shù)據(jù)選擇單元340可以獲取各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和中最小的基頻距離和,確定該最小的基頻距離和所對應(yīng)的目標(biāo)清唱音頻數(shù)據(jù),將該目標(biāo)清唱音頻數(shù)據(jù)作為目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)即可。
可選的,可以一并參見圖5,圖5是本發(fā)明實施例提供的第一分句數(shù)據(jù)選擇單元的結(jié)構(gòu)示意圖,第一分句數(shù)據(jù)選擇單元340包括:
數(shù)據(jù)排序子單元341,用于按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序。
備選數(shù)據(jù)獲取子單元342,用于獲取排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù),從所述備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
在第二種可能的實施場景中,數(shù)據(jù)排序子單元341可以按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序,從而備選數(shù)據(jù)獲取子單元342獲取排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù),從備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。具體的,在備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù)時,備選數(shù)據(jù)獲取子單元342可以根據(jù)預(yù)先設(shè)定的規(guī)則進(jìn)行依次迭代,從而選擇出各個分句之間匹配度最合適的多個分句清唱音頻數(shù)據(jù);備選數(shù)據(jù)獲取子單元342也可以隨機的從備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),在本實施例中不作具體限定。
需要說明的是,在第二種實施場景中的一種情況下,N可以是歌曲音頻拼接設(shè)備中預(yù)先設(shè)定的,例如,備選數(shù)據(jù)獲取子單元342可以預(yù)先設(shè)定取排序中用戶數(shù)量的一半的清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù),則若有10個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),將這10個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,取前5個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)即可。
可選的,在第二種實施場景中的另一種情況下,所述數(shù)據(jù)排序子單元341用于:
根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度;
將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù),N由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。
在第二種實施場景中的另一種情況下,N可以是根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度來確定的。具體來說,數(shù)據(jù)排序子單元341可以根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。這里,N可以由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。例如,若有5個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),數(shù)據(jù)排序子單元341將這5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,分別計算得到5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,設(shè)排名前三位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度均大于預(yù)設(shè)置信度閾值,而排名第四位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度小于預(yù)設(shè)置信度閾值,則這里N即為3,也即將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前3個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
進(jìn)一步的,在計算置信度時,所述數(shù)據(jù)排序子單元341用于:
在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度;
根據(jù)所述排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。
具體的,數(shù)據(jù)排序子單元341可以先在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度。具體來說,在一種情況下,數(shù)據(jù)排序子單元341可以分別計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的比值,若計算得到的比值均大于預(yù)設(shè)的第一置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。在另一種情況下,數(shù)據(jù)排序子單元341可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果的比值,M可以是數(shù)據(jù)排序子單元341預(yù)設(shè)的,若計算得到的比值大于預(yù)設(shè)的第二置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度時,置信度公式可以表示為:
其中,f為第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,為第k分句對應(yīng)的排名前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果。
在確定排序第1個清唱音頻數(shù)據(jù)的置信度達(dá)到預(yù)設(shè)置信度閾值后,數(shù)據(jù)排序子單元341可以進(jìn)一步確定其他各個清唱音頻數(shù)據(jù)的置信度。具體實施中,數(shù)據(jù)排序子單元341可以根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。若某一清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)的第三置信度閾值,那么則可以認(rèn)為該清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即該清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。按照該方法,數(shù)據(jù)排序子單元341可以確定獲取置信度大于預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中其他各個清唱音頻數(shù)據(jù)的置信度時,可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比值,即置信度公式可以表示為:
其中,vj為第k分句的清唱音頻數(shù)據(jù)中除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,Skj為第k分句對應(yīng)的除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的基頻距離和。
數(shù)據(jù)生成單元350,用于根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
具體的,確定出目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)后,數(shù)據(jù)生成單元350可以將被選出的各個分句清唱音頻數(shù)據(jù)按照各個分句對應(yīng)在目標(biāo)歌曲中的位置和順序拼接起來。其中,各個分句之間可以根據(jù)目標(biāo)歌曲中各個分句之間的空隙時間補充一定時長的靜音,最后再與目標(biāo)歌曲的伴奏進(jìn)行混音,從而生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),該拼接音頻數(shù)據(jù)包括多個用戶對每個分句演繹的分句清唱音頻數(shù)據(jù)。例如,目標(biāo)歌曲有4個分句G1、G2、G3和G4,設(shè)總共有3個用戶演唱了該目標(biāo)歌曲,用戶A對4個分句演繹的清唱音頻數(shù)據(jù)分別為a1、a2、a3、a4,用戶B對4個分句演繹的清唱音頻數(shù)據(jù)分別為b1、b2、b3、b4,用戶C對4個分句演繹的清唱音頻數(shù)據(jù)分別為c1、c2、c3、c4,其中,數(shù)據(jù)生成單元350根據(jù)上述算法最終確定:G1分句對應(yīng)的分句清唱音頻數(shù)據(jù)為b1,G2分句對應(yīng)的分句清唱音頻數(shù)據(jù)為c2,G3分句對應(yīng)的分句清唱音頻數(shù)據(jù)為b3,G4分句對應(yīng)的分句清唱音頻數(shù)據(jù)為a4,那么歌曲音頻拼接設(shè)備就可以將b1、c2、b3以及a4這四個清唱音頻數(shù)據(jù)進(jìn)行拼接,最終生成目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
本發(fā)明實施例中,通過獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列,以計算每個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù),實現(xiàn)了從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
圖6是本發(fā)明實施例提供的另一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖,所述設(shè)備包括:
數(shù)據(jù)獲取單元310,用于獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
具體的,演繹音頻數(shù)據(jù)可以是用戶演唱目標(biāo)歌曲時通過具有錄音功能的終端設(shè)備錄制的音頻數(shù)據(jù),該演繹音頻數(shù)據(jù)可以是只有用戶演唱的清唱音頻數(shù)據(jù)。其中,目標(biāo)歌曲中包括多個分句,對于分句的劃分可以通過目標(biāo)歌曲的歌詞信息來進(jìn)行劃分,例如目標(biāo)歌曲為《新年好》,則“新年好啊,新年好啊,祝福大家新年好”就可以被定義為三個分句。用戶在對目標(biāo)歌曲演唱完成后,可以將其演唱的演繹音頻數(shù)據(jù)上傳或者保存在歌曲音頻拼接設(shè)備中,數(shù)據(jù)獲取單元310就可以獲取到多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),從而可以獲取到多個用戶針對目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù)。
第二音符值轉(zhuǎn)換單元360,用于分別提取各用戶演繹的目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻信息,獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,第二音符值轉(zhuǎn)換單元360可以分別提取各用戶演繹的目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻信息,并獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。也就是說,這里第二音符值轉(zhuǎn)換單元360獲取的是不同用戶針對目標(biāo)歌曲演繹的完整的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列??梢岳斫獾氖?,基頻信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
具體實施中,第二音符值轉(zhuǎn)換單元360可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的演繹音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的目標(biāo)歌曲對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,第二音符值轉(zhuǎn)換單元360可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的演繹音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的演繹音頻數(shù)據(jù)都對應(yīng)存在至少一個基頻點。第二音符值轉(zhuǎn)換單元360對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的演繹音頻數(shù)據(jù)對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而第二音符值轉(zhuǎn)換單元360就獲取到了不用用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
在一種可能的實施場景中,第二音符值轉(zhuǎn)換單元360可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
需要說明的是,第二音符值轉(zhuǎn)換單元360對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
可選的,在提取各用戶的演繹音頻數(shù)據(jù)的基頻信息之前,第二音符值轉(zhuǎn)換單元360可以先對每個演繹音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k 16bit的PCM格式。
第二計算單元370,用于計算所述多個用戶中的目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列分別與所述多個用戶中其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。
具體的,第二計算單元370可以分別計算多個用戶中的某一目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列與其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W2,C演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W3,D演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)對應(yīng)的音符值序列為W4,則歌曲音頻拼接設(shè)備可以分別計算W1與W2之間的基頻距離,W1與W3之間的基頻距離,W1與W4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲為例,由于大家演唱的是同一首歌,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為q,意味著目標(biāo)歌曲有q幀,演繹音頻數(shù)據(jù)的音符值序列包括q個音符值,則通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
其中,Lij為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,yit為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列的第t幀的音符值,yjt為第j個用戶的演繹音頻數(shù)據(jù)的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,基頻距離公式中的12代表一個八度,也就是說,基頻距離公式中認(rèn)為第i個用戶和第j個用戶對目標(biāo)歌曲的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式,第二計算單元370可以依次計算出目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列分別與多個用戶中其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲為例,基頻距離和的公式可以為:
其中,Si為第i個用戶的演繹音頻數(shù)據(jù)的基頻距離和,Lij為第i個用戶的演繹音頻數(shù)據(jù)的音符值序列與第j個用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
參考數(shù)據(jù)選擇單元380,用于根據(jù)各個用戶的演繹音頻數(shù)據(jù)的基頻距離和,將基頻距離和最小的演繹音頻數(shù)據(jù)作為參考清唱音頻數(shù)據(jù)。
具體的,參考數(shù)據(jù)選擇單元380根據(jù)計算出的各個用戶的演繹音頻數(shù)據(jù)的基頻距離和,可以確定出其中基頻距離和最小的一個用戶的演繹音頻數(shù)據(jù),則將該用戶的演繹音頻數(shù)據(jù)作為目標(biāo)歌曲的參考清唱音頻數(shù)據(jù)。
第一音符值轉(zhuǎn)換單元320,用于分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
具體的,第一音符值轉(zhuǎn)換單元320可以提取各用戶演繹的各個分句的目標(biāo)清唱音頻數(shù)據(jù)的基頻信息,并且根據(jù)各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息獲取對應(yīng)的音符值序列??梢岳斫獾氖?,基頻信息可以為清唱音頻數(shù)據(jù)的基音,用于決定清唱音頻數(shù)據(jù)中各音符點的音高。其中,音符值指的是針對MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口的一種標(biāo)準(zhǔn)值。
在一種可能的實施場景中,第一音符值轉(zhuǎn)換單元320可以采用預(yù)設(shè)音符轉(zhuǎn)換公式,并根據(jù)調(diào)整后的所述各基頻點的基頻值,計算各基頻點的音符值。其中,預(yù)設(shè)音符轉(zhuǎn)換公式可以為:
其中,Y表示為當(dāng)前基頻點的音符值,x表示為當(dāng)前基頻點的基頻值。
可選的,在提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息之前,第一音符值轉(zhuǎn)換單元320可以先對每個清唱音頻數(shù)據(jù)按照預(yù)設(shè)的格式進(jìn)行規(guī)整,例如,可以規(guī)整為16k 16bit的PCM格式。
可選的,可以一并參見圖4,圖4是本發(fā)明實施例提供的第一音符值轉(zhuǎn)換單元的結(jié)構(gòu)示意圖,所述第一音符值轉(zhuǎn)換單元320包括:
基頻點生成子單元321,用于按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點。
具體實施中,基頻點生成子單元321可以按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點,然后對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。例如,歌曲音頻拼接設(shè)備可以預(yù)設(shè)幀長為30ms,幀移為10ms,采集每個用戶演繹的每個分句的清唱音頻數(shù)據(jù)的基頻信息,從而每個用戶演繹的每個分句都對應(yīng)存在至少一個基頻點。
第一音符值轉(zhuǎn)換子單元322,用于對所述至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的所述各基頻點的基頻值轉(zhuǎn)換為所述各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
第一音符值轉(zhuǎn)換子單元322對上述至少一個基頻點進(jìn)行除噪、平滑等處理,然后將調(diào)整后的各基頻點的基頻值轉(zhuǎn)換為各基頻點對應(yīng)的音符值,則每個用戶演繹的每個分句對應(yīng)至少一個基頻點,至少一個基頻點對應(yīng)了至少一個音符值,至少一個音符值即音符值序列,從而歌曲音頻拼接設(shè)備就獲取到了各個分句的不用用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
需要說明的是,第一音符值轉(zhuǎn)換子單元322對至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,可以是對至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理,例如,如果一個非0基頻點的前后基頻值均為0,則將此基頻點記為0;還可以是對連續(xù)的幾個基頻點進(jìn)行中值濾波處理,通過中值濾波處理,可以使得基頻段曲線平滑,避免噪點的出現(xiàn)。
第一計算單元330,用于計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。
具體的,第一計算單元330可以分別計算多個用戶中的某一目標(biāo)用戶演繹的某一目標(biāo)分句的音符值序列與其他用戶演繹該對應(yīng)分句的音符值序列之間的基頻距離的和,即作為該目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。例如,目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y1,演繹目標(biāo)歌曲的其他用戶包括B、C和D三個用戶,B演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y2,C演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y3,D演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)對應(yīng)的音符值序列為Y4,則第一計算單元330可以分別計算Y1與Y2之間的基頻距離,Y1與Y3之間的基頻距離,Y1與Y4之間的基頻距離,然后將上述計算出的基頻距離求和,即為目標(biāo)用戶A演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)的基頻距離和。
具體實施中,以目標(biāo)歌曲的第k分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第k分句的音符值序列包括p個音符值,則第一計算單元330通過預(yù)設(shè)的基頻距離公式可以求出針對目標(biāo)歌曲的演繹中,第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離。其中,預(yù)設(shè)的基頻距離公式可以為:
或
其中,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,yitk為第i個用戶的第k分句的音符值序列的第t幀的音符值,yjtk為第j個用戶的第k分句的音符值序列的第t幀的音符值。這里,i∈(1~n),j∈(1~n),其中,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。需要說明的是,第一個基頻距離公式中的12代表一個八度,也就是說,第一個基頻距離公式中認(rèn)為第i個用戶和第j個用戶對第k分句的演繹在高一個八度或低一個八度的跨度內(nèi)的音準(zhǔn)都是一樣的。
依照上述預(yù)設(shè)的基頻距離公式的其中一個,第一計算單元330可以依次計算出目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離,并將計算得到的基頻距離求和,即為目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和。其中,以第i個用戶為目標(biāo)用戶,目標(biāo)歌曲的第k分句為目標(biāo)分句為例,基頻距離和的公式可以為:
其中,Sik為第i個用戶演繹第k分句的清唱音頻數(shù)據(jù)的基頻距離和,Lijk為第i個用戶的第k分句的音符值序列與第j個用戶的第k分句的音符值序列之間的基頻距離,n可以指演繹目標(biāo)歌曲的所有用戶的數(shù)量。
第一分句數(shù)據(jù)選擇單元340,用于根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
可以一并參見圖5,圖5是本發(fā)明實施例提供的第一分句數(shù)據(jù)選擇單元的結(jié)構(gòu)示意圖,第一分句數(shù)據(jù)選擇單元340包括:
數(shù)據(jù)排序子單元341,用于按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序。
具體的,數(shù)據(jù)排序子單元341根據(jù)上述方法計算得到基頻距離和,將基頻距離和從小到大進(jìn)行排序,該排序也即為各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的排序。例如,目標(biāo)分句為G1,有三個用戶演唱,A用戶演唱G1的清唱音頻數(shù)據(jù)a1的基頻距離和排序為第一,B用戶演唱G1的清唱音頻數(shù)據(jù)b1的基頻距離和排序為第二,C用戶演唱G1的清唱音頻數(shù)據(jù)c1的基頻距離和排序為第三。那么,ABC三個用戶演繹目標(biāo)分句G1的清唱音頻數(shù)據(jù)排序也即為a1、b1、c1。
備選數(shù)據(jù)獲取子單元342,用于獲取排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù),從所述備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
具體的,N可以是根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度來確定的。具體來說,備選數(shù)據(jù)獲取子單元342可以根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
這里,N可以由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。例如,若有5個用戶演唱的針對目標(biāo)分句的清唱音頻數(shù)據(jù),備選數(shù)據(jù)獲取子單元342將這5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和從小到大排序后,分別計算得到5個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度,設(shè)排名前三位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度均大于預(yù)設(shè)置信度閾值,而排名第四位的用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度小于預(yù)設(shè)置信度閾值,則這里N即為3,也即將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前3個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。
進(jìn)一步的,在計算置信度時,備選數(shù)據(jù)獲取子單元342可以先在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度。具體來說,在一種情況下,備選數(shù)據(jù)獲取子單元342可以分別計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的比值,若計算得到的比值均大于預(yù)設(shè)的第一置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。在另一種情況下,備選數(shù)據(jù)獲取子單元342可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果的比值,M可以是歌曲音頻拼接設(shè)備預(yù)設(shè)的,若計算得到的比值大于預(yù)設(shè)的第二置信度閾值,那么則可以認(rèn)為排序第1個清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即排序第1個清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度時,置信度公式可以表示為:
其中,f為第k分句的清唱音頻數(shù)據(jù)中排序第1個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,為第k分句對應(yīng)的排名前M個清唱音頻數(shù)據(jù)的基頻距離和的求和結(jié)果。
在確定排序第1個清唱音頻數(shù)據(jù)的置信度達(dá)到預(yù)設(shè)置信度閾值后,備選數(shù)據(jù)獲取子單元342可以進(jìn)一步確定其他各個清唱音頻數(shù)據(jù)的置信度。具體實施中,備選數(shù)據(jù)獲取子單元342可以根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。若某一清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)的第三置信度閾值,那么則可以認(rèn)為該清唱音頻數(shù)據(jù)的置信度大于預(yù)設(shè)置信度閾值,即該清唱音頻數(shù)據(jù)可以作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。按照該方法,備選數(shù)據(jù)獲取子單元342可以確定獲取置信度大于預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為目標(biāo)分句的備選清唱音頻數(shù)據(jù)。例如,在計算各個用戶演繹第k分句的清唱音頻數(shù)據(jù)中其他各個清唱音頻數(shù)據(jù)的置信度時,可以計算排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比值,即置信度公式可以表示為:
其中,vj為第k分句的清唱音頻數(shù)據(jù)中除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的置信度,Sk1為第k分句對應(yīng)的排名第1個清唱音頻數(shù)據(jù)的基頻距離和,Skj為第k分句對應(yīng)的除排序第1個清唱音頻數(shù)據(jù)的其他各個清唱音頻數(shù)據(jù)的基頻距離和。
基調(diào)差確定單元390,用于確定所述目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于預(yù)設(shè)基調(diào)閾值。
第二分句數(shù)據(jù)選擇單元400,用于若所述目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差不能滿足均小于預(yù)設(shè)基調(diào)閾值,則重新從各個分句對應(yīng)的備選清唱音頻數(shù)據(jù)中選擇其中的清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),直至各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于預(yù)設(shè)基調(diào)閾值。
具體的,備選數(shù)據(jù)獲取子單元342可以首先從目標(biāo)歌曲的第一個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù),然后基調(diào)差確定單元390計算第一個分句的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第一分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并將該第一分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差作為基調(diào)閾值。接著備選數(shù)據(jù)獲取子單元342從目標(biāo)歌曲的第二個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù),然后基調(diào)差確定單元390計算第二個分句的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第二分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并判斷第二分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差是否小于基調(diào)閾值,若是,則備選數(shù)據(jù)獲取子單元342繼續(xù)從目標(biāo)歌曲的下一個分句的備選清唱音頻數(shù)據(jù)中確定一個分句清唱音頻數(shù)據(jù);否則,則第二分句數(shù)據(jù)選擇單元400重新從第二分句的備選清唱音頻數(shù)據(jù)中選擇一個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),直到選擇出的第二分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第二分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值。
可以理解的,基調(diào)差確定單元390可以按照上述原理,分別判斷出備選數(shù)據(jù)獲取子單元342所選擇的目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差是否均小于預(yù)設(shè)基調(diào)閾值。當(dāng)基調(diào)差均小于基調(diào)閾值時,則說明已經(jīng)為目標(biāo)歌曲的每個分句確定了合適的分句清唱音頻數(shù)據(jù),這些分句清唱音頻數(shù)據(jù)之間可以認(rèn)為不存在基調(diào)差或者僅存在微小的基調(diào)差,也即這些分句清唱音頻數(shù)據(jù)拼接生成的拼接音頻數(shù)據(jù)的基調(diào)比較平穩(wěn)。否則,第二分句數(shù)據(jù)選擇單元400針對基調(diào)差不小于基調(diào)閾值的分句對應(yīng)的分句清唱音頻數(shù)據(jù),可以重新從該分句的備選清唱音頻數(shù)據(jù)中選擇一個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù),直到選擇出的該分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的對應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值。
具體實施中,以目標(biāo)歌曲的第c分句為例,由于大家演唱的是同一句,所以對應(yīng)的音符值序列的長度相同,設(shè)長度為p,意味著第k分句有p幀,第c分句的音符值序列包括p個音符值,則通過預(yù)設(shè)的基調(diào)差公式可以求出針對目標(biāo)歌曲的演繹中,第c分句對應(yīng)的分句清唱數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第c分句的清唱音頻數(shù)據(jù)之間的基調(diào)差。其中,基調(diào)差公式可以表示為:
其中,yutc指第c分句對應(yīng)的分句清唱數(shù)據(jù)的音符值序列的第t幀的音符值,yrtc參考清唱音頻數(shù)據(jù)的第c分句的清唱音頻數(shù)據(jù)的音符值序列的第t幀的音符值,mini表示yutc和yrtc兩個音符值序列匹配度最高的i,即基調(diào)閾值。
在一種可能的情況下,即使備選數(shù)據(jù)獲取子單元342窮盡某一分句(非第一個分句)的備選清唱音頻數(shù)據(jù)中的所有清唱音頻數(shù)據(jù),都無法找到與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差小于基調(diào)閾值的清唱音頻數(shù)據(jù),那么說明該分句無法匹配第一分句確定的分句清唱音頻數(shù)據(jù)。在這種情況下,第二分句數(shù)據(jù)選擇單元400需要重新從第一個分句的備選清唱音頻數(shù)據(jù)中確定一個新的分句清唱音頻數(shù)據(jù),基調(diào)差確定單元390再計算第一個分句的新的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的第一分句的清唱音頻數(shù)據(jù)之間的基調(diào)差,并將該第一分句的分句清唱音頻數(shù)據(jù)對應(yīng)的基調(diào)差作為新的基調(diào)閾值,相應(yīng)的,其他分句根據(jù)該基調(diào)差重新確定對應(yīng)的分句清唱音頻數(shù)據(jù),直到目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于基調(diào)閾值。
在一種可能的情況下,即使備選數(shù)據(jù)獲取子單元342窮盡第一個分句的備選清唱音頻數(shù)據(jù)中的所有清唱音頻數(shù)據(jù),都無法使各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于基調(diào)閾值。也即無法使每一個分句都匹配第一分句確定的分句清唱音頻數(shù)據(jù)。那么可以暫停對目標(biāo)歌曲的拼接處理,等待新的清唱音頻數(shù)據(jù)補充后,再重新進(jìn)行迭代挑選。
需要說明的是,在本發(fā)明實施例中,備選數(shù)據(jù)獲取子單元342在從備選清唱音頻數(shù)據(jù)中選擇清唱音頻數(shù)據(jù)作為某一目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)時,備選數(shù)據(jù)獲取子單元342可以先將備選清唱音頻數(shù)據(jù)中排名第1個清唱音頻數(shù)據(jù)作為目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),當(dāng)排名第1個清唱音頻數(shù)據(jù)作為分句清唱音頻數(shù)據(jù)達(dá)不到匹配要求的時候,再將備選清唱音頻數(shù)據(jù)中排名第2個清唱音頻數(shù)據(jù)作為目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。也即按照備選清唱音頻數(shù)據(jù)排名的先后順序,從排名第1的備選清唱音頻數(shù)據(jù)開始依次進(jìn)行挑選。按照該方法在備選清唱音頻數(shù)據(jù)中確定目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
數(shù)據(jù)生成單元350,用于根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
具體的,在確定出目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)后,數(shù)據(jù)生成單元350可以將被選出的各個分句清唱音頻數(shù)據(jù)按照各個分句對應(yīng)在目標(biāo)歌曲中的位置和順序拼接起來。其中,各個分句之間可以根據(jù)目標(biāo)歌曲中各個分句之間的空隙時間補充一定時長的靜音,最后再與目標(biāo)歌曲的伴奏進(jìn)行混音,從而生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),該拼接音頻數(shù)據(jù)包括多個用戶對每個分句演繹的分句清唱音頻數(shù)據(jù)。
本發(fā)明實施例中,通過獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列,以計算每個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù),實現(xiàn)了從多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù)中挑選出每個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成目標(biāo)歌曲的拼接音頻數(shù)據(jù),提升清唱音頻數(shù)據(jù)的利用率。
圖7是本發(fā)明實施例提供的另一種歌曲音頻拼接設(shè)備的結(jié)構(gòu)示意圖。如圖7所示,所述歌曲音頻拼接設(shè)備1000可以包括:至少一個處理器1001,例如CPU,至少一個網(wǎng)絡(luò)接口1004,用戶接口1003,存儲器1005,至少一個通信總線1002。其中,通信總線1002用于實現(xiàn)這些組件之間的連接通信。其中,用戶接口1003可以包括顯示屏(Display)、鍵盤(Keyboard),可選用戶接口1003還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口1004可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如WI-FI接口)。存儲器1005可以是高速RAM存儲器,也可以是非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器1005可選的還可以是至少一個位于遠(yuǎn)離前述處理器1001的存儲裝置。如圖7所示,作為一種計算機存儲介質(zhì)的存儲器1005中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊、用戶接口模塊以及文件生成應(yīng)用程序。
在圖7所示的歌曲音頻拼接設(shè)備1000中,用戶接口1003主要用于為用戶提供輸入的接口,獲取用戶輸入的數(shù)據(jù);而處理器1001可以用于調(diào)用存儲器1005中存儲的音頻拼接應(yīng)用程序,并具體執(zhí)行以下操作:
獲取多個用戶針對目標(biāo)歌曲的演繹音頻數(shù)據(jù),所述演繹音頻數(shù)據(jù)包括所述目標(biāo)歌曲的各個分句的清唱音頻數(shù)據(jù);
分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列;
計算所述多個用戶中的目標(biāo)用戶演繹目標(biāo)分句的音符值序列分別與所述多個用戶中其他用戶演繹目標(biāo)分句的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和;
根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù);
根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)。
在一個實施例中,所述處理器1001根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,從所述各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中確定所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)時,具體執(zhí)行以下操作:
按照基頻距離和從小到大,對各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)進(jìn)行排序;
獲取排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù),從所述備選清唱音頻數(shù)據(jù)中選擇其中一個清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù)。
在一個實施例中,所述處理器1001獲取排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù)時,具體執(zhí)行以下操作:
根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度;
將置信度達(dá)到預(yù)設(shè)置信度閾值的排序前N個清唱音頻數(shù)據(jù)作為所述目標(biāo)分句的備選清唱音頻數(shù)據(jù),N由置信度達(dá)不到預(yù)設(shè)置信度閾值的基頻距離和最小的清唱音頻數(shù)據(jù)的排序確定。
在一個實施例中,所述處理器1001根據(jù)各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的基頻距離和,計算各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)的置信度時,具體執(zhí)行以下操作:
在各個用戶演繹目標(biāo)分句的清唱音頻數(shù)據(jù)中,根據(jù)排序第1個清唱音頻數(shù)據(jù)的基頻距離和與排序前M個清唱音頻數(shù)據(jù)的基頻距離和之間的比較結(jié)果,確定排序第1個清唱音頻數(shù)據(jù)的置信度;
根據(jù)所述排序第1個清唱音頻數(shù)據(jù)的基頻距離和與其他各個清唱音頻數(shù)據(jù)的基頻距離和的比較結(jié)果,確定其他各個清唱音頻數(shù)據(jù)的置信度。
在一個實施例中,所述處理器1001根據(jù)目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù),生成所述目標(biāo)歌曲的拼接音頻數(shù)據(jù)之前,還執(zhí)行以下操作:
分別提取各用戶演繹的目標(biāo)歌曲的演繹音頻數(shù)據(jù)的基頻信息,獲取不同用戶的演繹音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列;
計算所述多個用戶中的目標(biāo)用戶的演繹音頻數(shù)據(jù)的音符值序列分別與所述多個用戶中其他用戶的演繹音頻數(shù)據(jù)的音符值序列之間的基頻距離的和,作為所述目標(biāo)用戶的演繹音頻數(shù)據(jù)的基頻距離和;
根據(jù)各個用戶的演繹音頻數(shù)據(jù)的基頻距離和,將基頻距離和最小的演繹音頻數(shù)據(jù)作為參考清唱音頻數(shù)據(jù);
確定所述目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于預(yù)設(shè)基調(diào)閾值。
在一個實施例中,所述處理器1001還用于執(zhí)行以下操作:
若所述目標(biāo)歌曲的各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差不能滿足均小于預(yù)設(shè)基調(diào)閾值,則重新從各個分句對應(yīng)的備選清唱音頻數(shù)據(jù)中選擇其中的清唱音頻數(shù)據(jù)作為所述目標(biāo)歌曲中的目標(biāo)分句對應(yīng)的分句清唱音頻數(shù)據(jù),直至各個分句對應(yīng)的分句清唱音頻數(shù)據(jù)與所述參考清唱音頻數(shù)據(jù)的相應(yīng)分句的清唱音頻數(shù)據(jù)之間的基調(diào)差均小于預(yù)設(shè)基調(diào)閾值。
在一個實施例中,所述處理器1001分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列時,具體執(zhí)行以下操作:
按照預(yù)設(shè)幀長和預(yù)設(shè)幀移分別提取各用戶演繹的各個分句的清唱音頻數(shù)據(jù)的基頻信息,以生成各用戶演繹的各個分句對應(yīng)的至少一個基頻點;
對所述至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整,并將調(diào)整后的所述各基頻點的基頻值轉(zhuǎn)換為所述各基頻點對應(yīng)的音符值,從而獲取各個分句的不同用戶的清唱音頻數(shù)據(jù)的基頻信息對應(yīng)的音符值序列。
在一個實施例中,所述處理器1001對所述至少一個基頻點中各基頻點的基頻值進(jìn)行調(diào)整時,具體執(zhí)行以下操作:
對所述至少一個基頻點中的奇異基頻點的基頻值進(jìn)行置零處理;
對所述各基頻點進(jìn)行中值濾波處理。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。