本發(fā)明涉及數(shù)字音頻水印技術(shù)領(lǐng)域,尤其涉及基于嵌入?yún)^(qū)域選擇的音頻水印方法及系統(tǒng)。
背景技術(shù):
數(shù)字音頻水印是向音頻信號中添加某些數(shù)字信息以達(dá)到文件真?zhèn)舞b別、版權(quán)保護(hù)、信息隱藏等目的的信號處理操作。音頻水印嵌入?yún)^(qū)域的選擇技術(shù)是指在水印嵌入到音頻信號之前,選擇合適音頻區(qū)域嵌入水印。傳統(tǒng)音頻水印技術(shù),沒有考慮到音頻信號的特征,對整個音頻文件都進(jìn)行水印的嵌入,這樣會導(dǎo)致1)音頻信號幅度低的區(qū)域嵌入水印后,幅值超出了掩蔽閾值產(chǎn)生噪音,破壞了感知透明性;2)對于音頻信號中出現(xiàn)變化劇烈的瞬態(tài)信號,該區(qū)域的音頻信號的方差很大,嵌入水印后導(dǎo)致檢測水印時的水印誤碼率很高;3)在頻域嵌入水印,如果選擇人耳感知不顯著的區(qū)域嵌入水印,在經(jīng)過信號處理或音頻有損壓縮后,水印將會丟失一部分,導(dǎo)致水印檢測誤碼率高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供選擇區(qū)域嵌入的音頻水印技術(shù),使水印能夠嵌入到合適的音頻區(qū)域中去,避免出現(xiàn)不必要的噪聲以及減少誤碼的發(fā)生。
為達(dá)到上述目的,本發(fā)明提供的技術(shù)方案提供一種基于嵌入?yún)^(qū)域選擇的音頻水印方法,包括嵌入過程和檢測過程,
所述嵌入過程包括以下步驟,
步驟A1,讀取音頻文件,得到采樣率fs1和分幀后第n幀時域音頻的信號xn,幀長為N,
先對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷,
然后針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,進(jìn)行音頻水印的嵌入頻率段的選擇,進(jìn)行音頻水印的嵌入頻率段的選擇,設(shè)根據(jù)人耳感知敏感的頻率部分預(yù)設(shè)的嵌入的開始頻率為FWMIN、結(jié)束頻率為FWMAX,一幀的開始嵌入點(diǎn)freqmin1和嵌入結(jié)束點(diǎn)freqmax1求取如下,
freqmin1=floor((FWMIN×2.0/fs1)×N)
freqmax1=floor((FWMAX×2.0/fs1)×N)
其中,floor為向下取整函數(shù);
步驟A2,對能夠嵌入水印的各幀信號xn,進(jìn)行離散傅立葉變換得到頻域信號Xn;
步驟A3,利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax1-freqmin1+1的二進(jìn)制偽隨機(jī)的擴(kuò)頻序列u;
步驟A4,根據(jù)擴(kuò)頻序列u、頻域信號Xn和水印比特b,進(jìn)行水印的嵌入,得到嵌入水印后的頻域信號,計算如下,
|X′n|=|Xn|+bαu
其中,α為常數(shù),控制水印的嵌入強(qiáng)度,|Xn|和|X′n|分別表示嵌入水印前的頻域幅值和嵌入水印后的頻域幅度,然后通過歐拉公式得到嵌入水印后的頻域信號
其中,∠Xn表示頻域信號的相位,X′n表示嵌入水印后的頻域信號,e為數(shù)學(xué)自然指數(shù);
步驟A5,將嵌入水印后的頻域信號X′n變換到時域,生成嵌入水印的音頻文件;
所述檢測過程包括以下步驟,
步驟B1,讀取待檢測的音頻文件,得到的時域分幀后的第n幀信號zn和采樣率fs2,
先對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷;
針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,作為待檢測的信號,計算檢測范圍的起始點(diǎn)freqmin2和頻域結(jié)束點(diǎn)freqmax2
freqmin2=floor((FWMIN×2.0/fs2)×N)
freqmax2=floor((FWMAX×2.0/fs2)×N)
步驟B2,進(jìn)行離散傅立葉變換得到待檢測信號的頻域信號Zn,相應(yīng)頻域幅度值記為|Zn|;
步驟B3,利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax2-freqmin2+1的二進(jìn)制偽隨機(jī)的擴(kuò)頻序列u;
步驟B4,根據(jù)擴(kuò)頻序列u和待檢測信號的頻域幅度值|Zn|,計算出檢測的充分統(tǒng)計量rn如下,
如果充分統(tǒng)計量rn≥0,那么檢測到的水印比特為b=1;否則,檢測到的水印比特為b=0。
而且,步驟A1和步驟B1中,對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷,實(shí)現(xiàn)方式如下,
1)信號xn的平均能量的大小超出預(yù)設(shè)的相應(yīng)閾值τ1,是則為靜音區(qū),不允許嵌入水??;
2)如果信號xn內(nèi)包含瞬態(tài)信號,則不允許嵌入水印。
而且,信號xn內(nèi)是否包含瞬態(tài)信號,通過以下方式判斷,
設(shè)將一幀信號分解為S個塊,分別計算出S個塊的能量,比較最大能量的塊與最小能量塊的能量比rate和預(yù)設(shè)的相應(yīng)閾值τ2,如果rate大于τ2則認(rèn)為該幀信號包含瞬態(tài)信號。
本發(fā)明還相應(yīng)提供一種基于嵌入?yún)^(qū)域選擇的音頻水印系統(tǒng),包括音頻水印嵌入子系統(tǒng)和水印檢測子系統(tǒng),
所述音頻水印嵌入子系統(tǒng)包括以下模塊,
選擇合適區(qū)域嵌入模塊,用于讀取音頻文件,得到采樣率fs1和分幀后第n幀時域音頻的信號xn,幀長為N,
先對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷,
然后針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,進(jìn)行音頻水印的嵌入頻率段的選擇,進(jìn)行音頻水印的嵌入頻率段的選擇,設(shè)根據(jù)人耳感知敏感的頻率部分預(yù)設(shè)的嵌入的開始頻率為FWMIN、結(jié)束頻率為FWMAX,一幀的開始嵌入點(diǎn)freqmin1和嵌入結(jié)束點(diǎn)freqmax1求取如下,
freqmin1=floor((FWMIN×2.0/fs1)×N)
freqmax1=floor((FWMAX×2.0/fs1)×N)
其中,floor為向下取整函數(shù);
第一時頻轉(zhuǎn)換模塊,用于對能夠嵌入水印的各幀信號xn,進(jìn)行離散傅立葉變換得到頻域信號Xn;
第一擴(kuò)頻序列生成模塊,用于利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax1-freqmin1+1的二進(jìn)制偽隨機(jī)的擴(kuò)頻序列u;
水印嵌入模塊,用于根據(jù)擴(kuò)頻序列u、頻域信號Xn和水印比特b,進(jìn)行水印的嵌入,得 到嵌入水印后的頻域信號,計算如下,
|X′n|=|Xn|+bαu
其中,α為常數(shù),控制水印的嵌入強(qiáng)度,|Xn|和|X′n|分別表示嵌入水印前的頻域幅值和嵌入水印后的頻域幅度,然后通過歐拉公式得到嵌入水印后的頻域信號
其中,∠Xn表示頻域信號的相位,X′n表示嵌入水印后的頻域信號,e為數(shù)學(xué)自然指數(shù);
時頻逆變換模塊,用于將嵌入水印后的頻域信號X′n變換到時域,生成嵌入水印的音頻文件;
所述水印檢測子系統(tǒng)包括以下模塊,
選擇合適區(qū)域檢測模塊,用于讀取待檢測的音頻文件,得到的時域分幀后的第n幀信號zn和采樣率fs2,
先對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷;
針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,作為待檢測的信號,計算檢測范圍的起始點(diǎn)freqmin2和頻域結(jié)束點(diǎn)freqmax2
freqmin2=floor((FWMIN×2.0/fs2)×N)
freqmax2=floor((FWMAX×2.0/fs2)×N)
第二時頻轉(zhuǎn)換模塊,用于進(jìn)行離散傅立葉變換得到待檢測信號的頻域信號Zn,相應(yīng)頻域幅度值記為|Zn|;
第二擴(kuò)頻序列生成模塊,用于利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax2-freqmin2+1的二進(jìn)制偽隨機(jī)的擴(kuò)頻序列u;
相關(guān)檢測模塊,用于根據(jù)擴(kuò)頻序列u和待檢測信號的頻域幅度值|Zn|,計算出檢測的充分統(tǒng)計量rn如下,
如果充分統(tǒng)計量rn≥0,那么檢測到的水印比特為b=1;否則,檢測到的水印比特為b=0。
而且,選擇合適區(qū)域嵌入模塊和選擇合適區(qū)域檢測模塊中,對每幀信號xn進(jìn)行是否能夠 作為嵌入?yún)^(qū)域的判斷,實(shí)現(xiàn)方式如下,
1)信號xn的平均能量的大小超出預(yù)設(shè)的相應(yīng)閾值τ1,是則為靜音區(qū),不允許嵌入水??;
2)如果信號xn內(nèi)包含瞬態(tài)信號,則不允許嵌入水印。
而且,信號xn內(nèi)是否包含瞬態(tài)信號,通過以下方式判斷,
設(shè)將一幀信號分解為S個塊,分別計算出S個塊的能量,比較最大能量的塊與最小能量塊的能量比rate和預(yù)設(shè)的相應(yīng)閾值τ2,如果rate大于τ2則認(rèn)為該幀信號包含瞬態(tài)信號。
本發(fā)明提出了通過幀內(nèi)最大能量與最小能量比來濾除瞬態(tài)信號提升水印檢測的準(zhǔn)確率,通過將水印嵌入在人耳感知顯著的頻段來提升水印的魯棒性,進(jìn)一步地,提出利用平均能量來濾除安靜區(qū)域提升感知透明性。本發(fā)明技術(shù)方案具有重要的市場價值。
附圖說明
圖1是本發(fā)明實(shí)施例的嵌入子系統(tǒng)結(jié)構(gòu)框圖。
圖2是本發(fā)明實(shí)施例的檢測子系統(tǒng)結(jié)構(gòu)框圖。
圖3是本發(fā)明實(shí)施例的嵌入過程流程圖
圖4是本發(fā)明實(shí)施例的檢測過程流程圖。
具體實(shí)施方式
下面以具體實(shí)施例結(jié)合附圖對本發(fā)明的技術(shù)方案作進(jìn)一步說明。
本發(fā)明實(shí)施例提供一種基于嵌入?yún)^(qū)域選擇的音頻水印系統(tǒng),包括音頻水印嵌入子系統(tǒng)和水印檢測子系統(tǒng)。
參見圖1,本發(fā)明實(shí)施例提供的嵌入?yún)^(qū)域選擇的音頻水印技術(shù)嵌入子系統(tǒng),包括選擇合適區(qū)域嵌入模塊1、第一時頻轉(zhuǎn)換模塊2、第一擴(kuò)頻序列生成模塊3、水印嵌入模塊4和時頻逆變換模塊5,具體實(shí)施時可以采用軟件固化技術(shù)實(shí)現(xiàn)各模塊。
所述選擇合適區(qū)域嵌入模塊1,對讀取的時域音頻信號幀進(jìn)行判斷,具體實(shí)施時可以逐幀判斷是否能夠滿足嵌入水印的條件:不滿足就跳過此幀,繼續(xù)下一幀的判斷;如果滿足就將信號輸出給第一時頻變換模塊2,根據(jù)讀取到的時域音頻信號的采樣率和人耳較為敏感的頻率范圍計算此頻域信號嵌入水印的范圍,并將可嵌入范圍內(nèi)的頻域信號輸出給水印嵌入模塊4,將該嵌入范圍的最大值和最小值輸出給第一擴(kuò)頻序列生成模塊3;
所述第一時頻轉(zhuǎn)換模塊2,用于將讀取到的時域音頻信號轉(zhuǎn)換為頻域信號,輸出給水印嵌入模塊4;
所述第一擴(kuò)頻序列生成模塊3,用于根據(jù)隨機(jī)數(shù)種子和選擇合適區(qū)域嵌入模塊1輸入的 嵌入范圍的最大值和最小值生成與嵌入范圍同長度的幅值為1或-1均勻分布的隨機(jī)序列,并將此隨機(jī)序列輸出給水印嵌入模塊4;
所述水印嵌入模塊4,對于頻域信號中的幅度譜,生成頻域的帶有水印信息的音頻信號輸出給時頻逆變換模塊5;
所述時頻逆變換模塊5,用于將水印嵌入模塊4輸入的頻域的帶有水印信息的音頻信號轉(zhuǎn)換為時域的帶有水印信息的音頻信號,并將此時域的帶有水印信息的音頻信號生成音頻文件,就得到帶有水印信息的音頻文件。
參見圖2,本發(fā)明實(shí)施例提供的基于相位編碼的自適應(yīng)音頻水印檢測子系統(tǒng),包括選擇合適區(qū)域檢測模塊6、第二時頻轉(zhuǎn)換模塊7、第二擴(kuò)頻序列生成模塊8、相關(guān)檢測模塊9,具體實(shí)施時可以采用軟件固化技術(shù)實(shí)現(xiàn)各模塊。
所述選擇合適區(qū)域檢測模塊6與選擇合適區(qū)域嵌入模塊1的功能基本相同,不滿足水印嵌入條件的區(qū)域,一般也不含有水印,檢測時可以不用考慮:具體實(shí)施時可以逐幀判斷,對于不滿足檢測條件的幀,跳過不檢測,繼續(xù)下一幀的判斷;滿足檢測條件的音頻信號輸出給第二時頻變換模塊7,同樣將頻率檢測區(qū)域的最大值與最小值輸出給第二時頻轉(zhuǎn)換模塊7和第二擴(kuò)頻序列生成模塊8;
所述第二時頻轉(zhuǎn)換模塊7,用于將讀取到的時域音頻信號轉(zhuǎn)換為頻域信號,輸出給相關(guān)檢測模塊9;
所述第二擴(kuò)頻序列生成模塊8與第一擴(kuò)頻序列生成模塊3的功能基本相同,將產(chǎn)生的結(jié)果輸出給相關(guān)檢測模塊9;
所述相關(guān)檢測模塊9,用于根據(jù)檢測范圍對輸入的待檢測的頻域幅值信號和擴(kuò)頻序列生成模塊9輸入的擴(kuò)頻序列,計算相關(guān)值,根據(jù)相關(guān)值的符號,判斷出水印。
各模塊具體實(shí)現(xiàn)參見方法相應(yīng)步驟,本發(fā)明不予贅述。本發(fā)明實(shí)施例提供的基于嵌入?yún)^(qū)域選擇的音頻水印方法,包括嵌入過程和檢測過程。
參見圖3,本發(fā)明實(shí)施例提供的基于選擇區(qū)域的音頻水印嵌入過程可以采用計算機(jī)軟件技術(shù)手段自動進(jìn)行流程,具體包括以下步驟:
步驟A1,讀取音頻文件,對時域的音頻信號x先分幀,得到采樣率fs1和分幀后的第n幀時域音頻信號xn(幀長為N),對每幀信號xn進(jìn)行是否能夠作為嵌入?yún)^(qū)域的判斷,判斷包含兩方面的判斷:
1)判斷xn的平均能量的大小是否超出設(shè)定的閾值,來判斷當(dāng)前幀xn是否為靜音區(qū),如 果是靜音區(qū)就不允許嵌入水印,否則超出閾值就不是靜音區(qū),可能進(jìn)行嵌入。通過下面的公式計算第n幀的平均能量
其中,N為幀長,即一幀內(nèi)的樣本點(diǎn)數(shù);i為一幀內(nèi)的樣本點(diǎn)索引序號,取值在0到N-1之間;xn2(i)表示第n幀時域信號xn在幀內(nèi)第i點(diǎn)的能量;τ1為平均能量的判決閾值,具體實(shí)施時本領(lǐng)域技術(shù)人員可自行預(yù)設(shè)取值,例如根據(jù)經(jīng)驗(yàn)得到;如果超出閾值,則滿足條件1),進(jìn)行下面條件2)的判斷。
2)對于一幀內(nèi)出現(xiàn)瞬態(tài)信號的情況,由于其頻率劇烈變化,會造成的較大的方差,在檢測時信號方差越大造成的水印檢測的錯誤概率越高,這種情況也不應(yīng)該嵌入水印。通過將一幀分解為S個塊,分別計算出S個塊的能量,通過最大能量的塊與最小能量塊的能量比rate和閾值τ2的比較,rate大于τ2則認(rèn)為是該幀信號包含瞬態(tài)信號不予嵌入水印,否則可以嵌入水印。具體實(shí)施時,本領(lǐng)域技術(shù)人員可自行預(yù)設(shè)S的取值。
具體實(shí)現(xiàn)方式如下:
首先將一幀信號xn分成S個塊,則每個子塊內(nèi)的樣本點(diǎn)數(shù)M為
M=N/S (2)
每個塊的能量Ei計算如下
其中,i表示幀內(nèi)塊的索引序號,j表示幀內(nèi)樣本點(diǎn)的索引序號,xn2(j)表示第n幀時域信號xn在幀內(nèi)第j點(diǎn)的能量。
找出塊能量中的最大能量EMax和最小能量EMin
EMax=MAX{Ei},EMin=MIN{Ei},i∈[0,S-1] (4)
其中,MAX,MIN分別表示求最大值函數(shù)和最小值函數(shù)。
最大能量和最小能量的比rate計算如下:
如果rate>τ2,就認(rèn)為信號幀xn內(nèi)存在瞬態(tài)信號,該幀不嵌入水??;否則,可以嵌入水印。其中τ2為閾值,具體實(shí)施時本領(lǐng)域技術(shù)人員可自行預(yù)設(shè)取值,例如τ2為瞬態(tài)信號的檢測閾值,根據(jù)經(jīng)驗(yàn)得到。
然后針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,對于音頻水印的嵌入頻率段的選擇,應(yīng)為人耳感知較為顯著的區(qū)域,本領(lǐng)域技術(shù)人員可根據(jù)人耳感知特性自行預(yù)先設(shè)定,例如1000-7000Hz。因?yàn)檫@些區(qū)域的信號在經(jīng)過濾波、音頻壓縮等攻擊后,不會被去除。所以將水印嵌入到感知明顯的區(qū)域,在經(jīng)受一些信號攻擊后不會被抹掉,能夠檢測出來。設(shè)設(shè)根據(jù)人耳感知敏感的頻率部分預(yù)設(shè)的嵌入的開始頻率為FWMIN、結(jié)束頻率為FWMAX,對應(yīng)一幀的開始嵌入點(diǎn)freqmin1和嵌入結(jié)束點(diǎn)freqmax1求取如下,
freqmin1=floor((FWMIN×2.0/fs1)×N) (6)
freqmax1=floor((FWMAX×2.0/fs1)×N) (7)
其中,floor為向下取整函數(shù)。
根據(jù)開始嵌入點(diǎn)freqmin1和嵌入結(jié)束點(diǎn)freqmax1,選取此范圍內(nèi)的頻域音頻信號。
具體實(shí)施時可以逐幀判斷,不滿足條件的跳過,進(jìn)行下一幀的判斷。
步驟A2,對能夠嵌入水印的信號幀xn,進(jìn)行FFT變換(快速離散傅立葉變換)為頻域信號Xn。
步驟A3,利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax1-freqmin1+1的二進(jìn)制偽隨機(jī)擴(kuò)頻序列u。
在MATLAB中的實(shí)施例具體過程如下:
首先,利用密鑰key,調(diào)用RandStream函數(shù)(隨機(jī)種子函數(shù))對rand函數(shù)(隨機(jī)數(shù)生成函數(shù))進(jìn)行初始化,然后調(diào)用rand函數(shù)生成隨機(jī)數(shù),由于rand函數(shù)生成的隨機(jī)數(shù)是0~1之間的數(shù),還需對這些數(shù)進(jìn)行四舍五入變成0和1的二進(jìn)制偽隨機(jī)序列,然后將此單極性的偽隨機(jī)序列,轉(zhuǎn)為雙極性只含有+1和-1的偽隨機(jī)序列u。
步驟A4,根據(jù)擴(kuò)頻序列u、頻域信號Xn和水印比特b,利用下面的公式(8)進(jìn)行水印的嵌入,得到嵌入水印后的頻域信號,計算實(shí)現(xiàn)如下
|X′n|=|Xn|+bαu (8)
其中,α為常數(shù),控制水印的嵌入強(qiáng)度,具體實(shí)施時本領(lǐng)域技術(shù)人員可預(yù)設(shè)取值;|Xn|和|X′n|分別表示嵌入水印前的頻域幅值和嵌入水印后的頻域幅度,然后通過歐拉公式得到嵌入 水印后的頻域信號。
其中,∠Xn表示頻域信號的相位,X′n表示嵌入水印后的頻域信號,e為數(shù)學(xué)自然指數(shù)。
步驟A5,將嵌入水印后的頻域信號X′n變換到時域,最后生成音頻文件,即得到嵌入水印的音頻文件。
參見圖4,本發(fā)明實(shí)施例提供的基于選擇區(qū)域嵌入的音頻水印檢測過程,可以采用計算機(jī)軟件技術(shù)手段自動進(jìn)行流程,具體包括以下步驟:
步驟B1,讀取待檢測的音頻文件,得到的時域分幀后的第n幀信號zn和采樣率fs2,對各時域信號zn采取步驟A1中一樣的判決方法,
即考慮如下兩個條件,
1)信號xn的平均能量的大小超出預(yù)設(shè)的相應(yīng)閾值τ1,是則為靜音區(qū),不允許嵌入水印;
2)如果信號xn內(nèi)包含瞬態(tài)信號,則不允許嵌入水印。
則不為靜音區(qū)且不包含瞬態(tài)信號的幀信號,能夠嵌入水印并有待檢測。
具體實(shí)施時可以逐幀判斷,不滿足條件的跳過,進(jìn)行下一幀的判斷。
針對能夠作為嵌入?yún)^(qū)域的各幀信號xn,作為待檢測的信號,計算檢測范圍的頻域起始點(diǎn)freqmin2和頻域結(jié)束點(diǎn)freqmax2
freqmin2=floor((FWMIN×2.0/fs2)×N) (10)
freqmax2=floor((FWMAX×2.0/fs2)×N) (11)
步驟B2,對于滿足檢測條件的信號zn,進(jìn)行離散傅立葉變換得到待檢測信號的頻域信號Zn,相應(yīng)頻域幅度值記為|Zn|。
步驟B3,利用密鑰key,生成二進(jìn)制擴(kuò)頻序列u(與上面嵌入方法得到的u方式相同),即利用密鑰key作為隨機(jī)數(shù)種子,生成長度為freqmax2-freqmin2+1的二進(jìn)制偽隨機(jī)擴(kuò)頻序列u。
步驟B4,根據(jù)擴(kuò)頻序列u和待檢測信號的頻域幅度值|Zn|,通過計算擴(kuò)頻序列u和待檢測信號的頻域幅度值|Zn|的相關(guān)值,計算出檢測的充分統(tǒng)計量rn
其中,<·>表示信號的內(nèi)積計算。
如果充分統(tǒng)計量rn≥0,那么檢測到的水印比特為b=1;否則,檢測到的水印比特為b=0。
本發(fā)明中所描述的具體實(shí)施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。