本發(fā)明涉及歌唱領(lǐng)域的音頻信號處理方法,特別是涉及一種基于演唱者聲音特質(zhì)的歌曲推薦方法。
背景技術(shù):
音樂推薦系統(tǒng)重在向用戶推薦其可能喜歡聽的歌曲,采用的推薦技術(shù)主要可以分為基于內(nèi)容的推薦和基于協(xié)同過濾的推薦。基于內(nèi)容的推薦算法主要根據(jù)音樂自身的音頻特征進(jìn)行推薦,包括mfcc等底層特征或者旋律、節(jié)奏、流派、情感等特征?;趨f(xié)同過濾的推薦算法主要根據(jù)用戶之間的點播行為或者播放記錄,以用戶之間的相似性為基礎(chǔ)進(jìn)行推薦。
近年來,在移動互聯(lián)網(wǎng)應(yīng)用的快速發(fā)展和各檔大型真人音樂選秀類節(jié)目的雙重刺激下,音樂推薦系統(tǒng)從為用戶推薦喜歡聽的歌曲這一傳統(tǒng)應(yīng)用場景逐漸遷移,進(jìn)而滲透進(jìn)入為用戶推薦喜歡唱的歌曲等新興應(yīng)用場景。
然而,應(yīng)用場景的遷移并沒有伴隨著音樂推薦方法的同步遷移。以唱吧app為例,app中的推薦功能推薦的歌曲以當(dāng)前熱門歌曲為主。但是,熱門歌曲并不適合所有用戶演唱。有可能歌曲音調(diào)太高了,由于用戶自身演唱音域范圍及演唱能力的限制導(dǎo)致高音部分唱不上去;也有可能歌曲適合用粗獷的、有爆發(fā)力的聲音去演繹,而用戶卻是個聲音甜美的女生。
顯然,新的推薦應(yīng)用場景需要新的推薦模式。在k歌的應(yīng)用場景下,用戶不僅僅是聽歌曲,更重要的是能最大程度地演繹好歌曲。這是一個雙向匹配的過程,一方面,需要考慮用戶自身聲音的特質(zhì),例如用戶實際的演唱音域及聲音的音色等;另一方面,需要考慮歌曲對演唱能力的要求,例如歌曲要求的音域范圍及怎樣的音色更適合演繹該歌曲的情感等。
為了更好的介紹基于演唱者聲音特質(zhì)的歌曲推薦的概念,介紹一些相關(guān)音樂、人聲理論的基本概念。
音色:音色是指聲音在聽覺上產(chǎn)生的某種屬性,聽音者能夠據(jù)此判斷兩個以同樣方式呈現(xiàn)、具有相同音高和響度的聲音的不同。
音域:音域有總的音域和個別的人聲或樂器的音域兩種??偟囊粲蛑敢袅械目偡秶?,即從最低音到最高音的范圍。個別的人聲或樂器的音域指某個人聲或某種樂器在整個音域中所能到達(dá)的最低音到最高音的范圍。樂器的音域相對固定,而人聲的音域由于每個人先天的聲帶大小,長短、厚薄不同及后天有無經(jīng)過系統(tǒng)的聲樂訓(xùn)練等原因,有著較大的區(qū)別。
midi(musicalinstrumentdigitalinterface),是一種數(shù)字音樂、樂器的通信標(biāo)準(zhǔn)。midi文件可以靈活的記錄歌曲的音高及音長等信息,便于計算機(jī)進(jìn)行音高的分析與處理。
cqt譜,一種音色頻率物理特征,通過中心頻率成指數(shù)分布的濾波器組,將樂音信號表示為確定音樂單音的譜能量,濾波器組的品質(zhì)因子q保持常數(shù)。
個體演唱能力包括演唱者音域范圍的寬窄及在各個音級上的音準(zhǔn)控制能力等。發(fā)聲能力是演唱能力的基礎(chǔ),醫(yī)學(xué)上利用發(fā)聲范圍檔案記錄個人的發(fā)聲音域及響度動態(tài)范圍。專業(yè)歌手則通過系統(tǒng)的聲樂訓(xùn)練方法來提升自身的演唱能力,但普通演唱者一般不會去使用特定的訓(xùn)練方法。
因此,本申請基于上述分析,利用歌曲簡譜和歌手清唱帶等信息,建立歌曲特征文件庫,提取歌曲的演唱音域和歌手的音色特征。同時利用用戶演唱歌曲時的清唱錄音文件與歌曲的簡譜信息,在音級完成質(zhì)量高的前提下,提取用戶的演唱音域和音色特征。綜合考慮用戶的演唱音域與曲庫中歌曲音域要求之間的匹配度以及用戶音色與曲庫中歌手音色之間的相似度,計算曲庫中每首歌曲對于該用戶的推薦度,并向用戶推薦推薦度高的歌曲。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的是提供一種基于演唱者聲音特質(zhì)的歌曲推薦方法,對演唱者與歌手之間音域相似度以及音色相似度、歌曲推薦進(jìn)行分析。
本發(fā)明采用以下方案實現(xiàn):一種基于演唱者聲音特質(zhì)的歌曲推薦方法,包括如下步驟:
步驟s1:分析曲庫中歌曲的簡譜信息,得到各個歌曲的midi音高基準(zhǔn)序列,分析出歌曲的音級分布直方圖,得到各個歌曲的演唱音域要求;
步驟s2:采用melodia算法分析用戶清唱錄音文件,得到演唱者演唱該歌曲的midi音高值序列,取得步驟s1中得到的同一歌曲的midi音高基準(zhǔn)序列,計算演唱者的基準(zhǔn)演唱能力,提取其演唱音域;
步驟s3:對歌手的清唱文件提取時頻信號表征,輸入到深度卷積神經(jīng)網(wǎng)絡(luò)中對網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,得到訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)及人聲音色嵌入空間;
步驟s4:根據(jù)歌手的清唱文件提取時頻信號表征,將其輸入到步驟s3中訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)的輸出對應(yīng)于人聲音色嵌入空間的3維音色特征向量,將這3維音色特征向量作為原唱歌手的人聲音色表征;
步驟s5:分析演唱者的清唱聲音片段,同樣采用步驟s4的方法,得到人聲音色嵌入空間中的一組3維音色特征向量,作為演唱者人聲音色表征;
步驟s6:根據(jù)歌曲的演唱音域要求和演唱者的演唱音域,計算出用戶與歌曲之間的音域匹配度;
步驟s7:根據(jù)原唱歌手和演唱者的人聲音色表征,計算演唱者與各歌手的音色相似度;
步驟s8:根據(jù)音域匹配度和音色相似度,計算曲庫中每首歌曲對于該用戶的推薦度。
進(jìn)一步地,所述步驟s6具體包括以下步驟:
步驟s61:根據(jù)歌曲音級分布直方圖得到每個音級的權(quán)重,每個音級的權(quán)重等于該音級出現(xiàn)的次數(shù)除以該歌曲中所有音級出現(xiàn)次數(shù)的總和,計算公式的定義具體為:
其中,num(x)表示音級x在簡譜中出現(xiàn)的次數(shù),xmax表示簡譜中音符的最大midi值,xmin表示簡譜中音符的最小midi值;
步驟s62:利用歌曲的音級分布情況與用戶在各個音級的演唱能力評估值,計算出用戶演唱音域與歌曲音域要求的匹配度,音域匹配度的計算公式的定義具體為:
其中,u(x)表示用戶在音級x上的演唱能力評估值。
進(jìn)一步地,所述步驟s7中,演唱者的聲音片段嵌入到音色嵌入空間中后,分別計算演唱者與嵌入空間中各歌手的音色相似度,音色相似度的計算公式的定義具體為:
tim_sim(u,s)=1-tanh(μ||z1-z2||2)
其中,||z1-z2||2表示兩點之間的歐氏距離,μ為經(jīng)驗系數(shù),tanh為雙曲正切函數(shù)。
進(jìn)一步地,所述步驟s8中,在進(jìn)行最終的推薦時,綜合考慮用戶的演唱音域與曲庫中歌曲的音域要求的匹配度以及用戶的音色與曲庫中歌手的音色相似性,計算曲庫中每首歌曲對于該用戶的推薦度,推薦度的計算公式的定義具體為:
recom(u,s)=cran_mat(u,s)+(1-c)tim_sim(u,s)
其中,recom(u,s)表示歌曲s對于用戶u的推薦度,ran_mat(u,s)表示歌曲s對于用戶u的音域匹配度,tim_sim(u,s)表示用戶u的音色與歌曲s的原唱歌手音色的相似度,c取值為0.7。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點:該方法利用用戶的演唱歌曲時的清唱錄音文件與歌曲的簡譜信息,在音級完成質(zhì)量高的前提下,提取用戶的演唱音域。同時利用歌曲簡譜和歌手清唱帶等信息,建立歌曲特征文件庫,提取歌手的演唱音域和音色特征。與利用音域的寬度計算用戶與歌曲的匹配度,但在某些情況下不適用相比,利用歌曲midi音高模型分析出歌曲的音級分布直方圖與用戶在各個音級的演唱能力評估值,計算出用戶演唱音域與歌曲音域要求的匹配度,適用范圍更廣也更準(zhǔn)確,同時用戶在演唱過程中也可以完善其演唱音域。并且借助深度卷積網(wǎng)絡(luò)強(qiáng)大的降維能力及特征學(xué)習(xí)能力,將高維的、時序的人聲頻譜特征嵌入到3維的音色嵌入空間中,從而在3維音色嵌入空間內(nèi)實現(xiàn)音色相似性的可度量性。最后綜合考慮用戶的演唱音域與曲庫中歌曲的音域要求的匹配度以及用戶的音色與曲庫中歌手的音色相似性,計算曲庫中每首歌曲對于該用戶的推薦度??梢愿鶕?jù)不同的應(yīng)用場景,設(shè)置不同的參數(shù)值值。從而向用戶推薦合適且推薦度高的歌曲。
附圖說明
圖1是本發(fā)明的方法流程示意框圖。
圖2是本發(fā)明用戶u3部分歌曲推薦結(jié)果列表。
具體實施方式
下面結(jié)合附圖表及實施例對本發(fā)明做進(jìn)一步說明。
本實施例提供一種基于演唱者聲音特質(zhì)的歌曲推薦方法,如圖1所示包括如下步驟:
步驟s1:分析曲庫中歌曲的簡譜信息,得到各個歌曲的midi音高基準(zhǔn)序列,分析出歌曲的音級分布直方圖,得到各個歌曲的演唱音域要求;
步驟s2:采用melodia算法分析用戶清唱錄音文件,得到演唱者演唱該歌曲的midi音高值序列,取得步驟s1中得到的同一歌曲的midi音高基準(zhǔn)序列,計算演唱者的基準(zhǔn)演唱能力,提取其演唱音域;
步驟s3:對歌手的清唱文件提取時頻信號表征,輸入到深度卷積神經(jīng)網(wǎng)絡(luò)中對網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,得到訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)及人聲音色嵌入空間;
步驟s4:根據(jù)歌手的清唱文件提取時頻信號表征,將其輸入到步驟s3中訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)的輸出對應(yīng)于人聲音色嵌入空間的3維音色特征向量,將這3維音色特征向量作為原唱歌手的人聲音色表征;
步驟s5:分析演唱者的清唱聲音片段,同樣采用步驟s4的方法,得到人聲音色嵌入空間中的一組3維音色特征向量,作為演唱者人聲音色表征;
步驟s6:根據(jù)歌曲的演唱音域要求和演唱者的演唱音域,計算出用戶與歌曲之間的音域匹配度;
步驟s7:根據(jù)原唱歌手和演唱者的人聲音色表征,計算演唱者與各歌手的音色相似度;
步驟s8:根據(jù)音域匹配度和音色相似度,計算曲庫中每首歌曲對于該用戶的推薦度。
在本實施例中,所述步驟s6具體包括以下步驟:
步驟s61:根據(jù)歌曲音級分布直方圖得到每個音級的權(quán)重,每個音級的權(quán)重等于該音級出現(xiàn)的次數(shù)除以該歌曲中所有音級出現(xiàn)次數(shù)的總和,計算公式的定義具體為:
其中,num(x)表示音級x在簡譜中出現(xiàn)的次數(shù),xmax表示簡譜中音符的最大midi值,xmin表示簡譜中音符的最小midi值。
步驟s62:利用歌曲的音級分布情況與用戶在各個音級的演唱能力評估值,計算出用戶演唱音域與歌曲音域要求的匹配度,音域匹配度的計算公式的定義具體為:
其中,u(x)表示用戶在音級x上的演唱能力評估值。
在本實施例中,所述步驟s7中,演唱者的聲音片段嵌入到音色嵌入空間中后,分別計算演唱者與嵌入空間中各歌手的音色相似度,音色相似度的計算公式的定義具體為:
tim_sim(u,s)=1-tanh(μ||z1-z2||2)
其中,||z1-z2||2表示兩點之間的歐氏距離,μ為經(jīng)驗系數(shù),tanh為雙曲正切函數(shù)。
在本實施例中,所述步驟s8中,在進(jìn)行最終的推薦時,綜合考慮用戶的演唱音域與曲庫中歌曲的音域要求的匹配度以及用戶的音色與曲庫中歌手的音色相似性,計算曲庫中每首歌曲對于該用戶的推薦度,推薦度的計算公式的定義具體為:
recom(u,s)=cran_mat(u,s)+(1-c)tim_sim(u,s)
其中,recom(u,s)表示歌曲s對于用戶u的推薦度,ran_mat(u,s)表示歌曲s對于用戶u的音域匹配度,tim_sim(u,s)表示用戶u的音色與歌曲s的原唱歌手音色的相似度,c取值為0.7。
在本實施例中,根據(jù)以上方法給出實例,具體包括以下步驟:
步驟1:分析曲庫中歌曲的簡譜信息,得到各個歌曲的midi音高基準(zhǔn)序列,分析出歌曲的音級分布直方圖,得到各個歌曲的演唱音域要求。具體步驟如下:
步驟11:搜集整理曲庫中用戶演唱歌曲的簡譜,根據(jù)歌曲簡譜中的調(diào)號及唱名等信息,將簡譜信息轉(zhuǎn)換為對應(yīng)的midi音高值序列,并根據(jù)對應(yīng)歌曲伴奏的開始時間、持續(xù)時間等信息,建立該歌曲的標(biāo)準(zhǔn)midi音高特征文件。
步驟12:由歌曲midi音高值序列分析出歌曲的音級分布直方圖,歌曲的音級分布直方圖統(tǒng)計了歌曲midi音高值序列中,每個音級出現(xiàn)的次數(shù),并按照音列從低到高的順序排列。因此,音級分布直方圖的最左和最右兩個音級所包含的音域部分,對應(yīng)該歌曲的演唱音域要求。
步驟2:采用melodia算法分析用戶清唱錄音文件,得到演唱者演唱該歌曲的midi音高值序列,取得曲庫中同一歌曲的midi音高基準(zhǔn)序列,計算演唱者的基準(zhǔn)演唱能力,提取其演唱音域。具體步驟如下:
步驟21:采用melodia算法分析用戶清唱錄音文件,melodia算法能自動檢測歌曲中主要旋律的基頻f0,具體參數(shù)設(shè)置為{"minfqr":82.0,"maxfqr":1047.0,"voicing":0.2,"minpeaksalience":0.0}。將基頻f0轉(zhuǎn)換為midi音高值p,轉(zhuǎn)換公式的具體定義為:
步驟22:下面以用戶u1例,用戶u1為男性,具有一定的演唱經(jīng)驗,但是太高的音唱不上去。根據(jù)步驟11取得曲庫中同一歌曲的midi音高基準(zhǔn)序列,統(tǒng)計u1的音級x在歌曲集合中出現(xiàn)的次數(shù)及演唱者唱準(zhǔn)次數(shù)來評價音級x的完成質(zhì)量,記為β(x),累加至用戶的歷史文件中,更新用戶的演唱音域歷史記錄。計算每個音級的威爾遜置信區(qū)間下界,作為更新后的音級完成質(zhì)量。
步驟23:遍歷更新后的音級完成質(zhì)量,然后計算出基準(zhǔn)演唱能力α。α的計算公式的定義具體為:
α=mean(β(x))-std(β(x))
其中,mean(β(x))表示總音域內(nèi)各個音級完成質(zhì)量的平均值,std(β(x))表示總音域內(nèi)各個音級完成質(zhì)量的標(biāo)準(zhǔn)差。經(jīng)統(tǒng)計,用戶u1演唱20首歌曲之后,各個音級的平均完成質(zhì)量為0.84,標(biāo)準(zhǔn)差為0.16,計算出其基準(zhǔn)演唱能力α為0.68。
步驟24:用<α,[xmin,xmax],sequ[β(xmin),β(xmax)],min(β(x))>表示演唱者的演唱音域,是一個五元組。其中,xmin為midi值最小的音級為,xmax為midi值最大的音級,sequ[β(xmin),β(xmax)]為xmin與xmax之間的音級完成質(zhì)量序列,音質(zhì)完成質(zhì)量下界值為min(β(x))。分析得到用戶u1大于基準(zhǔn)演唱能力的最小音級為a3,最大音級為g5。而各個音級完成質(zhì)量序列值為[0.86,0.99,…],其中最小的音質(zhì)完成質(zhì)量下界值為0.28。最終得到用戶u1的演唱音域為<0.68,[a3,g5],[0.86,0.99,…],0.28>。
步驟3:對歌手的清唱文件提取時頻信號表征,輸入到深度卷積神經(jīng)網(wǎng)絡(luò)中對網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,得到訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)及人聲音色嵌入空間。具體步驟如下:
步驟31:將歌手分為15人一組,對每組歌手的清唱音頻進(jìn)行分幀,對其提取cqt特征,每一幀的cqt系數(shù)為192維,選取60幀的cqt系數(shù),構(gòu)成神經(jīng)網(wǎng)絡(luò)的輸入矩陣,矩陣大小為60*192。
步驟32:將步驟31中得到的輸入矩陣輸入到深度卷積神經(jīng)網(wǎng)絡(luò),并采用成對訓(xùn)練的方法對網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,得到訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)及相應(yīng)的音色嵌入空間。
步驟4:根據(jù)歌手的清唱文件提取時頻信號表征,將其輸入到步驟s3中訓(xùn)練好的深度卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)的輸出對應(yīng)于人聲音色嵌入空間的3維音色特征向量,將這3維音色特征向量作為原唱歌手的人聲音色表征。具體步驟如下:
步驟41:對每一位歌手的聲音片段,采用同步驟31的方法,提取cqt特征后,得到大小為60*192的輸入矩陣。
步驟42:將步驟41得到的cqt特征輸入到步驟32訓(xùn)練好深度卷積網(wǎng)絡(luò),網(wǎng)絡(luò)的輸出對應(yīng)于人聲音色嵌入空間的3維音色特征向量,將這3維音色特征向量作為原唱歌手的人聲音色表征。
步驟5:分析演唱者的清唱聲音片段,同步驟s4方法,得到人聲音色嵌入空間中的一組3維音色特征向量,作為演唱者人聲音色表征。具體步驟如下:
步驟51:對演唱者的聲音片段,采用同步驟31的方法,提取cqt特征后,得到大小為60*192的輸入矩陣。
步驟52:將步驟51得到的cqt特征輸入到步驟32訓(xùn)練好深度卷積網(wǎng)絡(luò),網(wǎng)絡(luò)的輸出對應(yīng)于人聲音色嵌入空間的3維音色特征向量,將這3維音色特征向量作為演唱者的人聲音色表征。
步驟6:根據(jù)歌曲的演唱音域要求和演唱者的演唱音域,計算出用戶與歌曲之間的音域匹配度。具體步驟如下:
步驟61:根據(jù)歌曲音級分布直方圖得到每個音級的權(quán)重,每個音級的權(quán)重等于該音級出現(xiàn)的次數(shù)除以該歌曲中所有音級出現(xiàn)次數(shù)的總和,計算公式的定義具體為:
其中,num(x)表示音級x在簡譜中出現(xiàn)的次數(shù),xmax表示簡譜中音符的最大midi值,xmin表示簡譜中音符的最小midi值。
步驟62:以用戶u2的演唱音域和劉若英唱的歌曲《當(dāng)愛在靠近》進(jìn)行實例分析。用戶u2,女性,其演唱音域為<0.18,[f4,g5],[0.183,0.409,…],0.08>,即用戶u2在音域[f4,g5]范圍內(nèi)的各音級完成度為0.183,0.409,…,音域范圍外的演唱能力估值為0.08。該歌曲的音域要求是[d4,g5]。
計算出歌曲音級分布直方圖中每個音級的權(quán)重之后,音域匹配度等于用戶在各個音級上的演唱能力評估值乘以歌曲音級分布直方圖的權(quán)重之和。音域匹配度的計算公式的定義具體為:
其中,u(x)表示用戶在音級x上的演唱能力評估值,根據(jù)音級x是否屬于用戶的演唱音域,u(x)取不同的值。具體計算公式定義具體為:
其中,β(x)表示用戶在演唱音域內(nèi)各音級的完成質(zhì)量,min(β(x))表示用戶的音級完成質(zhì)量的最小值。
最終得到用戶u2演唱劉若英所唱的歌曲《當(dāng)愛在靠近》的音域匹配度為0.36。
步驟7:根據(jù)步驟4和步驟5的方法分別得到原唱歌手和演唱者在各個音色嵌入空間中的一組3維音色特征向量,利用與歌手之間的歐氏距離,分別計算與各個嵌入空間中各歌手的音色相似度。以歌手子集c8{梁靜茹,劉若英,陳小春,張學(xué)友,范瑋琪,范曉萱,tank,任賢齊}為例。
音色相似度的計算公式的定義具體為:
tim_sim(u,s)=1-tanh(μ||z1-z2||2)
其中,||z1-z2||2表示兩點之間的歐氏距離,μ為經(jīng)驗系數(shù),取0.05,tanh為雙曲正切函數(shù)。歌手梁靜茹與其他歌手的相似性為{{范瑋琪:0.53},{劉若英:0.55},{范曉萱:0.55},{陳小春:0.22},{tank:0.37},{任賢齊:0.40},{張學(xué)友:0.24}}。
步驟8:在進(jìn)行最終的推薦時,綜合考慮用戶的演唱音域與曲庫中歌曲的音域要求的匹配度以及用戶的音色與曲庫中歌手的音色相似性,計算曲庫中每首歌曲對于該用戶的推薦度。音域匹配度的計算如前述步驟6所示,音色相似度的計算如前述步驟7所示。以用戶u3進(jìn)行實例分析,用戶u3,男性,其演唱音域模型為<0.58,[a3,g5],[0.835,0.602,…],0.26>,即用戶u3在音域[a3,g5]范圍內(nèi)的各音級完成度為0.835,0.302,…,音域范圍外的演唱能力估值為0.26。
推薦度的計算公式的定義具體為:
recom(u,s)=cran_mat(u,s)+(1-c)tim_sim(u,s)
其中,recom(u,s)表示歌曲s對于用戶u的推薦度,ran_mat(u,s)表示歌曲s對于用戶u的音域匹配度,tim_sim(u,s)表示用戶u的音色與歌曲s的原唱歌手音色的相似度,c為常數(shù),0≤c≤1。c取值為0.7。通過歌曲s對用戶u的音域匹配度和音色相似度,計算出其推薦度,最終根據(jù)推薦度,推薦歌曲給用戶。
最終用戶u3推薦度最高的推薦歌曲詳細(xì)信息為:歌曲《十年》,歌手陳奕迅,音域要求[c4,f5]。其音域匹配度為0.84,音色相似度為0.88,最終計算匹配度0.85。圖2給出了用戶u3更全的部分推薦結(jié)果。
以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。