(國家廣播電視總局廣播電視科學研究院,北京 100866)
在網絡媒體迅速崛起的今天,音視頻盜版行為日益猖獗,如何對影視產業的媒體資料進行盜版溯源成為了難題。本論文對基于數字音頻水印技術的盜版溯源方案中的移動終端的水印檢測軟件實現進行了描述。基于數字音頻水印技術的盜版溯源方案是將指定的水印內容嵌入到指定的視音頻源文件的音頻中,在被盜版時可以通過對其音頻中攜帶的水印內容進行取證。通過水印內容可以判別盜版音視頻的來源、被盜版的途徑、地點、時間等信息,以此完成溯源與取證,以法律手段來遏制盜版的傳播。
本文的第二節介紹了數字音頻水印的嵌入方案,結合版權保護對水印的要求制定了水印碼的排布方案和嵌入方案;第三節介紹了水印采用的檢測技術,由于盜版過程中音頻會隨著空氣的傳播而產生衰落,如何對抗這種衰落我們提出了方案;第四節對檢測功能在移動終端的實現方案作出說明,包括檢測方法與檢測流程;第五節說明了軟件實現的框架以及對手機性能的測試;最后第六節進行了總結。
音頻水印嵌入端可以支持視音頻多聲道音頻水印信號的同時嵌入,根據版權保護對水印嵌入基本格式的要求,本文需要嵌入的信息分別為有效載荷標識、時間戳標識、服務器標識。結構如圖1所示。

圖1 數據業務幀
(1)時間戳為影片播放的時間,根據DCI對嵌入時碼的要求,每15分鐘至少解出一次時碼,以15分鐘為一個單位,24 小時為一天,一年共計366天,因此一年中有效的時碼共有35136個,可以用16bit表示。
(2)服務器標識由6位數標識,如123456,可以用19bit表示。
(3)數據有效載荷用6bit可表示0~64的載荷數。
在傳輸幀封裝之后,我們對每個bit進行雙極性二進制碼的調制,變成+1、-1、+1…,之后對每個二進制碼進行擴頻,考慮到聲學環境我們每個單數據點采用3幀冗余嵌入,以此來增強魯棒性和水印檢出的準確性。開頭加上用于幀起始位置定位同步pny序列,用于擴頻的pnx序列和pny序列是正交的,各自具有較強的自相關特性。物理結構如圖2所示。

圖2 物理層封裝
數字音頻水印檢測技術是對攜帶擴頻序列水印的音頻進行水印內容檢出的技術,在明確水印擴頻嵌入原理的基礎上我們采用互相關的技術來判別被檢測音頻中是否攜帶有水印信息,以及水印信息的內容。
水印檢測采用擴展頻譜的方式進行提取,提取流程如下圖3所示。

圖3 水印提取流程圖
時頻變換和相關計算是水印提取的關鍵環節。時頻變換采用頻率抽取 (DIF)基2FFT 方法,遵循對時間前后分和對頻率偶奇分兩個規則。先將x (n)按序號分成前后兩部分,然后得到:



則構成DIF運算的蝶形單元,如圖4所示。

圖4 蝶形運算單元
然后對N/2點的DFT 再進行細分,直到最后得到兩點的DFT。
IFFT 的計算方法可以通過FFT 實現,只要把DFT 公式中的系數W改為W,并乘以1/N 就可以得到IFFT 算法。當把頻率抽選FFT 算法用于計算IFFT 時,由于原來輸入的時間序列x (n)現在變為頻率序列X (k),原來是將x (n)前后分,而現在是對X (k)前后分,因此這種算法改稱為時間抽取IFFT 算法。類似的,當把時間抽選FFT 算法應用于計算IFFT 時,稱為頻率抽選IFFT 算法。
相關計算采用互相關的方法,將接收信號的頻譜f與擴頻序列的反向序列g進行卷積運算,得到相關結果(f*g)(n),如式(5)所示:

f(k)是接收信號的頻域序列,g (n-k)是擴頻序列的反向序列。通過其卷積結果 (f*g) (n)的相關峰可以判斷兩個序列的相關性,如圖5所示。

圖5 水印相關結果示意圖
假設,相關得到正值的最大值為α,得到負值的最大值為β,如果α>β則認為成功同步比特值0,如果α<β認為是比特值1。
水印解碼方案將水印檢測原理作為核心解碼技術,輔助RS譯碼和CRC校驗技術來提高水印解碼的正確率和完整度。共分為以下幾個步驟:
(1)首先,對攜帶水印的信號進行時頻變換,在頻域與擴頻序列進行相關計算,根據相關結果來判斷當前幀攜帶比特0或者比特1。
(2)水印值確認。為了增強水印的魯棒性,嵌入時采取每個比特值連續重復嵌入3次的方式,同樣,在檢測端如果連續3次檢測到同一水印內容才能認為該值被檢出。
(3)對位放置結果。由于檢測時數據采集可能并非正好從一個擴頻序列的第0個位置開始,這種數據錯位會在一定程度上降低水印的檢出率,為了解決該問題本方案建立一個包含3幀數據的數據緩存,每次默認從第二幀的第0 位開始取值,但是,在第(2)步確定水印內容后通過對第 (1)步中相關峰的出現位置可以計算出數據中水印的起始位置,依次來指導下一幀數據取值的起始位置,從而實現水印數據的采樣同步。
(4)RS譯碼與CRC 校驗。經過以上3個步驟多次重復,完成預設水印位的填充,包括載荷數信息及其校驗位、時間戳信息及其校驗位、序列碼信息及其校驗位。此時得到的信息為發端RS編碼后信息,檢測時通過RS譯碼來糾正突發性錯碼,從而還原水印原始載荷。然后再通過CRC校驗來完成三個數據項的正確性驗證,校驗通過的形成最終數據,校驗失敗的數據丟棄。
水印的整體解碼方案如圖6所示。

