專(zhuān)利名稱(chēng):一種在音頻中嵌入和解出水印的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息隱藏技術(shù),尤其涉及一種基于隨機(jī)擴(kuò)頻碼的在數(shù)字音頻中嵌入和解出水印的方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的飛速發(fā)展,人們獲取數(shù)字多媒體文件更加便捷。但是,隨之而來(lái)的是針對(duì)數(shù)字多媒體文件的大量非授權(quán)拷貝和下載及其他非法獲取和使用。數(shù)字水印就是一項(xiàng)應(yīng)運(yùn)而生的,能進(jìn)行所有權(quán)認(rèn)證和追蹤非授權(quán)行為等應(yīng)用的信息隱藏技術(shù)。在數(shù)字音頻領(lǐng)域的應(yīng)用中,數(shù)字水印必須保證在經(jīng)過(guò)一系列的音頻處理之后水印信息仍然是完整準(zhǔn)確的,這是水印安全性方面的最重要的屬性。因此,在保證水印的安全性方面的技術(shù)層出不窮。數(shù)字水印技術(shù)發(fā)展到今天已經(jīng)發(fā)展出了大量的算法。雖然水印算法的嵌入域包括了時(shí)域、幅頻域、相頻域、小波域、奇異值分解域等,但其中主流的嵌入方法分為擴(kuò)頻和量化兩大類(lèi)。相對(duì)于量化的方法,擴(kuò)頻方法的優(yōu)勢(shì)在于安全性高,有很強(qiáng)的抵御攻擊的能力。因此,在數(shù)字音頻應(yīng)用領(lǐng)域,擴(kuò)頻的水印嵌入方法更適合應(yīng)用在抗混音攻擊的場(chǎng)合。音頻水印的混音攻擊是指混合多個(gè)含有音頻水印的音頻文件,從而導(dǎo)致水印無(wú)法解出或者解出大量錯(cuò)碼的情況。對(duì)加過(guò)水印的音頻進(jìn)行混音之后,各個(gè)音頻的水印碼之間會(huì)產(chǎn)生相互干擾,導(dǎo)致了在解碼的時(shí)候擴(kuò)頻碼的相關(guān)得分受到很大干擾,產(chǎn)生大量的錯(cuò)碼。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能夠克服至少上述缺陷之一的在音頻中嵌入和解出水印的方法和裝置。在本發(fā)明的第一方面,提供了一種在音頻中嵌入水印的方法,其中,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述方法包括根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定;用所述第一擴(kuò)頻碼將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻;以及用所述第二擴(kuò)頻碼將水印信息作為當(dāng)前水印幀的信息位嵌入所述音頻。在本發(fā)明的第二方面,提供了一種在音頻中嵌入水印的裝置,其中,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述裝置包括包括擴(kuò)頻碼生成模塊,用于根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定;同步頭嵌入模塊,用于用所述第一擴(kuò)頻碼將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻;信息位嵌入模塊,用于用所述第二擴(kuò)頻碼將水印信息作為當(dāng)前水印幀的信息位嵌入所述音頻。在本發(fā)明的第三方面,提供了一種從音頻中解出水印的方法,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰,所述方法包括根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和所述音頻得到所述公鑰;根據(jù)所述公鑰從所述第二擴(kuò)頻碼池中得到所述第二擴(kuò)頻碼;以及根據(jù)所述第二擴(kuò)頻碼和所述音頻得到所述信息位中的水印信息。在本發(fā)明的第四方面,提供了一種從音頻中解出水印的裝置,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰,所述裝置包括公鑰獲取模塊,用于根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和所述音頻得到所述公鑰;第二擴(kuò)頻碼獲取模塊,用于根據(jù)所述公鑰從所述第二擴(kuò)頻碼池中得到所述第二擴(kuò)頻碼;以及信息位獲取模塊,用于根據(jù)所述第二擴(kuò)頻碼和所述音頻得到所述信息位中的水印信息。本發(fā)明充分利用了不同擴(kuò)頻碼之間的不相關(guān)性,采用了一種隨機(jī)使用擴(kuò)頻碼的方法讓混音音頻中各個(gè)水印分量把相互干擾降到最低,大大提高了水印解碼的正確率。同時(shí),考慮到使用所有擴(kuò)頻碼進(jìn)行相關(guān)檢測(cè),會(huì)讓計(jì)算量猛增,還提出了一種新的幀結(jié)構(gòu),讓計(jì)算量大大降低。另外,提出了一種多同步技術(shù),這讓各個(gè)混合分量都能在解碼時(shí)同時(shí)得到同步,解決了以往的同步技術(shù)只能讓一個(gè)混音分量得到同步的問(wèn)題。從而實(shí)現(xiàn)了能夠抵御混音攻擊的數(shù)字音頻水印算法。
圖1是根據(jù)本發(fā)明實(shí)施例的水印幀的結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的在音頻中嵌入水印的方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的從音頻中解出水印的方法的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的在音頻中嵌入水印的裝置的示意圖;以及圖5是根據(jù)本發(fā)明實(shí)施例的從音頻中解出水印的裝置的示意圖。
具體實(shí)施例方式下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。本發(fā)明充分利用了不同擴(kuò)頻碼之間的不相關(guān)性,采用一種隨機(jī)使用擴(kuò)頻碼的方法讓各個(gè)混合水印分量把相互干擾降到最低,大大提高了水印解碼的正確率。同時(shí),考慮到進(jìn)行相關(guān)檢測(cè)所使用的擴(kuò)頻碼的數(shù)量增加會(huì)讓計(jì)算量猛增,還提出了一種新的水印幀結(jié)構(gòu),讓計(jì)算量大大降低。另外,提出了一種多同步技術(shù),這讓各個(gè)混合水印分量都能在解碼時(shí)同時(shí)得到同步,解決了以往的同步技術(shù)只能讓一個(gè)混音分量得到同步的問(wèn)題。從而實(shí)現(xiàn)了能夠抵御混音攻擊的數(shù)字音頻水印算法。圖1是根據(jù)本發(fā)明實(shí)施例的水印幀的結(jié)構(gòu)示意圖如圖1所示,根據(jù)本發(fā)明實(shí)施例的水印幀包括同步頭、信息位和空白位,其中,同步頭可以包括同步位1、信息位擴(kuò)頻碼公鑰和同步位2。同步頭的結(jié)構(gòu)可以是以同步位I開(kāi)頭,后面接著是信息位擴(kuò)頻碼公鑰,最后是同步位2的形式,當(dāng)然也可以有其他形式,比如取消同步位I或2。同步位是預(yù)先設(shè)定的,它標(biāo)明了同步頭的到來(lái),沒(méi)有具體的信息含義;在水印解出的水印擴(kuò)頻序列進(jìn)行檢測(cè)時(shí),會(huì)得到一個(gè)較高的分?jǐn)?shù),其正負(fù)只表示其位置是否正確,比如可以將同步位設(shè)定為1111。信息位擴(kuò)頻碼公鑰包含了用于信息位的擴(kuò)頻碼的加密信息。信息位包含有水印的詳細(xì)內(nèi)容,空白位表示每個(gè)水印幀之間的音頻長(zhǎng)度。圖2是根據(jù)本發(fā)明實(shí)施例的在音頻中嵌入水印的方法的流程圖。根據(jù)本發(fā)明實(shí)施例的音頻水印嵌入方法是通過(guò)在未嵌入水印的音頻中順序嵌入多個(gè)水印幀,最終得到嵌入了水印的音頻。每個(gè)水印幀嵌入音頻的過(guò)程基本類(lèi)似,下面僅詳細(xì)描述在音頻中嵌入一個(gè)水印幀的情況。在步驟201,根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定。首先,可以初始化兩個(gè)擴(kuò)頻碼池,第一個(gè)擴(kuò)頻碼池用于嵌入水印幀的同步頭,第二個(gè)擴(kuò)頻碼池用于嵌入水印幀的信息位。例如,第一擴(kuò)頻碼池和第二擴(kuò)頻碼池中的擴(kuò)頻碼個(gè)數(shù)可以分別為5和128。接下來(lái),分別產(chǎn)生取值范圍在1-5和1-128之間的第一和第二隨機(jī)數(shù),用第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出對(duì)應(yīng)的第一擴(kuò)頻碼,用第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出對(duì)應(yīng)的第二擴(kuò)頻碼。可見(jiàn),用于信息位的擴(kuò)頻碼是從大量擴(kuò)頻碼中選取的,使得同一種擴(kuò)頻碼在混音時(shí)相遇的可能性降低。另外,用于同步頭的擴(kuò)頻碼也是隨機(jī)的。但是,由于在水印解出的同步過(guò)程中,所有第一個(gè)擴(kuò)頻碼池的擴(kuò)頻碼都需要與音頻計(jì)算相關(guān)得分,過(guò)多的第一擴(kuò)頻碼的數(shù)量會(huì)導(dǎo)致同步過(guò)程的計(jì)算量大大增加。因此,在折中計(jì)算量和性能之后,可以選擇同步頭所用的擴(kuò)頻碼數(shù)量為5。因?yàn)橥筋^比較短,因此重合的可能性比較小。在步驟202,根據(jù)所述第一擴(kuò)頻碼,將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻文件中,其中,編碼后的第二隨機(jī)數(shù)是所述的信息位擴(kuò)頻碼公鑰,用于在水印解出時(shí)解碼得到所述第二擴(kuò)頻碼。例如,由于采用BCH進(jìn)行編碼可以有很好的容錯(cuò)功能,因此可以將第二隨機(jī)數(shù)用糾錯(cuò)碼BCH碼進(jìn)行編碼后作為所述信息位擴(kuò)頻公鑰嵌入音頻文件。在步驟203,根據(jù)所述第二擴(kuò)頻碼,將所述水印信息編碼后作為當(dāng)前水印幀的信息位嵌入所述音頻文件中。在步驟204,將第三隨機(jī)數(shù)編碼后作為當(dāng)前水印幀的空白位嵌入所述音頻文件中,其中,在當(dāng)前水印幀嵌入之后,在所述音頻文件中跳過(guò)一段長(zhǎng)度再進(jìn)行下一水印幀的嵌入,所述一段長(zhǎng)度由所述第三隨機(jī)數(shù)決定。例如,可以將信息位的長(zhǎng)度轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,以該數(shù)值為第三隨機(jī)數(shù)的取值范圍得到所述第三隨機(jī)數(shù)。在傳統(tǒng)的水印嵌入中,音頻中嵌入的一個(gè)水印幀一個(gè)緊接著一個(gè),在音頻文件混音時(shí)可能將同步頭會(huì)重疊在一起;在采用隨機(jī)長(zhǎng)度的空白位之后,每個(gè)嵌入的水印幀的長(zhǎng)度是隨機(jī)的,這種水印音頻在混音時(shí)不會(huì)產(chǎn)生傳統(tǒng)技術(shù)那樣的同步頭重疊的周期性錯(cuò)誤。當(dāng)然,即使沒(méi)有空白位的存在本發(fā)明的水印嵌入依然能夠?qū)崿F(xiàn)。上面描述了在音頻文件中嵌入一個(gè)水印幀的流程。本發(fā)明的水印嵌入方法順序地嵌入水印幀,例如,在跳過(guò)空白位指示的音頻長(zhǎng)度后繼續(xù)下一次水印幀的嵌入,直到該音頻文件結(jié)束,從而生成嵌入了水印的音頻。應(yīng)當(dāng)指出,在嵌入水印幀之前,應(yīng)當(dāng)首先對(duì)音頻進(jìn)行快速傅里葉變換得到音頻的相位譜和幅度譜。然后,上述的水印幀嵌入過(guò)程是將其嵌入所述幅度譜,嵌入過(guò)程可以使用平衡調(diào)制和心理聲學(xué)模型來(lái)保證其穩(wěn)健性和不可感知性;在幅度譜中嵌入水印幀之后,需要對(duì)所述相位譜和嵌入水印的幅度譜進(jìn)行快速傅里葉逆變換,最終得到嵌入水印的音頻。圖3是根據(jù)本發(fā)明實(shí)施例的從音頻中解出水印的方法的流程圖。應(yīng)當(dāng)指出,根據(jù)本發(fā)明實(shí)施例的音頻水印解出方法可以應(yīng)用于根據(jù)本發(fā)明實(shí)施例的音頻嵌入方法生成的水印音頻,也可以應(yīng)用于由多個(gè)根據(jù)本發(fā)明實(shí)施例的音頻嵌入方法產(chǎn)生的水印音頻混音生成的音頻。如嵌入過(guò)程所述,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰。在步驟301,根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和嵌入水印的音頻(下稱(chēng)水印音頻),得到用于嵌入信息位的擴(kuò)頻碼的公鑰,如下詳述。首先,分別逐幀計(jì)算所述第一擴(kuò)頻碼池中的每個(gè)擴(kuò)頻碼與水印音頻的相關(guān)得分,從而得到多個(gè)幀得分隊(duì)列。每個(gè)幀得分隊(duì)列包括針對(duì)所述第一擴(kuò)頻碼池中的一個(gè)擴(kuò)頻碼與音頻的多幀相關(guān)得分,所述幀得分隊(duì)列可以用具有預(yù)定容量的先入先出存儲(chǔ)器來(lái)實(shí)現(xiàn)。然后,分別從每個(gè)幀得分隊(duì)列中選取一部分相關(guān)得分來(lái)計(jì)算同步位。如果多個(gè)幀得分隊(duì)列中出現(xiàn)了滿(mǎn)足所有同步位信息并且該部分相關(guān)得分之和超過(guò)預(yù)定閾值的隊(duì)列,則將相關(guān)得分之和的計(jì)算逐幀后移,注意,相關(guān)得分之和針對(duì)的是一個(gè)預(yù)定數(shù)量的相關(guān)得分。如果所述相關(guān)得分之和在逐幀后移的過(guò)程中達(dá)到峰值,則可以將該峰值點(diǎn)確定為對(duì)應(yīng)的第一擴(kuò)頻碼的同步頭位置,從而確定達(dá)到峰值的該幀的相關(guān)得分為滿(mǎn)足同步條件的相關(guān)得分。如果沒(méi)有出現(xiàn)滿(mǎn)足所有同步位信息并且該部分的相關(guān)得分之和超過(guò)閾值的隊(duì)列,則彈出幀得分隊(duì)列中最早進(jìn)入的相關(guān)得分,重新計(jì)算同步位,直到找到滿(mǎn)足條件的隊(duì)列為止。最后,從滿(mǎn)足同步條件的該幀相關(guān)得分中計(jì)算出第二擴(kuò)頻碼的公鑰。在步驟302,根據(jù)公鑰從第二擴(kuò)頻碼池中得到第二擴(kuò)頻碼。對(duì)所述公鑰進(jìn)行解碼得到第二隨機(jī)數(shù),根據(jù)所述第二隨機(jī)數(shù)從所述第二擴(kuò)頻碼池中取出所述第二擴(kuò)頻碼。在步驟303,根據(jù)所述第二擴(kuò)頻碼和所述水印音頻解出所述信息位中的水印信息。根據(jù)所述第二擴(kuò)頻碼與滿(mǎn)足同步條件的水印音頻幀進(jìn)行相關(guān)得分計(jì)算,從該幀相關(guān)得分中計(jì)算出信息位中的水印信息。在步驟304,逐幀計(jì)算所述第二擴(kuò)頻碼與水印音頻的相關(guān)得分。在步驟305,將多幀的第二擴(kuò)頻碼與所述水印音頻的相關(guān)得分與預(yù)定閾值進(jìn)行比較,根據(jù)比較結(jié)果輸出所述水印信息。如果多幀的信息位的相關(guān)得分之和低于預(yù)定閾值,則將此次同步判斷為誤同步或者判斷為同步頭中的信息位擴(kuò)頻碼公鑰無(wú)法被糾錯(cuò)碼糾錯(cuò),將此次同步判斷為無(wú)效同步,丟棄結(jié)果;反之,則將解碼得出的水印信息為有效結(jié)果輸出。然后,一直這樣同時(shí)進(jìn)行同步和解碼的相關(guān)檢測(cè)過(guò)程直到整個(gè)水印音頻文件結(jié)束。圖4是根據(jù)本發(fā)明實(shí)施例的在音頻中嵌入水印的裝置的示意圖。根據(jù)本發(fā)明實(shí)施例的音頻水印嵌入方法是通過(guò)在未嵌入水印的音頻中順序嵌入多個(gè)水印幀,最終得到嵌入了水印的音頻。每個(gè)水印幀嵌入音頻的過(guò)程基本類(lèi)似,下面僅詳細(xì)描述在音頻中嵌入一個(gè)水印幀的情況。擴(kuò)頻碼生成模塊根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定。首先,可以初始化兩個(gè)擴(kuò)頻碼池,第一個(gè)擴(kuò)頻碼池用于水印幀的同步頭,第二個(gè)擴(kuò)頻碼池用于水印幀的信息位。例如,第一擴(kuò)頻碼池和第二擴(kuò)頻碼池中的擴(kuò)頻碼個(gè)數(shù)可以分別為5和128。接下來(lái),擴(kuò)頻碼生成模塊分別產(chǎn)生取值范圍在1-5和1-128之間的第一和第二隨機(jī)數(shù),用第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出對(duì)應(yīng)的第一擴(kuò)頻碼,用第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出對(duì)應(yīng)的第二擴(kuò)頻碼??梢?jiàn),用于信息位的擴(kuò)頻碼是從大量擴(kuò)頻碼中選取的,使得同一種擴(kuò)頻碼在混音時(shí)相遇的可能性降低。另外,用于同步頭的擴(kuò)頻碼也是隨機(jī)的。但是,由于在水印解出的同步過(guò)程中,由于所有的擴(kuò)頻碼都需要與音頻計(jì)算相關(guān)得分,過(guò)多的第一擴(kuò)頻碼的數(shù)量會(huì)導(dǎo)致同步過(guò)程的計(jì)算量大大增加。因此,在折中計(jì)算量和性能之后,可以選擇同步頭所用的擴(kuò)頻碼數(shù)量為5。因?yàn)橥筋^比較短,因此重合的可能性比較小。同步頭嵌入模塊根據(jù)所述第一擴(kuò)頻碼,將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻文件中,其中,編碼后的第二隨機(jī)數(shù)是所述的信息位擴(kuò)頻碼公鑰,用于在水印解出時(shí)解碼得到所述第二擴(kuò)頻碼。例如,由于采用BCH進(jìn)行編碼可以有很好的容錯(cuò)功能,因此可以將第二隨機(jī)數(shù)用糾錯(cuò)碼BCH碼進(jìn)行編碼后作為所述信息位擴(kuò)頻公鑰嵌入音頻文件。信息位嵌入模塊根據(jù)所述第二擴(kuò)頻碼,將所述水印信息編碼后作為當(dāng)前水印幀的信息位嵌入所述音頻文件中。空白位嵌入模塊將第三隨機(jī)數(shù)編碼后作為當(dāng)前水印幀的空白位嵌入所述音頻文件中,其中,在當(dāng)前水印幀嵌入之后,在所述音頻文件中跳過(guò)一段長(zhǎng)度再進(jìn)行下一水印幀的嵌入,所述一段長(zhǎng)度由所述第三隨機(jī)數(shù)決定。例如,可以將信息位的長(zhǎng)度轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,以該數(shù)值為第三隨機(jī)數(shù)的取值范圍得到所述第三隨機(jī)數(shù)。在傳統(tǒng)的水印嵌入中,音頻中嵌入的一個(gè)水印幀一個(gè)緊接著一個(gè),在音頻文件混音時(shí)可能將同步頭會(huì)重疊在一起;在采用隨機(jī)長(zhǎng)度的空白位之后,每個(gè)嵌入的水印幀的長(zhǎng)度是隨機(jī)的,這種水印音頻在混音時(shí)不會(huì)產(chǎn)生傳統(tǒng)技術(shù)那樣的同步頭重疊的周期性錯(cuò)誤。當(dāng)然,即使沒(méi)有空白位的存在本發(fā)明的水印嵌入依然能夠?qū)崿F(xiàn)。上面描述了在音頻文件中嵌入一個(gè)水印幀的流程。本發(fā)明的水印嵌入方法順序地嵌入水印幀,例如,在跳過(guò)空白位指示的音頻長(zhǎng)度后繼續(xù)下一次水印幀的嵌入,直到該音頻文件結(jié)束,從而生成嵌入了水印的音頻。應(yīng)當(dāng)指出,在嵌入水印幀之前,快速傅里葉變換模塊首先對(duì)音頻進(jìn)行快速傅里葉變換得到音頻的相位譜和幅度譜。然后,上述的水印幀嵌入過(guò)程是將其嵌入所述幅度譜,嵌入過(guò)程可以使用平衡調(diào)制和心理聲學(xué)模型來(lái)保證其穩(wěn)健性和不可感知性;在幅度譜中嵌入水印幀之后,快速傅里葉逆變換模塊對(duì)所述相位譜和嵌入水印的幅度譜進(jìn)行快速傅里葉逆變換,最終得到嵌入水印的音頻。圖5是根據(jù)本發(fā)明實(shí)施例的從音頻中解出水印的裝置的示意圖。應(yīng)當(dāng)指出,根據(jù)本發(fā)明實(shí)施例的音頻水印解出方法可以應(yīng)用于根據(jù)本發(fā)明實(shí)施例的音頻嵌入方法生成的水印音頻,也可以應(yīng)用于由多個(gè)根據(jù)本發(fā)明實(shí)施例的音頻嵌入方法產(chǎn)生的水印音頻混音生成的音頻。如嵌入過(guò)程所述,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰。公鑰獲取模塊根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和嵌入水印的音頻(下稱(chēng)水印音頻),得到用于嵌入信息位的擴(kuò)頻碼的公鑰,如下詳述。首先,分別逐幀計(jì)算所述第一擴(kuò)頻碼池中的每個(gè)擴(kuò)頻碼與水印音頻的相關(guān)得分,從而得到多個(gè)幀得分隊(duì)列。每個(gè)幀得分隊(duì)列包括針對(duì)所述第一擴(kuò)頻碼池中的一個(gè)擴(kuò)頻碼與音頻的多幀相關(guān)得分,所述幀得分隊(duì)列可以用具有預(yù)定容量的先入先出存儲(chǔ)器來(lái)實(shí)現(xiàn)。然后,分別從每個(gè)幀得分隊(duì)列中選取一部分相關(guān)得分來(lái)計(jì)算同步位。如果多個(gè)幀得分隊(duì)列中出現(xiàn)了滿(mǎn)足所有同步位信息并且該部分相關(guān)得分之和超過(guò)預(yù)定閾值的隊(duì)列,則將相關(guān)得分之和的計(jì)算逐幀后移,注意,相關(guān)得分之和針對(duì)的是一個(gè)預(yù)定數(shù)量的相關(guān)得分。如果所述相關(guān)得分之和在逐幀后移的過(guò)程中達(dá)到峰值,則可以將該峰值點(diǎn)確定為對(duì)應(yīng)的第一擴(kuò)頻碼的同步頭位置,從而確定達(dá)到峰值的該幀的相關(guān)得分為滿(mǎn)足同步條件的相關(guān)得分。如果沒(méi)有出現(xiàn)滿(mǎn)足所有同步位信息并且該部分的相關(guān)得分之和超過(guò)閾值的隊(duì)列,則彈出幀得分隊(duì)列中最早進(jìn)入的相關(guān)得分,重新計(jì)算同步位,直到找到滿(mǎn)足條件的隊(duì)列為止。最后,從滿(mǎn)足同步條件的該幀相關(guān)得分中計(jì)算出第二擴(kuò)頻碼的公鑰。第二擴(kuò)頻碼獲取模塊根據(jù)公鑰從第二擴(kuò)頻碼池中得到第二擴(kuò)頻碼。第二擴(kuò)頻碼獲取模塊對(duì)所述公鑰進(jìn)行解碼得到第二隨機(jī)數(shù),根據(jù)所述第二隨機(jī)數(shù)從所述第二擴(kuò)頻碼池中取出所述第二擴(kuò)頻碼。信息位獲取模塊根據(jù)所述第二擴(kuò)頻碼和所述水印音頻解出所述信息位中的水印信息。信息位獲取模塊根據(jù)所述第二擴(kuò)頻碼與滿(mǎn)足同步條件的水印音頻幀進(jìn)行相關(guān)得分計(jì)算,從該幀相關(guān)得分中計(jì)算出信息位中的水印信息。然后,逐幀計(jì)算所述第二擴(kuò)頻碼與水印音頻的相關(guān)得分,將多幀的第二擴(kuò)頻碼與所述水印音頻的相關(guān)得分與預(yù)定閾值進(jìn)行比較,根據(jù)比較結(jié)果輸出所述水印信息。如果多幀的信息位的相關(guān)得分之和低于預(yù)定閾值,則將此次同步判斷為誤同步或者判斷為同步頭中的信息位擴(kuò)頻碼公鑰無(wú)法被糾錯(cuò)碼糾錯(cuò),將此次同步判斷為無(wú)效同步,丟棄結(jié)果;反之,則將解碼得出的水印信息為有效結(jié)果輸出。一直這樣同時(shí)進(jìn)行同步和解碼的相關(guān)檢測(cè)過(guò)程直到整個(gè)水印音頻文件結(jié)束。專(zhuān)業(yè)人員應(yīng)該還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。以上所述的具體實(shí)施方式
,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式
而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在 音頻中嵌入水印的方法,其中,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述方法包括: 根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定; 用所述第一擴(kuò)頻碼將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻;以及 用所述第二擴(kuò)頻碼將水印信息作為當(dāng)前水印幀的信息位嵌入所述音頻。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述水印幀還包括空白位,所述方法還包括: 將第三隨機(jī)數(shù)編碼后作為當(dāng)前水印幀的空白位嵌入所述音頻,其中,在當(dāng)前水印幀嵌入之后,在所述音頻中跳過(guò)一段長(zhǎng)度后進(jìn)行下一水印幀的嵌入,所述一段長(zhǎng)度由所述第三隨機(jī)數(shù)決定。
3.根據(jù)權(quán)利要求1所述的方法,還包括: 對(duì)所述音頻進(jìn)行快速傅里葉變換得到所述音頻的相位譜和幅度譜,其中,所述水印幀被嵌入所述幅度譜; 對(duì)所述相位譜和嵌入水印的幅度譜進(jìn)行快速傅里葉逆變換,得到嵌入水印的音頻。
4.一種從音頻中解出水印的方法,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰,所述方法包括: 根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和所述音頻得到所述公鑰; 根據(jù)所述公鑰從所述第二擴(kuò)頻碼池中得到所述第二擴(kuò)頻碼;以及 根據(jù)所述第二擴(kuò)頻碼和所述音頻得到所述信息位中的水印信息。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和所述音頻得到所述公鑰的步驟包括: 分別逐幀計(jì)算所述第一擴(kuò)頻碼池中的每個(gè)擴(kuò)頻碼與所述音頻的相關(guān)得分,得到多個(gè)幀得分隊(duì)列,每個(gè)幀得分隊(duì)列包括針對(duì)所述第一擴(kuò)頻碼池中的一個(gè)擴(kuò)頻碼和所述音頻的多幀相關(guān)得分; 根據(jù)每個(gè)幀得分隊(duì)列中的多幀相關(guān)得分找出滿(mǎn)足第一同步條件的幀得分隊(duì)列; 在所述滿(mǎn)足第一同步條件的幀得分隊(duì)列中找出滿(mǎn)足第二同步條件的相關(guān)得分;以及 從所述滿(mǎn)足第二同步條件的相關(guān)得分中計(jì)算出所述第二擴(kuò)頻碼的公鑰。
6.根據(jù)權(quán)利要求4所述的方法,還包括: 逐幀計(jì)算所述第二擴(kuò)頻碼與所述音頻的相關(guān)得分;以及 將所述第二擴(kuò)頻碼與所述音頻的多幀相關(guān)得分與預(yù)定閾值進(jìn)行比較,根據(jù)比較結(jié)果輸出所述信息位中的水印信息。
7.—種在音頻中嵌入水印的裝置,其中,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述裝置包括: 擴(kuò)頻碼生成模塊,用于根據(jù)第一隨機(jī)數(shù)從第一擴(kuò)頻碼池中取出第一擴(kuò)頻碼,根據(jù)第二隨機(jī)數(shù)從第二擴(kuò)頻碼池中取出第二擴(kuò)頻碼,其中,所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池是預(yù)先建立的,所述第一隨機(jī)數(shù)和所述第二隨機(jī)數(shù)的取值范圍分別由所述第一擴(kuò)頻碼池和所述第二擴(kuò)頻碼池中的擴(kuò)頻碼的數(shù)量決定; 同步頭嵌入模塊,用于用所述第一擴(kuò)頻碼將編碼后的第二隨機(jī)數(shù)和同步位一起作為當(dāng)前水印幀的同步頭嵌入所述音頻; 信息位嵌入模塊,用于用所述第二擴(kuò)頻碼將水印信息作為當(dāng)前水印幀的信息位嵌入所述音頻。
8.根據(jù)權(quán)利要求7所述的裝置,還包括: 快速傅里葉變換模塊,用于對(duì)所述音頻進(jìn)行快速傅里葉變換得到所述音頻的相位譜和幅度譜,其中,所述水印幀被嵌入所述幅度譜; 快速傅里葉逆變換模塊,用于對(duì)所述相位譜和嵌入水印的幅度譜進(jìn)行快速傅里葉逆變換,得到嵌入水印的音頻。
9.根據(jù)權(quán)利要求7所述的裝置,其中,所述水印幀還包括空白位,所述裝置還包括: 空白位嵌入模塊,用于將第三隨機(jī)數(shù)編碼后作為當(dāng)前水印幀的空白位嵌入所述音頻,其中,在當(dāng)前水印幀嵌入之后,在所述音頻中跳過(guò)一段長(zhǎng)度后進(jìn)行下一水印幀的嵌入,所述一段長(zhǎng)度由所述第三隨機(jī)數(shù)決定。
10.一種從音頻中解出水印的裝置,所述水印包括多個(gè)水印幀,所述水印幀包括同步頭和信息位,所述同步頭是用第一擴(kuò)頻碼池中的第一擴(kuò)頻碼嵌入所述音頻的,所述信息位是用第二擴(kuò)頻碼池中的第二擴(kuò)頻碼嵌入所述音頻的,所述同步頭中包含所述第二擴(kuò)頻碼的公鑰,所述裝置包括: 公鑰獲取模塊,用于根據(jù)所述第一擴(kuò)頻碼池中的擴(kuò)頻碼和所述音頻得到所述公鑰;第二擴(kuò)頻碼獲取模塊,用于根據(jù)所述公鑰從所述第二擴(kuò)頻碼池中得到所述第二擴(kuò)頻碼;以及 信息位獲取模塊,用于根據(jù)所述 第二擴(kuò)頻碼和所述音頻得到所述信息位中的水印信肩、ο
全文摘要
本發(fā)明涉及一種在音頻中嵌入和解出水印的方法和裝置。本發(fā)明充分利用了不同擴(kuò)頻碼之間的不相關(guān)性,采用了隨機(jī)使用擴(kuò)頻碼來(lái)嵌入水印幀,降低了各個(gè)混音音頻中的各個(gè)水印分量之間的相互干擾,大大提高了水印解碼的正確率。同時(shí),考慮到使用所有擴(kuò)頻碼進(jìn)行相關(guān)檢測(cè)會(huì)讓計(jì)算量猛增,提出了一種新的幀結(jié)構(gòu),讓計(jì)算量大大降低。另外,提出了一種多同步技術(shù),這讓各個(gè)水印分量都能在解碼同時(shí)得到同步,解決了以往的同步技術(shù)只能讓一個(gè)混音分量得到同步的問(wèn)題。從而實(shí)現(xiàn)了能夠抵御混音攻擊的數(shù)字音頻水印算法。
文檔編號(hào)G10L19/018GK103077724SQ20121058556
公開(kāi)日2013年5月1日 申請(qǐng)日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者顏永紅, 郭宇弘, 趙學(xué)敏, 劉建 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所, 上海中科高等研究院, 北京中科信利技術(shù)有限公司