張學(xué)旗
(臺州學(xué)院, 藝術(shù)與設(shè)計學(xué)院,浙江,臺州 318000)
語義分析是編譯過程中的一個邏輯階段,其任務(wù)是對審查結(jié)構(gòu)上正確的源程序進(jìn)行上下文有關(guān)性質(zhì)審查,目的是審查源程序是否存在語義錯誤,從而為代碼的生成階段收集類型信息。例如語義分析的工作是實(shí)現(xiàn)類型審查,對各個算符進(jìn)行審查,觀察是否存在語言規(guī)范所允許的運(yùn)算對象,在不符合語言的規(guī)范時,編譯程序報告錯誤。它也是編譯程序中最有實(shí)質(zhì)性的工作,解釋源程序語義,從而引發(fā)源程序的質(zhì)變化[1]。
音樂是利用組織音所構(gòu)成的一種聽覺意象,所以可以用來表述社會現(xiàn)實(shí)生活以及思想感情的一種藝術(shù)形式,也是最能夠即時打動人的藝術(shù)形式之一。同時,音樂也是由很多復(fù)雜元素構(gòu)成的,所以在進(jìn)行比賽時,人工評委很有可能會出現(xiàn)判斷錯誤的情況,為此本文提出一種語義相關(guān)性數(shù)據(jù)庫構(gòu)建下音樂比賽評分方法多模塊化設(shè)計,主要是為了系統(tǒng)化地對音樂選手進(jìn)行評分,使其結(jié)果更加客觀有效。
在潛在語義空間中構(gòu)造評分標(biāo)準(zhǔn),并在此語義空間中計算每個演奏者的音樂水平與標(biāo)準(zhǔn)答案之間的語義關(guān)聯(lián),利用VSM(語音業(yè)務(wù)模塊)表示主觀音樂水平的標(biāo)準(zhǔn)答案,而在VSM模型內(nèi),一個選手的標(biāo)準(zhǔn)水平,能夠看作是通過互相獨(dú)立若干音樂構(gòu)成的集合,就是SAj=(st1j,st2j,…,stmj)T,相對于每首音樂st1j,依據(jù)在標(biāo)準(zhǔn)答案水平內(nèi)所隱藏的重要程度和隱含語義,賦予固定權(quán)值,標(biāo)準(zhǔn)答案的水平特征向量為(ωt1j,ωt2j,…,ωtmj)T,通過權(quán)重評價函數(shù)tf×idf對各個特征項(xiàng)權(quán)重進(jìn)行定義[2],具體計算式為
(1)
式中,tfij表示項(xiàng)sti處于標(biāo)準(zhǔn)答案水平SAj內(nèi)的頻數(shù),idfi=log(N/ni)表示項(xiàng)法反比水平頻數(shù),N表示比賽主觀評價數(shù)量,ni表示項(xiàng)sti的水平頻數(shù),在音樂水平內(nèi)全部主觀比賽項(xiàng)目標(biāo)準(zhǔn)答案矩陣為
(2)
式中,ωtii表示第i行第i詞項(xiàng)對每個主觀評價水平答案貢獻(xiàn),而第j列表示第j個主觀比賽項(xiàng)目標(biāo)準(zhǔn)答案SAj內(nèi)的各個詞項(xiàng)貢獻(xiàn)。
通過潛在語義索引的方式,對比賽內(nèi)全部項(xiàng)目標(biāo)準(zhǔn)答案進(jìn)行構(gòu)建—矩陣潛在的語義空間。采用奇異值(SVD)的分解方法,計算A的解[3],具體為
A=U∑VT
(3)
(4)
通常來說,現(xiàn)場音樂評分系統(tǒng)框架結(jié)構(gòu)[5]包含3個部分,分別是特征類似度的匹配、提取音樂評分的特征以及構(gòu)建標(biāo)準(zhǔn)數(shù)據(jù)庫。
(1)構(gòu)建標(biāo)準(zhǔn)數(shù)據(jù)庫,依據(jù)音樂評分中提取到的特征,找出最佳提取所對應(yīng)的標(biāo)準(zhǔn)音頻特征,將其作為標(biāo)準(zhǔn)數(shù)據(jù)庫,一般會利用MIDI音樂文件做對應(yīng)特征提取,作為標(biāo)準(zhǔn)數(shù)據(jù)庫。
(2)提取評分音樂特征,該部分是對音樂特征旋律進(jìn)行提取,其中,包含音符切分、平滑處理以及特征估計等。
(3)數(shù)據(jù)庫中的音頻和需要評分的音樂進(jìn)行特征匹配[6],觀察二者相似的程度,實(shí)現(xiàn)對音樂的量化評估。
由于音樂評分系統(tǒng)需要準(zhǔn)確、客觀,所以要分析現(xiàn)場音樂的表演形式以及噪聲等問題,使其具有良好魯棒性特征。構(gòu)建系統(tǒng)框架如圖1所示。
圖1 音樂評分系統(tǒng)框架結(jié)構(gòu)圖
音樂比賽的好壞是通過多方面確定的,例如情感表達(dá)、音強(qiáng)、音色、節(jié)奏、音準(zhǔn)以及氣息平穩(wěn)度,不過最重要的是旋律,所以對于音樂評分,通常使用的是以旋律特征作為對比,音樂的獨(dú)特性就是通過旋律所確定的,如果旋律出現(xiàn)了變化,那么歌曲自身也就會變成另外的歌曲。旋律則是通過音量、音長與音高此3種因素所構(gòu)成的。通常對于旋律特征表示,容易忽略掉音量的影響,從而直接表示音長以及音高特征。旋律的特征包括2種,具體如下。
2.2.1 音符序列計算模塊
音符的作用是來記錄長短不同音的一種特殊符號,是作為西方音樂的基本元素,通過把音樂打散,變成最小的組成,利用音符的序列,表示音樂旋律內(nèi)的音長以及音高,具體為
Note=[pitch,duration]
(5)
式中,pitch表示音高,duration表示音長。音高和發(fā)聲體振動的頻率相關(guān);音長則是用來度量某一種音高持續(xù)的長度,采用四分音符作單位。
在音符的序列內(nèi),不會利用基本頻率對音高進(jìn)行表示,一般會利用MIDI(樂器數(shù)字接口)文件內(nèi)的半音對音高進(jìn)行表示[7],頻率與Semitone存在對應(yīng)的關(guān)系,具體計算式為
(6)
式中,freq(j)表示音符。
2.2.2 基音周期估計模塊
自相關(guān)的函數(shù)可以對波形信號間的類似程度進(jìn)行估計。把分幀音頻進(jìn)行平移至一小段,計算起始幀音頻重疊部分的積,具體計算式為
(7)
式中,N表示每幀音頻長度,Si(m)表示第i幀聲音的信號,因?yàn)槁曇粜盘柨梢栽诙虝r間中存在周期性,同時周期恒定,會在時移k與聲音的周期相等或者k是聲音周期的整數(shù)倍時,Ri(k)會取極大值,計算信號自相關(guān)的函數(shù),會標(biāo)記區(qū)域的最大值和零點(diǎn)之間的間隔,就是聲音的基本周期[8]。
在利用自相關(guān)的函數(shù)法估計基音周期時,會存在一個嚴(yán)重問題。隨著偏移增大,k增大,這樣會導(dǎo)致在式(7)內(nèi)的求和項(xiàng)目變少,同時求和值也會減少,從而致使基音周期的估計出現(xiàn)不準(zhǔn)確情況。針對該問題,需要利用歸一化的自相關(guān)函數(shù),即可消除因?yàn)榍蠛晚?xiàng)的減少帶來的影響。具體計算式為
(8)
2.2.3 音符切分分析模塊
利用音符序列對音樂旋律的評分系統(tǒng)進(jìn)行表示,完成音高的序列提取后,同時還要進(jìn)行音符切分操作,從而獲取音符的序列[9]。
音符序列內(nèi)的音符,能夠被看成是連續(xù)不變的幾個音高值,以此可以將音符切分的基本思想劃分成合并連續(xù)相同的音高值。但實(shí)際音高估計結(jié)果中,連續(xù)音高的序列不會出現(xiàn)完全相等的情況,會具有很多的微小細(xì)節(jié)變化,因此需要對其進(jìn)行平滑處理,在平滑處理之后,還要對其進(jìn)行處理,以此來達(dá)到音符切分的效果。具體計算式為
(9)
式中,threshold表示閾值,當(dāng)一個音符的半音跳躍等于或不超過音高范圍的音高時,它被認(rèn)為是同一個音符。因此,平均值應(yīng)作為統(tǒng)一的節(jié)距值來計算。在通過處理之后,要進(jìn)行音符切分,具體步驟如下。
(1)粗劃分音高序列,通過將前后的音高值閾值以及差值大小進(jìn)行對比,判斷相鄰兩幀數(shù)據(jù)是否是相同音符,加序列即可劃分成音高列段。
(2)把各個序列段內(nèi)中值音高轉(zhuǎn)變成半音值,將其作為音符,而統(tǒng)計持續(xù)的時間,將其作為音長。
(3)將全部音高序列進(jìn)行合并,組成音符序列。
(4)對音符序列進(jìn)行檢查,對比鄰近的音符Pitch數(shù)值差異,即可判斷是否要進(jìn)行合并。
通過上述幾步,就能夠?qū)σ舴M(jìn)行切分,從而獲得精確的音符序列。
2.2.4 音樂特征匹配
提取旋律特征后,就會獲得2種旋律的特征序列分別為音符序列與音高序列。
為了匹配所提取特征的旋律相似度,需要將數(shù)據(jù)庫中的特征與旋律按照標(biāo)準(zhǔn)進(jìn)行匹配,然后觀察相似度來評價音樂的旋律。在匹配過程中,要注意以下幾個問題:音高偏差,因?yàn)槊總€聲帶結(jié)構(gòu)不同,所以歌唱水平也參差不齊。通常情況下,大量的人沒有接受過專業(yè)的訓(xùn)練,所以對音高的絕對高度不應(yīng)該有過高的要求,應(yīng)該掌握整個音樂過程。對于演唱者在演唱歌曲時出現(xiàn)的音高變化,以及是否有很好的過渡,需要對提取的音高序列進(jìn)行調(diào)整,并從音高序列中減去旋律的平均值。具體可以獲得表達(dá)式為
x(n)=x(n)-Meanx(n)+Shift
(10)
式中,Meanx(n)表示該段旋律音高的平均值,在后面加上統(tǒng)一偏移量Shift,目的是防止音高序列內(nèi)出現(xiàn)負(fù)數(shù)。
在旋律評分的框架中,加入新音高的序列提取方法,以此提升音高特征的提取精確性和對噪聲的魯棒性。具體評分過程如圖2所示。
圖2 音樂評分流程圖
為了驗(yàn)證本文構(gòu)建的音樂評分系統(tǒng)有效性,采用MATLAB進(jìn)行仿真測試分析,音樂評分的統(tǒng)計樣本數(shù)為2 000,迭代步數(shù)為180,稀疏度為0.24,采用Visual C++進(jìn)行音樂評分的數(shù)據(jù)庫模型構(gòu)造,音樂信息采樣的長度為1 048,相似度系數(shù)為0.26,根據(jù)上述參數(shù)設(shè)定,進(jìn)行音樂評分。
首先需要構(gòu)建評價因素,請有關(guān)專家、學(xué)者、音樂人等領(lǐng)域的3位有關(guān)人員參加評價,對設(shè)計的音樂評分系統(tǒng)各個模塊的功能進(jìn)行評價,設(shè)定評判等級指標(biāo)為U={A,B,C,D,E}。其中:A代表非常好,分?jǐn)?shù)等級為(80,100];B代表良好,分?jǐn)?shù)等級為(60,80];C代表一般,分?jǐn)?shù)等級為(40,60];D代表較差,分?jǐn)?shù)等級為(20,40];E代表非常差,分?jǐn)?shù)等級為(0,20]。分別統(tǒng)計音符序列計算模塊a1、基音周期估計模塊a2、音符切分分析模塊a3、音樂特征匹配a4等4個部分的評價結(jié)果如表1所示。
表1 評分指標(biāo)隸屬度
分析表1數(shù)據(jù)可知,關(guān)于統(tǒng)計音符序列計算模塊a1的評分,30%的參評人員評級為A,40%的參評人員評級為B,20%的參評人員評級為C,10%的參評人員評級為D,沒有參評人員評級為E。從而得到a1的評價結(jié)果為(0.3,0.4,0.2,0.1,0)。a2、a3、a4的評價結(jié)果同上分析過程。在構(gòu)建等級模糊子集之后,由于各個因素ai(i=1,2,3,4)較多,運(yùn)用多級模型求解,將評價因素分為2個子系統(tǒng),獲取對應(yīng)的單因素評價模糊矩陣R1和R2,具體計算式為
(11)
選擇3位選手作為實(shí)驗(yàn)人員,其中:選手一為受過音樂的專業(yè)訓(xùn)練,登臺演唱過一些音樂;選手二為業(yè)余選手,喜愛音樂;選手三為對音樂完全沒有興趣,也很少唱歌。演唱同一首歌曲,時間設(shè)置為整首歌曲的時間。
選擇3位專業(yè)的評委對3位實(shí)驗(yàn)人員進(jìn)行評分,為了保證數(shù)據(jù)的有效性,現(xiàn)場的環(huán)境要從開始至結(jié)束保持不變,并將評委的評分?jǐn)?shù)據(jù)與系統(tǒng)的評分?jǐn)?shù)據(jù)進(jìn)行對比,以此來觀察構(gòu)建的系統(tǒng)效果。具體結(jié)果如表2~表4所示。
表2 選手一的評分?jǐn)?shù)據(jù)對比
表3 選手二的評分?jǐn)?shù)據(jù)對比
表4 選手三的評分?jǐn)?shù)據(jù)對比
通過觀察表2~表4的評分?jǐn)?shù)據(jù),將本文系統(tǒng)與3位評委的平均分?jǐn)?shù)進(jìn)行對比,利用Origin繪制結(jié)果如圖3所示。
圖3 評委與本文系統(tǒng)評分對比結(jié)果
由圖3可知,本文系統(tǒng)的評分結(jié)果:選手一的平均分為84分,演唱水平優(yōu)秀;選手二的平均分為63.28分,演唱水平良好;選手三平均分為48.93,演唱水平較差。這在一定程度上能夠滿足音樂比賽的評分需求,符合人們主觀的感受,且客觀性更強(qiáng)。
本文提出的語義相關(guān)性數(shù)據(jù)庫構(gòu)建下音樂比賽評分方法多模塊化設(shè)計方案,在實(shí)際現(xiàn)場音樂比賽評分中,不僅結(jié)果與人工偏差較小,評分結(jié)果符合人們喜愛音樂的主觀感受。但由于音樂形式發(fā)展以及社會的進(jìn)步,人們對于音樂的種類以及喜愛方式都會有所不同,樂器也會出現(xiàn)更新的情況,難免出現(xiàn)由于樣本不足,導(dǎo)致系統(tǒng)評分結(jié)果不符合現(xiàn)實(shí)需求,為此今后研究方向?yàn)樘砑由窠?jīng)網(wǎng)絡(luò),保證評分結(jié)果不陷入局部最優(yōu),提升系統(tǒng)適用性。