亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種唱歌評(píng)測(cè)方法及系統(tǒng)與流程

文檔序號(hào):11834578閱讀:266來(lái)源:國(guó)知局
一種唱歌評(píng)測(cè)方法及系統(tǒng)與流程

本發(fā)明涉及語(yǔ)音信號(hào)處理技術(shù)領(lǐng)域,特別涉及一種唱歌評(píng)測(cè)方法及系統(tǒng)。



背景技術(shù):

隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,人們可以方便、快捷地實(shí)現(xiàn)隨時(shí)隨地唱歌的需求,越來(lái)越多的KTV或在線歌唱軟件開始針對(duì)用戶的唱歌水平進(jìn)行評(píng)測(cè),從而增加了唱歌的娛樂性。由于受到K歌設(shè)備軟件或硬件等因素的影響,例如:(1)錄音設(shè)備的響應(yīng)時(shí)間與播放時(shí)間存在時(shí)間差;(2)錄音硬件設(shè)備質(zhì)量較差,無(wú)法保證錄音采樣率的穩(wěn)定性;(3)歌曲播放時(shí)間難以獲取,歌曲播放過程中可能無(wú)法準(zhǔn)確讀取各個(gè)時(shí)刻的播放進(jìn)度,如Flash平臺(tái)錄音時(shí),需要等待一段時(shí)間之后才能取得錄音數(shù)據(jù),系統(tǒng)延遲較大;(4)軟件運(yùn)行過程中可能會(huì)由于CPU占用等問題,導(dǎo)致系統(tǒng)運(yùn)行受阻,從而在某個(gè)時(shí)間點(diǎn)出現(xiàn)錄音偏差。這些影響因素容易導(dǎo)致系統(tǒng)所接收的用戶演唱數(shù)據(jù)(也即,用戶演唱歌曲的錄音數(shù)據(jù))與用戶實(shí)際的演唱數(shù)據(jù)之間存在時(shí)間偏差,進(jìn)而導(dǎo)致唱歌評(píng)測(cè)的準(zhǔn)確度較低。因此,在對(duì)用戶演唱歌曲進(jìn)行評(píng)測(cè)前,需要將接收到的用戶演唱數(shù)據(jù)與用戶實(shí)際的演唱數(shù)據(jù)進(jìn)行同步操作。在不考慮演唱技巧的情況下,用戶在演唱歌曲過程中,總是期望能與標(biāo)準(zhǔn)原唱同步,考慮到用戶的實(shí)際演唱時(shí)間難以獲取,可以將用戶演唱歌曲的錄音與標(biāo)準(zhǔn)原唱聲音進(jìn)行同步操作,然后對(duì)同步后的演唱數(shù)據(jù)進(jìn)行評(píng)分,從而保證評(píng)分結(jié)果的準(zhǔn)確性。

現(xiàn)有技術(shù)中,通常采用動(dòng)態(tài)時(shí)間規(guī)整(Dynamic Time Warping,簡(jiǎn)稱DTW)算法將用戶演唱歌曲的錄音和標(biāo)準(zhǔn)原唱聲音進(jìn)行同步。具體而言,通過分別提取用戶演唱歌曲的錄音和標(biāo)準(zhǔn)原唱聲音的頻譜特征(例如:美爾頻率倒譜系數(shù)或基頻特征),然后采用DWT實(shí)現(xiàn)兩者的同步。其中,標(biāo)準(zhǔn)原唱聲音通常為帶有伴奏的歌曲原唱數(shù)據(jù)或通過音樂專業(yè)人士錄制的數(shù)據(jù)。當(dāng)使用帶有伴奏的歌曲原唱時(shí),由于標(biāo)準(zhǔn)原唱中含有伴奏的聲音,會(huì)對(duì)同步操作造成干擾,并且 伴奏聲音也很難準(zhǔn)確消除;當(dāng)使用音樂專業(yè)人士錄制的數(shù)據(jù)時(shí),將導(dǎo)致成本直接提升;并且采用DWT實(shí)現(xiàn)同步操作時(shí),一般是以幀為單位進(jìn)行每步代價(jià)的計(jì)算,導(dǎo)致計(jì)算量較大,很難滿足實(shí)時(shí)評(píng)分的要求。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種唱歌評(píng)測(cè)方法及系統(tǒng),計(jì)算過程簡(jiǎn)單、評(píng)分準(zhǔn)確,能夠滿足實(shí)時(shí)打分的應(yīng)用需求。

