本發(fā)明專利涉及數(shù)字水印技術(shù)領(lǐng)域,尤其是易碎水印技術(shù)應用于保護音頻信號。
背景技術(shù):
數(shù)字水印技術(shù)的原理為利用圖像及聲音等媒體信號的冗余性,在原始信號中嵌入有關(guān)的信息來保護原始信息,根據(jù)使用范圍和意義的不同,這種嵌入的信息可以是關(guān)于數(shù)字信號的版權(quán)信息,也可以是由原信號壓縮得到的碼率比較小的水印。嵌入的信號能很好的隱藏在原始信號下不易被察覺,不會對原始水印造成影響。這種技術(shù)能夠在一定程度上保護數(shù)字信號的版權(quán),也能利用嵌入水印的特性盡可能的對受到破壞的信息進行恢復,由此達到抵擋惡意攻擊的目的。
水印技術(shù)在圖像領(lǐng)域有一定程度的發(fā)展,但是同類算法在音頻領(lǐng)域內(nèi)并不多見。傳統(tǒng)的水印認證技術(shù)著重于檢測信號是否遭受過破壞,測試信號的完整性,不能進一步準確高效的處理音頻信號并將其修復。圖像和音頻領(lǐng)域中數(shù)字水印技術(shù)發(fā)展不平衡的情況,主要由于聽覺和視覺方面的差異性,人類聽覺系統(tǒng)比人類視覺系統(tǒng)的敏感性要高許多,這就需要音頻的恢復算法更加強效,恢復效果更好,才能夠得到可懂的恢復信號。另外,由于聽覺系統(tǒng)的敏感特性,人耳能夠更容易的感知到新加入的水印信息,使得能在音頻信號中嵌入的水印能量不能過大。也就是說,一方面需要嵌入水印的能量更小,在這種情況下水印能夠包含關(guān)于原始音頻信號的內(nèi)容要較少,而另一方面,為應對更敏感的聽覺系統(tǒng),要使用有限的水印信號的信息達到更好的恢復效果。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是研究出一種特殊的易碎性數(shù)字水印,使嵌入水印的音頻信號在受到一定程度的攻擊后,可以進行某種程度上的自恢復。該數(shù)字水印不僅能夠?qū)σ纛l受損部分進行檢測,還能夠通過水印進行信息恢復。水印信號在能保持較高的信噪比的同時還能夠有令人滿意的恢復效果。
為了解決上述技術(shù)問題,本發(fā)明所采取的技術(shù)方案是:
一種用數(shù)字音頻水印進行語音信號篡改檢測與恢復的方法,其特征在于包括如下具體步驟:
在本發(fā)明中中,參數(shù)的設置如下;試驗用數(shù)據(jù)是8000Hz采樣率,16bits采樣精度的波形文件;取每幀內(nèi)包含的采樣點數(shù)n為64,取每個幀組中幀數(shù)m為16,每個幀組內(nèi)的參照值總數(shù)k為345,則每幀分配23個參照值,量化后的整型數(shù)最大值為8192,量化參數(shù)q取為1500,量化結(jié)束后,為了簡化嵌入過程,將有正有負的量化后參數(shù)整體平移,使其原始范圍從-8192~8191變化至0~16383,量化后的參照值每個占據(jù)15bits;
優(yōu)選的,水印的嵌入過程為:
將原始信號分幀,該發(fā)明采用的方法是將信號相鄰n個采樣點分為一幀,幀與幀之間沒有重疊部分;
(1)對幀進行分組,記每一個幀組中包含m個幀;記原始信號中共有N個采樣點,而通常情況下N
并不是的整數(shù)倍,對于這種情況,為了簡化后面的處理,對原始信號進行補零;
(2)分幀結(jié)束后,將原始數(shù)據(jù)進行壓縮,使用的方法是對原始信號的幅度值除以系數(shù)c,得到壓縮
后的數(shù)據(jù);
(3)通過隨機數(shù)算法,打亂幀的順序,并將相鄰的m個幀組成一個幀組;
(4)對上述數(shù)據(jù)向量進行線性變換,得到未量化的參照值;而隨機的幀序列是又一個隨機數(shù)種子生
成的,在嵌入水印過程又提取水印過程中,雙方采用同一個種子,則可以保證嵌入/提取過程中操作的幀組是同一的幀組;
(5)對參照值進行量化操作;
(6)把一幀的序號(64bits表示),320bits的五層最高有效位,以及345bits的參照值放入一個哈希
函數(shù)中,來產(chǎn)生一個31位長的哈希序列;隨機生成一個哈希序列,對于每一幀,使用自身數(shù)據(jù)相關(guān)的哈希序列與隨機序列異或生成定位數(shù)據(jù);
(7)隨機生成一個31位長的哈希序列,對于每一幀,使用自身數(shù)據(jù)相關(guān)的31位哈希序列與隨機序列
異或生成的31位數(shù)據(jù)作為定位數(shù)據(jù);
(8)將31位定位數(shù)據(jù)與前文中提到的345位參照值數(shù)及8位補零數(shù)據(jù)一同組成384位替代六層最低有
效位數(shù)據(jù)的水印數(shù)據(jù);
優(yōu)選的,水印的提取恢復過程為:
(1)對信號進行分幀分組后,提取信號六位最低有效位,并將每個幀中的最低有效位數(shù)據(jù)分為兩組,
一組是用于恢復數(shù)據(jù)的參照值,另外一組是定位篡改區(qū)域的定位數(shù)據(jù)。每幀中的六位最低有效位共計384位,而其中用于恢復數(shù)據(jù)的參照值共計345位,而定位數(shù)據(jù)有31位,篡改區(qū)域定位的第一步就是抽取原始數(shù)據(jù)中31位定位數(shù)據(jù);
(2)得到31位定位數(shù)據(jù)后,抽取十層最高有效位640位內(nèi)的內(nèi)容,與這幀的序號64位,以及345位
參照值一同,放入哈希函數(shù)中計算出一個31位長的哈希序列;通過定位數(shù)據(jù)判斷某幀是否被破壞;
(3)經(jīng)過哈希函數(shù)得到的31位哈希序列再與提取的31位哈希序列進行異或運算,得到最終31位定
位數(shù)據(jù);如果在受損定位后發(fā)現(xiàn)某個幀組的全部幀都沒有受損,那么恢復過程將跳轉(zhuǎn)到下一個幀組;
(4)判斷某幀是否被破壞;
(5)接收方接收一個信號后,通過與嵌入方相同的隨機種子生成嵌入方嵌入水印的幀分組排序,進而獲得分組信息;
(6)如果在受損定位后發(fā)現(xiàn)某個幀組的全部幀都沒有受損,那么恢復過程將跳轉(zhuǎn)到下一個幀組
(7)將提取方提取出的量化參照值經(jīng)過處理后得到未量化的參照值;
(8)通過計算得出受破損區(qū)域內(nèi)的信號數(shù)據(jù);
(9)標準化篡改恢復信號。
一種用數(shù)字音頻水印進行語音信號篡改檢測與恢復的方法,包括以下步驟,
步驟一,水印信息的嵌入過程:嵌入信號的水印生成自原始信號的壓縮版本,不包含其他的冗余信息,在恢復時也不需要其他相關(guān)與原始信號的信息,因而具有自恢復性。
步驟二,水印信息的提取恢復過程:當嵌入水印的信號遭到篡改時,算法可以根據(jù)嵌入的水印準確的定位被篡改部位,并從正確的部分中抽取用于恢復的水印信號。當被抽取的水印足夠多時,算法可以對被篡改部分進行恢復。
本發(fā)明步驟一中所述水印信息嵌入過程包括以下步驟:
步驟11,將原始信號分幀,該發(fā)明采用的方法是將信號相鄰n個采樣點分為一幀,幀與幀之間沒有重疊部分。
步驟12,對幀進行分組,記每一個幀組中包含m個幀。記原始信號中共有N個采樣點,而通常情況下N并不是n×m的整數(shù)倍,對于這種情況,為了簡化后面的處理,對原始信號進行補零。補零結(jié)束后,每一幀中都有n個采樣點,每個幀組中都有n×m個采樣點,共有N/(n×m)個幀組。雖然可能某一幀中全由零組成,但不存在某一幀組全是又零組成。
步驟13,分幀結(jié)束后,將原始數(shù)據(jù)進行壓縮,使用的方法是對原始信號的幅度值除以系數(shù)c,得到壓縮后的數(shù)據(jù)。
步驟14,通過隨機數(shù)算法,打亂幀的順序,并將相鄰的m個幀組成一個幀組。
步驟15,對上述數(shù)據(jù)向量進行線性變換,得到未量化的參照值。而隨機的幀序列是又一個隨機數(shù)種子生成的,在嵌入水印過程又提取水印過程中,雙方采用同一個種子,則可以保證嵌入/提取過程中操作的幀組是同一的幀組。
步驟16,對參照值進行量化操作。
步驟17,在本發(fā)明中中,參數(shù)的設置如下。試驗用數(shù)據(jù)是8000Hz采樣率,16bits采樣精度的波形文件。取每幀內(nèi)包含的采樣點數(shù)n為64,取每個幀組中幀數(shù)m為16,每個幀組內(nèi)的參照值總數(shù)k為345,則每幀分配23個參照值,量化后的整型數(shù)最大值為8192,量化參數(shù)q取為1500,量化結(jié)束后,為了簡化嵌入過程,將有正有負的量化后參數(shù)整體平移,使其原始范圍從-8192~8191變化至0~16383,量化后的參照值每個占據(jù)15bits。
步驟18,把一幀的序號(64bits表示),320bits的五層最高有效位,以及345bits的參照值放入一個哈希函數(shù)中,來產(chǎn)生一個31位長的哈希序列。
步驟19,隨機生成一個31位長的哈希序列,對于每一幀,使用自身數(shù)據(jù)相關(guān)的31位哈希序列與隨機序列異或生成的31位數(shù)據(jù)作為定位數(shù)據(jù)。
步驟20,將31位定位數(shù)據(jù)與前文中提到的345位參照值數(shù)及8位補零數(shù)據(jù)一同組成384位替代六層最低有效位數(shù)據(jù)的水印數(shù)據(jù)。
步驟14中,對幀組中各個幀的壓縮后數(shù)據(jù)進行拼接,則拼接后的數(shù)據(jù)向量為
步驟15中,對v進行線性變換
其中向量r就是為經(jīng)過量化的參照值。矩陣A是k×(n×m)維的矩陣。并且對矩陣A進行了標準化。具體方法是保證矩陣A中每一行歐式范數(shù)都是1。為生成矩陣A,我們首先使用某個嵌入方與提取方都知道的隨機種子隨機生成k×(n×m)個數(shù),并且這些數(shù)字獨立同分布,滿足均值為零的高斯分布。記生成的隨機數(shù)組成的矩陣為A0,那么,矩陣A的生成又下面公式
其中A(i,j)和A0(i,j)分別是矩陣A和矩陣A0中的元素。根據(jù)中央極限定理,向量r也是近似的滿足零均值的高斯分布的。通過這種方式,對于每個幀組的n×m個壓縮數(shù)據(jù),求得k個參照值。隨后,將這k個參照值分配給幀組中m個幀中,即每幀原始信號分配k/m個參照值。
步驟16中量化公式為:
其中
f(t)=q/Rmax·t
公式中的Rmax代表了量化后數(shù)據(jù)的最大值。q是量化參數(shù)。經(jīng)過量化后,得到的數(shù)值均為整型。
步驟19中的異或公式如下
其中hi是從幀中數(shù)據(jù)得到的哈希序列,li是隨機生成的哈希序列,ci是生成的定位數(shù)據(jù)。
本發(fā)明步驟二中所述水印信息的提取恢復過程包括以下步驟:
步驟21,對信號進行分幀分組后,提取信號六位最低有效位,并將每個幀中的最低有效位數(shù)據(jù)分為兩組,一組是用于恢復數(shù)據(jù)的參照值,另外一組是定位篡改區(qū)域的定位數(shù)據(jù)。每幀中的六位最低有效位共計384位,而其中用于恢復數(shù)據(jù)的參照值共計345位,而定位數(shù)據(jù)有31位,篡改區(qū)域定位的第一步就是抽取原始數(shù)據(jù)中31位定位數(shù)據(jù)。
步驟22,得到31位定位數(shù)據(jù)后,抽取十層最高有效位640位內(nèi)的內(nèi)容,與這幀的序號64位,以及345位參照值一同,放入哈希函數(shù)中計算出一個31位長的哈希序列。
步驟23,經(jīng)過哈希函數(shù)得到的31位哈希序列再與提取的31位哈希序列進行異或運算,得到最終31位定位數(shù)據(jù)。
步驟24,判斷某幀是否被破壞,拿第i幀作為例子,如果第i幀沒有被破壞,那么根據(jù)異或運算的特性,得到的31位序列數(shù)據(jù)應該與其他沒有被破壞的幀所計算得出的定位數(shù)據(jù)相同,并且與嵌入方嵌入時隨機生成的31位哈希序列相同。而如果第i幀遭到了破壞,那么從第i幀中抽取并經(jīng)過運算得到的31位哈希定位序列將與其他各個幀所運算出的定位序列有所差別。
步驟25,接收方接收一個信號后,通過與嵌入方相同的隨機種子生成嵌入方嵌入水印的幀分組排序,進而獲得分組信息。
步驟26,如果在受損定位后發(fā)現(xiàn)某個幀組的全部幀都沒有受損,那么恢復過程將跳轉(zhuǎn)到下一個幀組。現(xiàn)在假設某一個幀組內(nèi)有z幀信號受損,算法對這一幀組進行恢復。
步驟27,將提取方提取出的量化參照值經(jīng)過處理后得到未量化的參照值。
步驟28,通過計算得出受破損區(qū)域內(nèi)的信號數(shù)據(jù)。
步驟29,標準化篡改恢復信號。
步驟26中在一個幀組內(nèi)共有16幀數(shù)據(jù),從一個幀組中的16個幀中,可以提取出368個參照值。而當有z幀信號被破壞時,能從中提取出(16-z)×23個參照值。被篡改區(qū)域?qū)膮⒄罩翟诙ㄎ贿^程中自動刪去。
步驟27中處理提取的量化參照值的公式如下:
其中
步驟28中的計算公式如下:
其中向量α'1,α'2,...,α'M是經(jīng)過處理的提取參照值,近似的認為是原始未經(jīng)過量化過的參照值
根據(jù)以上公式可以推導出如下公式
則有
其中矩陣A(E,T)是可以通過矩陣A得到的,向量S可以通過提取的參照值與步驟27中的公式計算得出。那么向量vT就可以通過解公式步驟28的方程組得到。得到向量vT之后,只需要將其解壓縮就可以得到恢復的原始信號。
步驟29中,標準化公式為:
其中是Y一無量綱的隨機變量,E(X)是隨機變量X的期望,而D(X)是隨機變量X的方差。
把一個恢復后幀組的信息標準化到統(tǒng)計好的信息上。采用公式為
其中,X1是一個幀組內(nèi)的幀組成的隨機變量,將兩個分布都標準化為沒有量綱的隨機變量
對上面的公式進行變形,得到實際中使用的兩個參數(shù)
使用這兩個參數(shù),與X1本身的分布期望一起,將其標準化。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明中的水印算法是一種特殊的具有易碎性數(shù)字水印,使嵌入水印的音頻信號在受到一定程度的攻擊時,可以進行某種程度上的自恢復。該數(shù)字水印不僅能夠?qū)σ纛l受損部分進行檢測,還能夠通過在信號中的水印進行相關(guān)信息的恢復。水印信號在能保持較高的信噪比的同時還能夠有令人滿意的恢復效果,水印造成的噪聲很小,幾乎不可察覺,同時本算法具有不可見性,易碎性及恢復時無需其他信息的特點。
附圖說明
圖1是水印信息的嵌入過程流程圖;
圖2是水印信息的提取恢復過程流程圖;
圖3是原始信號波形圖與頻譜圖;
圖4是加入后信號波形圖與頻譜圖;
圖5是破壞10%后的語音信號波形圖與頻譜圖;
圖6是語音信息受損10%恢復后波形圖與頻譜圖。
圖7是破壞20%后的信號波形圖與頻譜圖
圖8是語音信息受損20%恢復后波形圖與頻譜圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明做進一步詳細地描述。
如圖1所示,為本發(fā)明的水印信息的嵌入過程,包括以下步驟。
步驟11,將原始信號分幀,將信號相鄰n個采樣點分為一幀,幀與幀之間沒有重疊部分。
步驟12,對幀進行分組,記每一個幀組中包含m個幀。記原始信號中共有N個采樣點,而通常情況下N并不是n×m的整數(shù)倍,對于這種情況,為了簡化后面的處理,對原始信號進行補零。補零結(jié)束后,每一幀中都有n個采樣點,每個幀組中都有n×m個采樣點,共有N/(n×m)個幀組。雖然可能某一幀中全由零組成,但不存在某一幀組全是又零組成。
步驟13,分幀結(jié)束后,將原始數(shù)據(jù)進行壓縮,目前使用的方法是對原始信號的幅度值直接除以一個系數(shù)c,得到壓縮后的數(shù)據(jù)。
步驟14,通過隨機數(shù)算法,打亂幀的順序,并將相鄰的m個幀組成一個幀組。
對幀組中各個幀的壓縮后數(shù)據(jù)進行拼接,則拼接后的數(shù)據(jù)向量為
步驟15,對上述數(shù)據(jù)向量進行線性變換,得到未量化的參照值。而隨機的幀序列是又一個隨機數(shù)種子生成的,在嵌入水印過程又提取水印過程中,雙方采用同一個種子,則可以保證嵌入/提取過程中操作的幀組是同一的幀組。
對v進行線性變換
其中向量r就是為經(jīng)過量化的參照值。矩陣A是k×(n×m)維的矩陣。并且對矩陣A進行了標準化。具體方法是保證矩陣A中每一行歐式范數(shù)都是1。為生成矩陣A,首先使用某個嵌入方與提取方都知道的隨機種子隨機生成k×(n×m)個數(shù),并且這些數(shù)字獨立同分布,滿足均值為零的高斯分布。記生成的隨機數(shù)組成的矩陣為A0,那么,矩陣A的生成又下面公式
其中A(i,j)和A0(i,j)分別是矩陣A和矩陣A0中的元素。根據(jù)中央極限定理,向量r也是近似的滿足零均值的高斯分布的。通過這種方式,對于每個幀組的n×m個壓縮數(shù)據(jù),求得k個參照值。將這k個參照值分配給幀組中m個幀中,即每幀原始信號分配k/m個參照值。
步驟16,對參照值進行量化操作。
量化公式為:
其中
f(t)=q/Rmax·t
公式中的Rmax代表了量化后數(shù)據(jù)的最大值。q是量化參數(shù)。經(jīng)過量化后,得到的數(shù)值均為整型。
步驟17,本次發(fā)明中,對參數(shù)的設置如下。使用的試驗用數(shù)據(jù)是8000Hz采樣率,16bits采樣精度的波形文件。取每幀內(nèi)包含的采樣點數(shù)n為64,取每個幀組中幀數(shù)m為16,每個幀組內(nèi)的參照值總數(shù)k為345,則每幀分配23個參照值,量化后的整型數(shù)最大值為8192,量化參數(shù)q取為1500,量化結(jié)束后,為了簡化嵌入過程,將有正有負的量化后參數(shù)整體平移,使其原始范圍從-8192~8191變化至0~16383,不管如何變化,量化后的參照值每個占據(jù)15bits。
步驟18,把一幀的序號(64bits表示),320bits的五層最高有效位,以及345bits的參照值放入一個哈希函數(shù)中,來產(chǎn)生一個31位長的哈希序列。
步驟19,隨機生成一個31位長的哈希序列,對于每一幀,使用自身數(shù)據(jù)相關(guān)的31位哈希序列與隨機序列異或生成的31位數(shù)據(jù)作為定位數(shù)據(jù)。
其中的異或公式為
其中hi是從幀中數(shù)據(jù)得到的哈希序列,li是隨機生成的哈希序列,ci是生成的定位數(shù)據(jù)。
步驟20,將這31位定位數(shù)據(jù)與前文中提到的345位參照值數(shù)及8位補零數(shù)據(jù)一同組成384位替代六層最低有效位數(shù)據(jù)的水印數(shù)據(jù)。
如圖2所示,為本發(fā)明的水印信息的提取恢復過程,包括以下步驟。
步驟21,在對信號進行分幀分組后,提取信號六位最低有效位,并將每個幀中的最低有效位數(shù)據(jù)分為兩組,一組是用于恢復數(shù)據(jù)的參照值,另外一組是定位篡改區(qū)域的定位數(shù)據(jù)。如前文所述,每幀中的六位最低有效位共計384位,而其中用于恢復數(shù)據(jù)的參照值共計345位,而定位數(shù)據(jù)有31位,篡改區(qū)域定位的第一步就是抽取原始數(shù)據(jù)中31位定位數(shù)據(jù)。
步驟22,在得到31位定位數(shù)據(jù)后,抽取十層最高有效位640位內(nèi)的內(nèi)容,與這幀的序號64位,以及345位參照值一同,放入哈希函數(shù)中計算出一個31位長的哈希序列。
步驟23,經(jīng)過哈希函數(shù)得到的31位哈希序列再與提取的31位哈希序列進行異或運算,得到最終31位定位數(shù)據(jù)。
步驟24,判斷某幀是否被破壞,拿第i幀作為例子,如果第i幀沒有被破壞,那么根據(jù)異或運算的特性,得到的31位序列數(shù)據(jù)應該與其他沒有被破壞的幀所計算得出的定位數(shù)據(jù)相同,并且與嵌入方嵌入時隨機生成的31位哈希序列相同。而如果第i幀遭到了破壞,那么從第i幀中抽取并經(jīng)過運算得到的31位哈希定位序列將與其他各個幀所運算出的定位序列有所差別。
步驟25,接收方接收一個信號后,通過與嵌入方相同的隨機種子生成嵌入方嵌入水印的幀分組排序,進而獲得分組信息。
步驟26,如果在受損定位后發(fā)現(xiàn)某個幀組的全部幀都沒有受損,那么恢復過程將跳轉(zhuǎn)到下一個幀組。現(xiàn)在假設某一個幀組內(nèi)有z幀信號受損,算法對這一幀組進行恢復。
在一個幀組內(nèi)共有16幀數(shù)據(jù),從一個幀組中的16個幀中,可以提取出368個參照值。而當有z幀信號被破壞時,從中提取出(16-z)×23個參照值。被篡改區(qū)域?qū)膮⒄罩翟诙ㄎ贿^程中自動刪去。
步驟27,將提取方提取出的量化參照值經(jīng)過處理后得到未量化的參照值。
處理提取的量化參照值的公式如下:
其中
步驟28,通過計算得出受破損區(qū)域內(nèi)的信號數(shù)據(jù)。
計算公式如下:
其中向量α'1,α'2,...,α'M是經(jīng)過處理的提取參照值,近似的認為它是原始未經(jīng)過量化過的參照值
根據(jù)以上公式可以推導出如下公式
則有
其中矩陣A(E,T)是可以通過矩陣A得到的,向量S可以通過提取的參照值與步驟27中的公式計算得出。那么向量vT就可以通過解公式步驟28的方程組得到。得到向量vT之后,只需要將其解壓縮就可以得到恢復的原始信號。
步驟29,標準化篡改恢復信號。
標準化公式為:
其中是Y一無量綱的隨機變量,E(X)是隨機變量X的期望,而D(X)是隨機變量X的方差。
把一個恢復后幀組的信息標準化到統(tǒng)計好的信息上。采用公式
其中,X1是一個幀組內(nèi)的幀組成的隨機變量,將兩個分布都標準化為沒有量綱的隨機變量
對上面的公式進行變形,得到實際中使用的兩個參數(shù)
使用這兩個參數(shù),與X1本身的分布期望一起,將其標準化。
盡管上面結(jié)合圖對本發(fā)明進行了描述,但是本發(fā)明并不局限于上述的具體實施方式,上述的具體實施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨的情況下,還可以做出很多變形,這些均屬于本發(fā)明的保護之內(nèi)。