周悅穎
(國(guó)家廣播電視總局二八一臺(tái),云南 昆明 650000)
廣播節(jié)目的音頻質(zhì)量關(guān)系到播出質(zhì)量。電平監(jiān)測(cè)能反映過(guò)載和削波情況,預(yù)防失真。反相也會(huì)對(duì)播出質(zhì)量造成嚴(yán)重影響。反相的音頻左右聲道相互中和,會(huì)導(dǎo)致輸出電平過(guò)低,收聽(tīng)效果模糊,影響播出質(zhì)量。利薩如圖能反映音頻的頻率和相位差,避免音頻的失真。本文介紹了Wave 文件的讀取、Wave波形顯示、DirectX 讀取音頻數(shù)據(jù)、電平分析、頻譜原理與分析、利薩如圖形算法、相位算法以及對(duì)電平和相位報(bào)警等內(nèi)容,利用Delphi 語(yǔ)言實(shí)現(xiàn)了數(shù)字音頻分析監(jiān)測(cè),可協(xié)助技術(shù)人員發(fā)現(xiàn)音頻質(zhì)量問(wèn)題。
數(shù)字音頻文件分析程序流程如圖1 所示。在讀取Wave 文件后,先判斷音頻是否是雙聲道。若是單聲道,退出流程并提示。根據(jù)采樣率顯示出波形圖,并通過(guò)DirectSound 進(jìn)行播發(fā),顯示出電平、相位及利薩如圖形,并報(bào)警顯示有異常的地方。
2.1.1 數(shù)字電平
以0.775 V 為基準(zhǔn)電壓時(shí),所求得的電壓電平單位為dBu。絕對(duì)電壓電平U用分貝表示為:
dBFS 是數(shù)字音頻信號(hào)的電平單位,簡(jiǎn)稱為滿度數(shù)字電平。電平值V的計(jì)算公式為:
我國(guó)廣播電視系統(tǒng)中通常采用+4 dBu 作為音頻系統(tǒng)的校準(zhǔn)電平,滿度數(shù)字電平為+24 dBu。
2.1.2 數(shù)字電平報(bào)警
根據(jù)式(2)計(jì)算出電平值,顯示出電平大小。記錄每1 s 的電平值,如果電平值在20 s 以內(nèi)大于或小于報(bào)警值,開(kāi)始報(bào)警。報(bào)警流程如圖2 所示。讀取音頻文件后先獲取音頻的Buffer,根據(jù)電平值計(jì)算公式顯示出電平VU 表,并做出高電平和低電平報(bào)警提示。
2.2.1 頻譜分析原理
傅立葉是頻譜分析的奠基人,在傅立葉變換中提出了信號(hào)采樣和頻域表示等概念。非正弦信號(hào)可用它包含的頻率分量成分的特征來(lái)表征,將時(shí)域信號(hào)轉(zhuǎn)化到頻域后,可以得出頻譜分量。使用FFT分析儀進(jìn)行信號(hào)采樣,把相關(guān)離散采樣點(diǎn)進(jìn)行傅立葉變換,可得到頻域信息[1]。
2.2.2 頻譜程序?qū)崿F(xiàn)
應(yīng)用傅立葉變換原理,逐次奇偶抽選采樣的序列,以提高效率,避免浪費(fèi)儲(chǔ)存單元。打亂以前的順序并對(duì)其重新進(jìn)行排序,按照這個(gè)順序來(lái)運(yùn)算。在用Delphi 表示傅立葉變換復(fù)數(shù)中,可以先在數(shù)據(jù)結(jié)構(gòu)中定義一個(gè)含有兩個(gè)成員變量的數(shù)據(jù)結(jié)構(gòu)。
兩個(gè)成員變量可以分別通過(guò)倒序?qū)崿F(xiàn)表示復(fù)數(shù)的虛部與實(shí)部:
TComplex=packed record
Im:TFloat;//復(fù)數(shù)的虛部
Re:TFloat;//復(fù)數(shù)的實(shí)部
end;
進(jìn)行快速傅立葉變換有兩種方法:第一種是按照自然序列排序輸入(時(shí)域序列)和輸出(頻域序列);第二種方法是按照“蝴蝶圖”所描述的計(jì)算方法,對(duì)奇偶分解后的序列排序輸入(時(shí)域序列),并對(duì)輸出按自然順序排列(頻域序列)[2]。第一種方法不符合“蝴蝶圖”,但是對(duì)輸入輸出不需要進(jìn)一步排序。第二種方法符合“蝴蝶圖”,但需要倒序一次。本文采用第二種方法進(jìn)行較多的采樣,同時(shí)優(yōu)化倒序算法。首先抽樣量化輸入或采集的時(shí)域波形數(shù)據(jù),通過(guò)類的函數(shù)讀取到緩存中,再對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,使其滿足長(zhǎng)度為2 的整數(shù)次冪的復(fù)變量,最后運(yùn)用“蝴蝶圖”進(jìn)行分解運(yùn)算。在Delphi 中并沒(méi)有表示復(fù)數(shù)的數(shù)據(jù)類型,通過(guò)定義一個(gè)含有兩個(gè)成員變量的數(shù)據(jù)結(jié)構(gòu)來(lái)表示復(fù)數(shù),即用兩個(gè)變量分別來(lái)表示復(fù)數(shù)的實(shí)部與虛部。
2.2.3 頻譜分析具體流程
頻譜分析具體流程如圖3 所示。首先獲取音頻文件的Buffer,用倒序的方法編寫(xiě)出適合Delphi使用的復(fù)數(shù)數(shù)據(jù)類型,再對(duì)時(shí)域信號(hào)進(jìn)行頻譜分析,并將頻譜顯示出來(lái)。
2.2.4 頻譜分析程序關(guān)鍵代碼
頻譜分析程序關(guān)鍵代碼如下:
2.3.1 相位定義
作為周期運(yùn)動(dòng)的聲波,相位就是其在運(yùn)動(dòng)中表現(xiàn)出來(lái)的準(zhǔn)確位置。波峰對(duì)鄰波的波峰或者波谷對(duì)鄰波的波谷屬于同相位,相位差都是360°,同相位相加。波峰對(duì)鄰波的波谷或者波谷對(duì)鄰波的波峰屬于反相位,相位差為180°,同相位相減。交流電在不同時(shí)刻的狀態(tài)是通過(guò)相位來(lái)反映的。相位隨時(shí)間變化,交流電的方向和大小也會(huì)產(chǎn)生變化。
2.3.2 相位程序?qū)崿F(xiàn)及報(bào)警
2.3.3 相位監(jiān)測(cè)具體流程
相位監(jiān)測(cè)具體流程如圖4 所示。讀取音頻文件后,取出左右聲道的值,求左聲道和、右聲道和以及左右聲道相乘的積。然后根據(jù)相位差公式計(jì)算后顯示相位。對(duì)于反相情況,報(bào)警予以提示。
2.3.4 相位監(jiān)測(cè)關(guān)鍵代碼
相位監(jiān)測(cè)關(guān)鍵代碼如下:
2.4.1 利薩如圖形
音頻矢量圖反映的是左右聲道的相位關(guān)系和幅度關(guān)系,是相位關(guān)系和幅度關(guān)系的一種直觀表現(xiàn)。在實(shí)際運(yùn)用中,一個(gè)質(zhì)點(diǎn)經(jīng)常會(huì)出現(xiàn)兩個(gè)不同方向振動(dòng)的情況,此時(shí)該質(zhì)點(diǎn)的位移就是兩個(gè)振動(dòng)的矢量和。本文討論的利薩如圖的本質(zhì)就是相互垂直的兩個(gè)簡(jiǎn)諧振動(dòng)的合成。
利薩如圖上的每一個(gè)點(diǎn)都可以表示為:
式中,X表示質(zhì)點(diǎn)在X軸的振動(dòng);Y表示質(zhì)點(diǎn)在Y軸的振動(dòng);A1和A2分別表示最高點(diǎn)和最低點(diǎn)的位置。當(dāng)X和Y值為整數(shù)比時(shí),可以顯示出一個(gè)直觀封閉的曲線,就是利薩如圖。將所有用到的量和公式進(jìn)行數(shù)字化處理,式(3)可改動(dòng)為:
式中,a和b是變量,用來(lái)表示輸入的數(shù)值,只取其個(gè)位上的數(shù)字;ψ=ψ2-ψ1是用來(lái)輸入的初始相差的值。為了方便繪圖,將A1和A2的比例簡(jiǎn)化為1:1。
根據(jù)以上結(jié)論,實(shí)際t取到足夠小時(shí),可以將(X,Y)坐標(biāo)繪制成圖片形成利薩如圖。如果將Wave 數(shù)據(jù)中的512 個(gè)點(diǎn)以每100 ms 為一組進(jìn)行計(jì)算,將計(jì)算結(jié)果刷新后顯示出來(lái)就可以呈現(xiàn)出動(dòng)態(tài)的圖形,即得到了模擬的利薩如圖形。
2.4.2 利薩如圖形程序流程
利薩如圖形程序流程如圖5 所示。讀取音頻文件后,計(jì)算出左右聲道的最大值、最小值和最大差值,計(jì)算出左右聲道的平均值,用左右聲道的值分別減去左右聲道的平均值,畫(huà)出圖形。
2.4.3 利薩如圖形程序關(guān)鍵代碼
利薩如圖形程序關(guān)鍵代碼如下:
程序運(yùn)行界面如圖6 所示。程序分為4 大部分:頂部顯示了音頻文件的波形圖;左側(cè)顯示的是音頻頭文件的信息;中部顯示了電平UV、相位信息及利薩如圖形;右側(cè)顯示監(jiān)控的報(bào)警信息。
基于數(shù)字音頻文件分析程序,使用Delphi 語(yǔ)言編程,且所有函數(shù)調(diào)用均使用統(tǒng)一封裝,Wave 的音頻流采用多個(gè)輔助緩沖區(qū),為程序向?qū)I(yè)的應(yīng)用程序移植提供了可以擴(kuò)展的空間,為以后的音頻實(shí)施監(jiān)控和通過(guò)網(wǎng)絡(luò)傳輸音頻來(lái)監(jiān)控設(shè)備提供了應(yīng)用可能,以更好地滿足廣播行業(yè)需要。