本發(fā)明實(shí)施例提供的技術(shù)方案如下:

一方面,提供了一種唱歌評(píng)測(cè)方法,包括:

獲取用戶演唱歌曲中當(dāng)前句子的錄音數(shù)據(jù);

獲取所述當(dāng)前句子的標(biāo)準(zhǔn)樂譜數(shù)據(jù);

在包含所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù);

根據(jù)所述最佳偏移幀數(shù)對(duì)所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,以使所述當(dāng)前句子的錄音數(shù)據(jù)與所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步;

對(duì)平移后的所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分;

根據(jù)用戶演唱歌曲的每個(gè)句子的評(píng)分得到所述用戶演唱歌曲的評(píng)分結(jié)果。

優(yōu)選地,所述在包含所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù)包括:

判斷所述當(dāng)前句子是否為所述歌曲的首句;

如果是,則從所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置開始以預(yù)設(shè)步長(zhǎng)在所述搜索窗長(zhǎng)范圍內(nèi)多次調(diào)整偏移幀數(shù),并根據(jù)每次調(diào)整后的偏移幀數(shù)對(duì)所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,計(jì)算每次平移后的所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值;

將所述音高差值中最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定為所述當(dāng)前句子的最佳偏移幀數(shù)。

優(yōu)選地,所述方法還包括:如果所述當(dāng)前句子不是所述歌曲的首句,且所述當(dāng)前句子為所述歌曲的第j句,j為大于等于2的整數(shù);

計(jì)算第j-1句的音高偏移得分;

如果所述音高偏移得分高于預(yù)設(shè)分值,則根據(jù)預(yù)設(shè)的窗長(zhǎng)調(diào)整因子和所述音高偏移得分對(duì)所述搜索窗長(zhǎng)進(jìn)行調(diào)整。

優(yōu)選地,所述在包含所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù)還包括:

分別獲取第j-1句的錄音數(shù)據(jù)的音高偏移得分和最佳偏移幀數(shù);

獲取第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù),并根據(jù)所述第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù)對(duì)所述第j-1句的錄音數(shù)據(jù)進(jìn)行平移,得到平移后的所述第j-1句的錄音數(shù)據(jù)的起始幀編號(hào);

在包含所述第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)的搜索窗長(zhǎng)范圍內(nèi)查找所述第j-1句的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的最小音高差值所對(duì)應(yīng)的偏移幀數(shù);

根據(jù)所述起始幀編號(hào)和所述最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定所述第j-1句的錄音數(shù)據(jù)的最佳偏移位置;

根據(jù)所述第j-1句的錄音數(shù)據(jù)的最佳偏移幀數(shù)、所述音高偏移得分、所述起始幀編號(hào)和所述最佳偏移位置確定所述當(dāng)前句子的最佳偏移幀數(shù)。

優(yōu)選地,在對(duì)平移后的所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分之前,所述方法還包括:

以音符為單位計(jì)算平移后的所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的誤差距離;

如果所述誤差距離大于預(yù)設(shè)閾值,則以所述預(yù)設(shè)閾值替代所述誤差距離;

根據(jù)所述預(yù)設(shè)閾值和/或所述誤差距離計(jì)算所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的累計(jì)誤差距離。

另一方面,提供了一種唱歌評(píng)測(cè)系統(tǒng),包括:

