劉旺
摘要:近年來,娛樂消費在大眾消費中的比重逐年增加??ɡ璒K作為大眾喜聞樂見的娛樂方式,被廣泛應(yīng)用在智能手機、智能家庭以及經(jīng)營性娛樂場所。但是,傳統(tǒng)的卡拉OK應(yīng)用系統(tǒng)只有單一的點唱功能,缺乏娛樂互動的趣味性。因此,需要設(shè)計一款基于卡拉OK的評分系統(tǒng),實現(xiàn)從點唱到娛樂互動的全新體驗。
關(guān)鍵詞:音準(zhǔn)評分;卡拉OK;音高;演唱;特征文件
卡拉OK系統(tǒng)又叫做卡拉OK點歌系統(tǒng),是集點唱為一體的娛樂設(shè)備。在演唱過程中,屏幕上同時顯示歌曲MTV和歌詞,歌詞與伴奏保持同步,方便演唱者踏準(zhǔn)節(jié)奏?,F(xiàn)有的演唱評分技術(shù)一般是基于音準(zhǔn)來進行評判的。因此,設(shè)計一個卡拉OK評分系統(tǒng)的重點就是如何將音準(zhǔn)評分技術(shù)和卡拉OK系統(tǒng)進行有機的融合。
1技術(shù)分析
音準(zhǔn)的目的是使得歌唱和/或樂器演奏中所發(fā)的音高,能與一定律制的音高相符。音準(zhǔn)評分技術(shù)是一種以聲音作為輸入數(shù)據(jù),經(jīng)處理器進行運算得到量化參數(shù)后,最終由顯示單元圖形界面反饋給用戶,使其能夠?qū)ψ约貉莩曇暨M行調(diào)整以符合標(biāo)準(zhǔn)要求的技術(shù)。圖1為音準(zhǔn)評分流程圖。
音準(zhǔn)特征文件是由歌譜制作而成,以句為單位,詳細地記錄了每一句中的每一個歌詞文字以及對應(yīng)的音高,以及每個音高的起止時間點以及音高值。
2方案設(shè)計
在業(yè)務(wù)流程中,用戶輸入聲音,系統(tǒng)反饋實時評分效果,以指導(dǎo)用戶在下個時間點輸入正確的聲音,以此循環(huán)往復(fù)。因此,描述評分操作業(yè)務(wù)流程可以以用戶輸入聲音為起點,用戶聲音通過麥克風(fēng)采集后轉(zhuǎn)換為數(shù)字語音信號數(shù)據(jù),系統(tǒng)通過語音信號處理分析其短時語音基頻,并根據(jù)頻率、音高轉(zhuǎn)換關(guān)系得到對應(yīng)時間點音高參數(shù),這里的時間點來源于卡拉OK系統(tǒng)播放音頻文件得到的播放時間,整個系統(tǒng)都以該時間線為基準(zhǔn)處理事件的時間對應(yīng)關(guān)系。在播放音頻的同時,系統(tǒng)將解析音準(zhǔn)特征文件,以獲得標(biāo)準(zhǔn)的音高、時間對應(yīng)關(guān)系,這是評分的基準(zhǔn),用戶輸入的語音經(jīng)過處理后得到的音高參數(shù)將與該基準(zhǔn)對應(yīng)時間點音高值進行匹配,從而按照匹配度計算得分。系統(tǒng)的演唱界面部分則負責(zé)實時向用戶展示當(dāng)前時間點的演唱情況,包括歌詞、標(biāo)準(zhǔn)音高序列、用戶演唱音高,以及實時得分信息等。用戶將根據(jù)演唱界面當(dāng)前的演唱效果作為指導(dǎo),從而決定下個時間點的輸入聲音。該循環(huán)將重復(fù)直至歌曲文件播放完畢,此時系統(tǒng)將計算最終得分,并將結(jié)果通過演唱界面展示給用戶。
設(shè)計方案需要包含以下4個元素1)音高音長信息:根據(jù)歌曲歌譜將對應(yīng)時刻音高,以及時長表現(xiàn)在五線譜上供演唱者參考;2)歌詞信息:根據(jù)歌曲歌譜將對應(yīng)語句歌詞文字顯示在演唱界面供演唱者參考;3)演唱游標(biāo):指示演唱者當(dāng)前演唱進度,并反映演唱者聲音的量化音高;4)評分狀態(tài):演唱者實時的得分評價,可包括得分、點評、加成等各種狀態(tài)。
在整體形態(tài)上,一般有兩種方案,如上圖。設(shè)計方案1是將演唱游標(biāo)固定,音高、歌詞信息在界面上從右向左水平移動。這個方案的優(yōu)勢是演唱者視線可以專注于固定的游標(biāo)區(qū)域,劣勢是當(dāng)一首卡拉OK歌曲節(jié)奏比較快時,信息的運動速度也很快,演唱者瀏覽信息的速度跟不上信息自身運動速度。設(shè)計方案2是將當(dāng)前句的音高、歌詞,以及下一句的歌詞固定顯示在屏幕上,游標(biāo)隨著演唱進度水平向右移動。這樣做的好處是演唱者一次性就可以把當(dāng)前句和下一句歌詞都提前瀏覽,便于演唱;另一方面,由于不需要移動大量的信息,減少了信息刷新面積,節(jié)省了大量CPU的計算消耗,可以使系統(tǒng)更靈活的運用在嵌入式領(lǐng)域以及其他低功耗的應(yīng)用領(lǐng)域。因此本文將采納第二種方案作詳細介紹。具體的實現(xiàn)方式如下:
首先需要在屏幕上顯示當(dāng)前句歌詞的標(biāo)準(zhǔn)音高。標(biāo)準(zhǔn)音高信息一般是由歌曲歌譜制作而成的音準(zhǔn)特征文件中讀取。音準(zhǔn)特征文件包含了歌曲中每一個音的音高、音長、時值以及對應(yīng)時間點的歌詞信息。用橫向的長條空槽來表示音高和音長。其中空槽的顯示位置高低表示音高、空槽的長度表示音長。在垂直顯示方向上,通過遍歷歌曲的所有標(biāo)準(zhǔn)音高值,得到其中最大值以及最小值,該最小值映射到屏幕上這首歌曲的音高顯示區(qū)域的底部,最大值對應(yīng)顯示區(qū)域的頂部,其他標(biāo)準(zhǔn)音高值的顯示位置,通過與該最小值的差值在該最大、最小值范圍內(nèi)的比例關(guān)系確定其垂直方向顯示位置。在水平顯示方向上,以當(dāng)前歌詞行的第一個音高的起始時間作為起始時間點,以當(dāng)前行的最后一個音高的結(jié)束時間作為行結(jié)束時間,并將二者差值作為本行總持續(xù)時間,第一個音高(空槽)的左端點布置在顯示區(qū)域左端開始位置,最后一個音高的右端點布置在顯示區(qū)域右端結(jié)束位置,其他音高分別根據(jù)自身的開始、結(jié)束時間與本行起始時間點的差值在本行總持續(xù)時間內(nèi)的比例關(guān)系確定其左、右端點在水平方向的顯示位置。
其次是歌詞的顯示。歌詞分為當(dāng)前行歌詞信息和下一行歌詞信息。顯示兩句歌詞,可以解決用戶演唱連貫性的問題,唱當(dāng)前行歌詞的時候就可以快速預(yù)覽下一行歌詞內(nèi)容。另外,歌詞與音高在音準(zhǔn)特征文件中就設(shè)計成具有對應(yīng)關(guān)系,在顯示的時候,當(dāng)前行歌詞與對應(yīng)的音高具有相同的時間軸,即先顯示音高空槽,再在空槽的左端點下方顯示對應(yīng)的歌詞文字。這樣用戶在演唱的時候就能把詞曲對應(yīng)起來,不容易唱錯。
最后是結(jié)果的展示。結(jié)果主要由游標(biāo)、空槽填充以及得分來表示。其中游標(biāo)用于表示演唱者的當(dāng)前音高,空槽的填充表示用戶在對應(yīng)音高上的演唱準(zhǔn)確度,得分表示整首歌的當(dāng)前得分。游標(biāo)隨著演唱時間水平向右運動,根據(jù)實時采集的人聲信號計算得到實時音高值,判斷音高值的變化,改變游標(biāo)垂直方向位置,從而調(diào)整演唱游標(biāo)與基準(zhǔn)音高值的相對位置展示關(guān)系;當(dāng)實時音高值低于基準(zhǔn)音高值時,演唱游標(biāo)在所展示的基準(zhǔn)音高值下面;當(dāng)高于基準(zhǔn)音高值時,展示在上面。如果判定實時音高值與基準(zhǔn)音高值保持匹配,則實時填充空槽,空槽填充的越多,表示演唱越準(zhǔn)確。得分是對最終演唱結(jié)果的預(yù)估分數(shù),在每句演唱完成后,分析當(dāng)前歌曲已完成的音準(zhǔn)情況,給出總分。一般來說音準(zhǔn)完成度越高,分值越高。
3游標(biāo)抖動處理
演唱者的真實音高并不穩(wěn)定,直接根據(jù)音高值轉(zhuǎn)換為豎直方向坐標(biāo)并繪制演唱游標(biāo),會導(dǎo)致演唱游標(biāo)出現(xiàn)抖動、跳動等運動軌跡,很大程度偏離上一軌跡點或標(biāo)準(zhǔn)音高在界面上的位置,出現(xiàn)在演唱者非預(yù)期的位置上,不利于演唱者觀察演唱游標(biāo)。另外,演唱音高的變化是一個漸變過程,而演唱游標(biāo)存在的抖動、跳動等綜合界面表現(xiàn)與該規(guī)律不吻合,導(dǎo)致演唱者只能獲得一種不完全符合自身發(fā)音規(guī)律的視覺感受。針對以上問題,設(shè)計了一套音準(zhǔn)抖動修正的方法。該方法的主要思想是根據(jù)前一時刻演唱游標(biāo)的坐標(biāo)、當(dāng)前時刻演唱音高值(“當(dāng)前時刻”即歌曲演唱進度的任意一時刻)、前一時刻(“前一時刻”即“當(dāng)前時刻”的上一刻)基準(zhǔn)音高值以及當(dāng)前時刻基準(zhǔn)音高值四者的關(guān)系,應(yīng)用特定的算法,平滑修正當(dāng)前游標(biāo)坐標(biāo)值,使得演唱游標(biāo)的運動軌跡得到平滑展示。具體分為以下四種情況:
第一種情況:前一時刻演唱游標(biāo)的坐標(biāo)高于前一時刻的標(biāo)準(zhǔn)音高坐標(biāo),并且當(dāng)前時刻演唱音高值小于當(dāng)前時刻的標(biāo)準(zhǔn)音高值;則當(dāng)前時刻演唱游標(biāo)坐標(biāo)=當(dāng)前時刻標(biāo)準(zhǔn)音高坐標(biāo)+(當(dāng)前時刻演唱音高值對應(yīng)坐標(biāo)一當(dāng)前時刻標(biāo)準(zhǔn)音高坐標(biāo))*因子a1;所述因子a1為大于0,小于等于1的預(yù)設(shè)值;(例如:此處因子a1為1/8,該因子a1是0~1可調(diào),未調(diào)整情況下為1,即存在演唱游標(biāo)抖動、跳動)。
第二種情況:前一時刻演唱游標(biāo)的坐標(biāo)低于前一時刻的標(biāo)準(zhǔn)音高坐標(biāo),并且當(dāng)前時刻演唱音高值大于當(dāng)前時刻的標(biāo)準(zhǔn)音高值;則當(dāng)前時刻演唱游標(biāo)坐標(biāo)=當(dāng)前時刻標(biāo)準(zhǔn)音高坐標(biāo)+(當(dāng)前時刻演唱音高值對應(yīng)坐標(biāo)一當(dāng)前時刻標(biāo)準(zhǔn)音高坐標(biāo))*因子a1。
第三種情況:前一時刻演唱游標(biāo)的坐標(biāo)高于或等于前一時刻的標(biāo)準(zhǔn)音高坐標(biāo),并且當(dāng)前時刻演唱音高大于當(dāng)前時刻的標(biāo)準(zhǔn)音高值;則當(dāng)前時刻演唱游標(biāo)坐標(biāo)=前一時刻演唱游標(biāo)的坐標(biāo)+(當(dāng)前時刻演唱音高值對應(yīng)坐標(biāo)一前一時刻演唱游標(biāo)的坐標(biāo))*因子a2;所述因子a2為大于0,小于等于1的預(yù)設(shè)值;(例如:此處因子a2為1/6,該因子a2是0~1可調(diào),未調(diào)整情況下為1,即存在演唱游標(biāo)抖動、跳動)。
第四種情況:前一時刻演唱游標(biāo)的坐標(biāo)低于或等于前一時刻的標(biāo)準(zhǔn)音高坐標(biāo),并且當(dāng)前時刻演唱音高小于當(dāng)前時刻的標(biāo)準(zhǔn)音高值;則當(dāng)前時刻演唱游標(biāo)坐標(biāo)=前一時刻演唱游標(biāo)的坐標(biāo)+(當(dāng)前時刻演唱音高值對應(yīng)坐標(biāo)一前一時刻演唱游標(biāo)的坐標(biāo))*因子a2。
修正后的效果如圖:
4總結(jié)
本文設(shè)計了一套基于卡拉0K的評分應(yīng)用,滿足用戶演唱評分的需求,增強了卡拉0K的娛樂互動性。演唱評分系統(tǒng)的實現(xiàn)非常復(fù)雜,涉及特征文件制作,聲音采集、演唱特征提取、分值算法以及應(yīng)用等等。限于篇幅,只能在應(yīng)用層面上進行展開,提出了應(yīng)用整體方案設(shè)計,以及其中關(guān)鍵難點音準(zhǔn)抖動的顯示修正方法,僅供參考。