圖6 水印取證解碼方案圖
檢測軟件分為音頻接收、水印解碼、界面交互三個模塊,每個模塊單獨占用一個線程。
界面線程負責在后臺進行運算的時候保證界面的運行以及各個控件的及時響應。
聲卡線程當用戶觸發檢測功能以后聲卡線程開始工作,調用終端的麥克風驅動獲取環境聲音為基帶數據格式流發送給解碼線程,聲卡進行數據采集時由于其單次采集的數據長度不足解碼所需的一幀長度,需要將數據進行緩存,待達到所需長度后向解碼線程進行傳遞。
解碼線程將聲卡傳遞的數據進行水印解碼,聲卡數據為定點數據,這里需要對其進行浮點化,其中立體聲需要分離一個聲道的數據進行解碼,包括RS 譯碼、水印檢測和CRC校驗,以此來還原水印載荷。程序流程圖如圖7所示。

圖7 水印檢測程序流程圖
通過界面觸發開始檢測后,啟動聲卡與檢測線程,檢測線程處于等待接收數據狀態,聲卡線程采集音頻數據直至數據夠一個擴頻幀的樣點數再送入檢測線程,檢測線程開始檢測,完成檢測后將結果回吐至界面線程,由界面線程進行顯示。

圖8 水印檢測軟件測試界面

圖9 小米MAX 手機錄音頻譜圖

圖10 三星galaxy A8手機錄音頻譜圖

圖11 VIVO X6手機錄音頻譜圖
由于水印檢測采用的是相關性判定,所以在水印內容未知的情況下需要用已知的擴頻序列集合去進行輪尋比對,這時手機負載的性能就對水印的承載數量提出了要求。我們將每個檢測線程的時效性約束在40ms內,通過測試發現軟件檢測線程控制在3個以內性能最佳。也就是說,每個檢測線程承擔10個水印擴頻序列的檢測任務,檢測任務總體控制在30個都可以達到性能最佳。本方案基于的水印嵌入方案只需要同步頭、比特0、比特1三種水印,所以完全可以滿足本方案的檢測需求和時效性要求。
由于不同品牌不同型號的手機性能有一定的差別,并且手機采集音頻時對音頻的處理也不同。因此完成軟件實現后,本文對多個手機的音頻采樣進行了測試,其中采樣頻帶寬度最寬的是小米MAX手機,最寬到了24000 Hz,還原度最高,但是其中摻雜的雜音也較多。最窄的是VIVO X6,僅到了9000 Hz,這意味著如果水印是全頻帶嵌入的,將有50%以上的相關性被削減了,前文給出幾款手機的音頻接收頻段圖,見圖9~圖11所示。
針對不通過手機對音頻中高頻的音頻頻譜的衰減,我們對麥克風采集到的音頻進行了能量的加強,用專用的濾波器濾出音頻中隱藏的水印信號,同時對水印信號進行能量疊加以提高水印信號的信噪比,之后進行混響消除處理,將水印檢測終端在這幾款手機上進行收測測試,幾款手機均可以達到理想的檢測效果,證明了算法方案對抗手機對音頻的處理達到的效果尚佳。
本文設計了音頻水印檢測算法在移動終端中實現的方案,該方案的優勢就是實現了實際載荷率有多重的保護,因為在從空中錄制的聲音中提取水印信息難度相當大,水印信息雖然以音頻為載體,但實際上音頻對水印是一種相當強的干擾,即使非常理想的傳輸過程中,例如信號標準音頻線直連的時候,也不能做到水印信息的解析率為100%。而且在空氣中聲波屬于縱波,靠空氣的振動進行傳播,因此空氣的振動強度必然會越來越小,因此到達接收終端時屬于微弱信號。這對水印的健壯性產生了極大的考驗,因此我們在數據業務封裝時加入了各自的CRC校驗,之后用RS編碼對數據進行冗余糾錯,使數據具有一定的自糾錯能力,每變成雙極性碼后,每個碼重復三次并進行增益,用于對抗音頻在空氣中傳播產生的衰減。
受到移動終端的硬件性能限制,我們在安卓系統中對算法方案進行了實現,通過長期拷機測試確定了方案的可行性。該軟件將來可以用于不同聲場的水印收測外場測試,也可以對不同品牌、型號手機的收音和音頻處理方式對水印產生的影響進行測試。?