第一獲取模塊,用于獲取用戶演唱歌曲中當(dāng)前句子的錄音數(shù)據(jù);

第二獲取模塊,用于獲取所述當(dāng)前句子的標(biāo)準(zhǔn)樂譜數(shù)據(jù);

查找模塊,用于在包含所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù);

平移模塊,用于根據(jù)所述最佳偏移幀數(shù)對(duì)所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,以使所述當(dāng)前句子的錄音數(shù)據(jù)與所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步;

第一評(píng)分模塊,用于對(duì)平移后的所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分;

第二評(píng)分模塊,用于根據(jù)用戶演唱歌曲的每個(gè)句子的評(píng)分得到所述用戶演唱歌曲的評(píng)分結(jié)果。

優(yōu)選地,所述查找模塊包括:

第一判斷單元,用于判斷所述當(dāng)前句子是否為所述歌曲的首句;

第一調(diào)整單元,用于在所述第一判斷單元判斷所述當(dāng)前句子為所述歌曲的首句后,從所述當(dāng)前句子的錄音數(shù)據(jù)的起始位置開始以預(yù)設(shè)步長(zhǎng)在所述搜索窗長(zhǎng)范圍內(nèi)多次調(diào)整偏移幀數(shù);

第一平移單元,用于根據(jù)每次調(diào)整后的偏移幀數(shù)對(duì)所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移;

第一計(jì)算單元,用于計(jì)算每次平移后的所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值;

第一確定單元,用于將所述音高差值中最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定為所述當(dāng)前句子的最佳偏移幀數(shù)。

優(yōu)選地,所述系統(tǒng)還包括:

第二計(jì)算單元,用于在所述第一判斷單元判斷所述當(dāng)前句子不是所述歌曲的首句,且判斷所述當(dāng)前句子為所述歌曲的第j句后,j為大于等于2的整數(shù),計(jì)算第j-1句的音高偏移得分;

第二判斷單元,用于判斷所述音高偏移得分是否高于預(yù)設(shè)分值;

第二調(diào)整單元,用于在所述第二判斷單元判斷所述音高偏移得分高于預(yù)設(shè)分值后,根據(jù)預(yù)設(shè)的窗長(zhǎng)調(diào)整因子和所述音高偏移得分對(duì)所述搜索窗長(zhǎng)進(jìn)行調(diào)整。

優(yōu)選地,所述查找模塊還包括:

第一獲取單元,用于分別獲取第j-1句的錄音數(shù)據(jù)的音高偏移得分和最佳偏移幀數(shù);

第二獲取單元,用于獲取第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù);

第二平移單元,用于根據(jù)所述第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù)對(duì)所述第j-1句的錄音數(shù)據(jù)進(jìn)行平移,得到平移后的所述第j-1句的錄音數(shù)據(jù)的起始幀編號(hào);

查找單元,用于在包含所述第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)的搜索窗長(zhǎng) 范圍內(nèi)查找所述第j-1句的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的最小音高差值所對(duì)應(yīng)的偏移幀數(shù);

第二確定單元,用于根據(jù)所述起始幀編號(hào)和所述最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定所述第j-1句的錄音數(shù)據(jù)的最佳偏移位置;

第三確定單元,用于根據(jù)所述第j-1句的錄音數(shù)據(jù)的最佳偏移幀數(shù)、所述音高偏移得分、所述起始幀編號(hào)和所述最佳偏移位置確定所述當(dāng)前句子的最佳偏移幀數(shù)。

優(yōu)選地,所述系統(tǒng)還包括:

第一計(jì)算模塊,用于在所述第一評(píng)分模塊對(duì)平移后的所述當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分之前,以音符為單位計(jì)算平移后的所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的誤差距離;

判斷模塊,用于判斷所述誤差距離是否大于預(yù)設(shè)閾值;

替代模塊,用于在所述判斷模塊判斷所述誤差距離大于預(yù)設(shè)閾值后,以所述預(yù)設(shè)閾值替代所述誤差距離;

第二計(jì)算模塊,用于根據(jù)所述預(yù)設(shè)閾值和/或所述誤差距離計(jì)算所述當(dāng)前句子的錄音數(shù)據(jù)和所述標(biāo)準(zhǔn)樂譜數(shù)據(jù)的累計(jì)誤差距離。

本發(fā)明實(shí)施例提供的唱歌評(píng)測(cè)方法及系統(tǒng),通過在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù),并根據(jù)最佳偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,使當(dāng)前句子的錄音數(shù)據(jù)與標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步,然后對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分,計(jì)算過程簡(jiǎn)單,評(píng)分結(jié)果準(zhǔn)確、及時(shí),能夠滿足實(shí)時(shí)打分的應(yīng)用需求。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例提供的一種唱歌評(píng)測(cè)方法的流程圖;

圖2是本發(fā)明實(shí)施例提供的第二種唱歌評(píng)測(cè)方法的流程圖;

圖3是本發(fā)明實(shí)施例提供的第三種唱歌評(píng)測(cè)方法的流程圖;

圖4是本發(fā)明實(shí)施例提供的一種查找最佳偏移幀數(shù)的流程圖;

圖5是本發(fā)明實(shí)施例提供的一種累計(jì)誤差計(jì)算方法的流程圖;

圖6是本發(fā)明實(shí)施例提供的一種唱歌評(píng)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖;

圖7是本發(fā)明實(shí)施例提供的第二種唱歌評(píng)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖;

圖8是本發(fā)明實(shí)施例提供的第三種唱歌評(píng)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖;

圖9是本發(fā)明實(shí)施例提供的第四種唱歌評(píng)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖;

圖10是本發(fā)明實(shí)施例提供的第五種唱歌評(píng)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說(shuō)明。

本發(fā)明實(shí)施例提供了一種唱歌評(píng)測(cè)方法,如圖1所示,包括以下步驟:

步驟101:獲取用戶演唱歌曲中當(dāng)前句子的錄音數(shù)據(jù)。

具體地,可以采用麥克風(fēng)等輸入設(shè)備對(duì)用戶演唱歌曲進(jìn)行數(shù)據(jù)采集。

步驟102:獲取當(dāng)前句子的標(biāo)準(zhǔn)樂譜數(shù)據(jù)。

步驟103:在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù)。

其中,可以通過端點(diǎn)檢測(cè)技術(shù)等進(jìn)行錄音數(shù)據(jù)的起始位置的確定,搜索窗長(zhǎng)可以預(yù)先設(shè)置好,例如,為錄音數(shù)據(jù)的起始位置的左右20幀范圍,從而在該搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù)。

具體而言,如圖2所示,在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù)包括:

步驟201:判斷當(dāng)前句子是否為歌曲的首句。

具體可以根據(jù)歌曲的標(biāo)記文件判斷當(dāng)前句子是否為歌曲的首句。

如果是,則執(zhí)行步驟202:從當(dāng)前句子的錄音數(shù)據(jù)的起始位置開始以預(yù)設(shè)步長(zhǎng)在搜索窗長(zhǎng)范圍內(nèi)多次調(diào)整偏移幀數(shù),并根據(jù)每次調(diào)整后的偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,計(jì)算每次平移后的當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值。

其中,預(yù)設(shè)步長(zhǎng)可以根據(jù)實(shí)際需要進(jìn)行設(shè)定,例如設(shè)置為2幀,從而可以在當(dāng)前句子的錄音數(shù)據(jù)的-20幀到20幀范圍內(nèi),每次移動(dòng)2幀,并計(jì)算每次平移后的當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值。

具體而言,對(duì)于一個(gè)具體位置的用戶演唱歌曲的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值SubPitchj={subPitchj1,subPitchj2,...subPitchjk},則用戶演唱數(shù)據(jù)中第j句與標(biāo)準(zhǔn)樂譜第j句之間在移動(dòng)shiftjk幀時(shí)的音高差值subPitchjk的計(jì)算方法如公式(1)所示:

<mrow> <msub> <mi>subPitch</mi> <mi>jk</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>N</mi> <mi>j</mi> </msub> </munderover> <mo>|</mo> <msub> <mi>UserPitch</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>shift</mi> <mi>jk</mi> </msub> <mo>)</mo> </mrow> </mrow> </msub> <mo>-</mo> <msub> <mi>TemplatePitch</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>shift</mi> <mi>jk</mi> </msub> <mo>)</mo> </mrow> </mrow> </msub> <mo>|</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中,對(duì)于首句j=1,subPitchjk表示用戶演唱數(shù)據(jù)中第j句與標(biāo)準(zhǔn)樂譜第j句之間在移動(dòng)shiftjk幀時(shí)的音高差值,UserPitchj(i+shiftjk)表示第j句用戶演唱數(shù)據(jù)中第i幀移動(dòng)shiftjk幀后的音高值,TemplatePitchj(i+shiftjk)表示第j句標(biāo)準(zhǔn)樂譜第i幀移動(dòng)shiftjk幀后的音高值,Nj表示第j句用戶演唱數(shù)據(jù)的總幀數(shù)。shiftjk表示第j句用戶演唱數(shù)據(jù)第k次移動(dòng)的偏移幀數(shù),例如,步長(zhǎng)為2時(shí),每次移動(dòng)的偏移幀數(shù):第一次移動(dòng)2幀,第二次移動(dòng)4幀,第三次移動(dòng)6幀等。

步驟203:將音高差值中最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定為當(dāng)前句子的最佳偏移幀數(shù)。

將音高差值SubPitch1中最小音高差值對(duì)應(yīng)的偏移幀數(shù)shiftjk,確定為用戶演唱數(shù)據(jù)的當(dāng)前句子的錄音數(shù)據(jù)的最佳偏移幀數(shù)BestShift1

如果當(dāng)前句子不是歌曲的首句,假設(shè)當(dāng)前句子為歌曲的第j句,j為大于等于2的整數(shù),如圖3所示,上述唱歌評(píng)測(cè)方法還包括:

步驟301:計(jì)算第j-1句的音高偏移得分。

在本發(fā)明實(shí)施例中,如果當(dāng)前句子為歌曲的第j句,則j-1句為當(dāng)前句子的上一句子,也即計(jì)算第j-1句的音高偏移得分,具體計(jì)算方式如公式(2)所示:

<mrow> <msub> <mi>ScorePitch</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>-</mo> <mfrac> <mrow> <mi>min</mi> <mo>{</mo> <msub> <mi>SubPitch</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>}</mo> </mrow> <mi>MAX</mi> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

其中,min{SubPitchj-1}是指SubPitchj-1中的最小值,MAX指比min{SubPitchj-1} 還大的半音數(shù),如MAX=4,即4個(gè)半音,一般根據(jù)經(jīng)驗(yàn)取值。由公式(2)可知,當(dāng)用戶演唱數(shù)據(jù)與標(biāo)準(zhǔn)樂譜差較多時(shí),音高偏移得分ScorePitchj-1較小,反之,會(huì)較大。

步驟302:判斷音高偏移得分是否高于預(yù)設(shè)分值。

如果是,則執(zhí)行步驟303:根據(jù)預(yù)設(shè)的窗長(zhǎng)調(diào)整因子和音高偏移得分對(duì)搜索窗長(zhǎng)進(jìn)行調(diào)整。

第j句用戶演唱語(yǔ)音幀最佳起始位置的搜索窗長(zhǎng)WinLenj,計(jì)算方法如公式(3)所示:

WinLenj=WinLenj-1-WinLenj-1*Wratio*ScorePitchj-1,j>1 (3)

其中,Wratio為窗長(zhǎng)調(diào)整因子,取值可以根據(jù)實(shí)際應(yīng)用情況而定,ScorePitchj-1為第j-1句的音高偏移得分。由公式(3)可知,當(dāng)用戶演唱數(shù)據(jù)的第j-1句的音高偏移得分較小時(shí),說(shuō)明用戶演唱數(shù)據(jù)與標(biāo)準(zhǔn)樂譜的偏移較大,搜索窗長(zhǎng)調(diào)整的幅度要小一些,防止找不到最佳偏移;

如果否,搜索窗長(zhǎng)不進(jìn)行調(diào)整,即WinLenj=WinLenj-1,其中,j為大于等于2的整數(shù)。

如圖4所示,在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù),還包括:

步驟401:分別獲取第j-1句的錄音數(shù)據(jù)的音高偏移得分和最佳偏移幀數(shù)。

步驟402:獲取第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù),并根據(jù)第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù)對(duì)第j-1句的錄音數(shù)據(jù)進(jìn)行平移,得到平移后的第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)。

具體而言,平移后的第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)的計(jì)算方法如公式(4)所示,其中,j為大于等于2的整數(shù):

aftTransPosj-1=preTransPosj-1+BestShiftj-2 (4)

其中,preTransFj-1為第j-1句用戶演唱語(yǔ)音幀平移前的起始幀編號(hào),preTransPosj-1為第j-1句用戶演唱語(yǔ)音幀平移后的起始幀編號(hào),BestShiftj-2為第j-2句的最佳偏移幀數(shù),當(dāng)j=2時(shí),aftTransPosj-1=preTransPosj-1

步驟403:在包含第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)的搜索窗長(zhǎng)范圍內(nèi)查找第j-1句的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的最小音高差值所對(duì)應(yīng)的偏移幀數(shù)。

在本發(fā)明實(shí)施例中,根據(jù)搜索窗長(zhǎng)WinLenj-1,在平移后的用戶演唱語(yǔ)音起始幀編號(hào)aftTransPosj-1基礎(chǔ)上,搜索第j-1句用戶演唱語(yǔ)音幀與標(biāo)準(zhǔn)樂譜數(shù)據(jù)的最小音高差值所對(duì)應(yīng)的偏移幀數(shù)shift(j-1)k

步驟404:根據(jù)起始幀編號(hào)和最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定第j-1句的錄音數(shù)據(jù)的最佳偏移位置bestBeginPosj-1,如公式(5)所示:

bestBeginPosj-1=aftTransPosj-1+shift(j-1)k (5)

公式(5)中的j為大于等于2的整數(shù),k為大于等于1的整數(shù)。

步驟405:根據(jù)第j-1句的錄音數(shù)據(jù)的最佳偏移幀數(shù)、音高偏移得分、起始幀編號(hào)和最佳偏移位置確定當(dāng)前句子的最佳偏移幀數(shù)。

具體而言,根據(jù)公式(6)可以計(jì)算得出當(dāng)前句子(第j句)的最佳偏移幀數(shù)BestShiftj,其中,j為大于等于2的整數(shù)。

BestShiftj=BestShiftj-1+ScorePitchj-1*(bestBeginPosj-1-aftTransPosj-1) (6)

其中,公式(6)中的BestShiftj-1為第j-1句的最佳偏移幀數(shù),ScorePitchj-1為第j-1句的音高偏移得分,bestBeginPosj-1為第j-1句的最佳偏移位置,aftTransPosj-1為第j-1句平移后的起始幀編號(hào)。

步驟104:根據(jù)最佳偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,以使當(dāng)前句子的錄音數(shù)據(jù)與標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步。

步驟105:對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分。

在本發(fā)明的另一個(gè)實(shí)施例中,如圖5所示,在對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分之前,上述唱歌評(píng)測(cè)方法還包括:

步驟501:以音符為單位計(jì)算平移后的當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的誤差距離;

步驟502:判斷誤差距離是否大于預(yù)設(shè)閾值;

步驟503:如果判斷上述誤差距離大于預(yù)設(shè)閾值,則以預(yù)設(shè)閾值替代誤差距離,否則保持誤差距離不變;

步驟504:根據(jù)預(yù)設(shè)閾值和/或誤差距離計(jì)算當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的累計(jì)誤差距離。

具體而言,累計(jì)誤差距離Dj可以通過公式(7)計(jì)算得到:

<mrow> <msub> <mi>D</mi> <mi>j</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mi>N</mi> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>N</mi> <mi>j</mi> </msub> </munderover> <mfrac> <mn>1</mn> <msub> <mi>N</mi> <mi>i</mi> </msub> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>N</mi> <mi>ji</mi> </msub> </munderover> <mi>min</mi> <mrow> <mo>(</mo> <mo>|</mo> <msubsup> <mi>note</mi> <mi>ji</mi> <mi>k</mi> </msubsup> <mo>-</mo> <msubsup> <mi>user</mi> <mi>ji</mi> <mi>k</mi> </msubsup> <mo>|</mo> <mo>,</mo> <mi>PENALTY</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

其中,N表示第j句中的音符總數(shù),Nji表示第j句用戶語(yǔ)音幀第i個(gè)音符標(biāo)準(zhǔn)的時(shí)長(zhǎng)幀數(shù),表示第j句標(biāo)準(zhǔn)樂譜中第i個(gè)音符第k幀的音高值,表示第j句用戶演唱語(yǔ)音幀第i個(gè)音符第k幀的音高值,PENALTY表示用戶演唱的音高值和標(biāo)準(zhǔn)音高值差距的上限,所述上限主要為了防止用戶在一句中唱錯(cuò)了一個(gè)音符或漏唱了一個(gè)音符,整句的距離過大,提升評(píng)分算法的魯棒性。

步驟106:根據(jù)用戶演唱歌曲的每個(gè)句子的評(píng)分得到用戶演唱歌曲的評(píng)分結(jié)果。

本發(fā)明實(shí)施例提供的唱歌評(píng)測(cè)方法,通過在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù),并根據(jù)最佳偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,使當(dāng)前句子的錄音數(shù)據(jù)與標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步,然后對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分,計(jì)算過程簡(jiǎn)單,評(píng)分結(jié)果準(zhǔn)確、及時(shí),能夠滿足實(shí)時(shí)打分的應(yīng)用需求。

本發(fā)明實(shí)施例另外提供一種唱歌評(píng)測(cè)系統(tǒng),如圖6所示,包括:

第一獲取模塊601,用于獲取用戶演唱歌曲中當(dāng)前句子的錄音數(shù)據(jù);

第二獲取模塊602,用于獲取當(dāng)前句子的標(biāo)準(zhǔn)樂譜數(shù)據(jù);

查找模塊603,用于在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù);

平移模塊604,用于根據(jù)最佳偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,以使當(dāng)前句子的錄音數(shù)據(jù)與標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步;

第一評(píng)分模塊605,用于對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分;

第二評(píng)分模塊606,用于根據(jù)用戶演唱歌曲的每個(gè)句子的評(píng)分得到用戶演唱歌曲的評(píng)分結(jié)果。

如圖7所示,上述查找模塊603包括:

第一判斷單元701,用于判斷當(dāng)前句子是否為歌曲的首句;

第一調(diào)整單元702,用于在第一判斷單元701判斷當(dāng)前句子為歌曲的首句后,從當(dāng)前句子的錄音數(shù)據(jù)的起始位置開始以預(yù)設(shè)步長(zhǎng)在搜索窗長(zhǎng)范圍內(nèi)多次 調(diào)整偏移幀數(shù);

第一平移單元703,用于根據(jù)每次調(diào)整后的偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移;

第一計(jì)算單元704,用于計(jì)算每次平移后的當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的音高差值;

第一確定單元705,用于將音高差值中最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定為當(dāng)前句子的最佳偏移幀數(shù)。

如圖8所示,上述唱歌評(píng)測(cè)系統(tǒng)進(jìn)一步還包括:

第二計(jì)算單元706,用于在第一判斷單元701判斷當(dāng)前句子不是歌曲的首句,且判斷當(dāng)前句子為歌曲的第j句后,j為大于等于2的整數(shù),計(jì)算第j-1句的音高偏移得分;

第二判斷單元707,用于判斷音高偏移得分是否高于預(yù)設(shè)分值;

第二調(diào)整單元708,用于在第二判斷單元707判斷音高偏移得分高于預(yù)設(shè)分值后,根據(jù)預(yù)設(shè)的窗長(zhǎng)調(diào)整因子和音高偏移得分對(duì)搜索窗長(zhǎng)進(jìn)行調(diào)整。

在本發(fā)明的另外一個(gè)實(shí)施例中,如圖9所示,查找模塊603還包括:

第一獲取單元709,用于分別獲取第j-1句的錄音數(shù)據(jù)的音高偏移得分和最佳偏移幀數(shù);

第二獲取單元710,用于獲取第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù);

第二平移單元711,用于根據(jù)第j-2句的錄音數(shù)據(jù)的最佳偏移幀數(shù)對(duì)所述第j-1句的錄音數(shù)據(jù)進(jìn)行平移,得到平移后的第j-1句的錄音數(shù)據(jù)的起始幀編號(hào);

查找單元712,用于在包含第j-1句的錄音數(shù)據(jù)的起始幀編號(hào)的搜索窗長(zhǎng)范圍內(nèi)查找第j-1句的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的最小音高差值所對(duì)應(yīng)的偏移幀數(shù);

第二確定單元713,用于根據(jù)起始幀編號(hào)和最小音高差值所對(duì)應(yīng)的偏移幀數(shù)確定第j-1句的錄音數(shù)據(jù)的最佳偏移位置;

第三確定單元714,用于根據(jù)第j-1句的錄音數(shù)據(jù)的最佳偏移幀數(shù)、音高偏移得分、起始幀編號(hào)和最佳偏移位置確定當(dāng)前句子的最佳偏移幀數(shù)。

如圖10所示,上述唱歌評(píng)測(cè)系統(tǒng)進(jìn)一步還包括:

第一計(jì)算模塊801,用于在第一評(píng)分模塊605對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分之前,以音符為單位計(jì)算平移后的當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的誤差距離;

判斷模塊802,用于判斷誤差距離是否大于預(yù)設(shè)閾值;

替代模塊803,用于在判斷模塊802判斷誤差距離大于預(yù)設(shè)閾值后,以預(yù)設(shè)閾值替代所述誤差距離;

第二計(jì)算模塊804,用于根據(jù)預(yù)設(shè)閾值和/或誤差距離計(jì)算當(dāng)前句子的錄音數(shù)據(jù)和標(biāo)準(zhǔn)樂譜數(shù)據(jù)的累計(jì)誤差距離。

本發(fā)明實(shí)施例提供的唱歌評(píng)測(cè)系統(tǒng),通過在包含當(dāng)前句子的錄音數(shù)據(jù)的起始位置的搜索窗長(zhǎng)范圍內(nèi)查找最佳偏移幀數(shù),并根據(jù)最佳偏移幀數(shù)對(duì)當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行平移,使當(dāng)前句子的錄音數(shù)據(jù)與標(biāo)準(zhǔn)樂譜數(shù)據(jù)在時(shí)間上同步,然后對(duì)平移后的當(dāng)前句子的錄音數(shù)據(jù)進(jìn)行評(píng)分,計(jì)算過程簡(jiǎn)單,評(píng)分結(jié)果準(zhǔn)確、及時(shí),能夠滿足實(shí)時(shí)打分的應(yīng)用需求。

本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的模塊或單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1