唐依靜,周成成,王鵬,孫世凡,吳文琪
(南京工程學院 信息與通信工程學院,江蘇 南京 211167)
隨著社會生活水平的提高,數(shù)字多媒體傳輸技術日益完備。數(shù)字多媒體傳輸技術使數(shù)字多媒體信息得到廣泛的傳播,人們獲取信息也越來越方便。但在這種便利技術的背后,同時也存在著巨大的隱患。數(shù)字多媒體傳輸信息的一大特點就是易于修改,一些不法分子利用這一點,經(jīng)常通過各類剪輯軟件來篡改多媒體信息牟取暴利,導致當今社會很多信息的真實性存疑。信息安全成了我們?nèi)粘I钪幸粋€不可忽視的問題。在司法取證中,視聽證據(jù)逐漸取代書信證據(jù)作為取證的主要證據(jù)內(nèi)容。2016年,最高人民法院、最高人民檢察院、公安部就聯(lián)合發(fā)布了《關于辦理刑事案件收集提取和審查判斷電子數(shù)據(jù)若干問題的規(guī)定》,指出“電子數(shù)據(jù)是案件發(fā)生過程中形成的,以數(shù)字化形式存儲、處理、傳輸?shù)?,能夠證明案件事實的數(shù)據(jù)”。音頻就是電子數(shù)據(jù)之一。在2021年世界互聯(lián)網(wǎng)大會烏鎮(zhèn)峰會上,習近平總書記強調(diào)了“沒有網(wǎng)絡安全就沒有國家安全,就沒有經(jīng)濟社會穩(wěn)定運行,廣大人民群眾利益也難以得到保障”。
MATLAB 是美國MathWorks 公司出品的數(shù)學軟件,廣泛應用于數(shù)據(jù)分析、圖像處理、信號處理等諸多領域。MATLAB GUI 是基于MATLAB 的人機交互圖形化用戶界面設計,用戶可以選擇相應的按鍵來激活后臺基于MATLAB編寫的程序,使得界面清晰,不用閱讀大量的數(shù)據(jù),憑借按鍵就可實現(xiàn)對應的功能。
本文針對音頻篡改的現(xiàn)象,利用MATLAB GUI 構建數(shù)字語音篡改平臺,從時域分析、頻域分析和倒譜分析入手,通過比較兩段不同的音頻的時域波形、頻譜、倒譜和聲道沖激響應頻譜來判斷語音信號是否存在篡改。
語音篡改檢測從真實性和完整性兩方面研究,從真實性來說,國外學者Mannepalli K等提出了一種結(jié)合MFCC 和動態(tài)時間規(guī)整算法的復制粘貼篡改檢測和定位方法,該方法首先提取每個有聲段的梅爾倒譜系數(shù)特征,隨后使用動態(tài)時間規(guī)整算法來計算任意兩個有聲段的相似程度,從而實現(xiàn)音頻的復制粘貼篡改檢測和定位。完整性方面,倪令閣等利用不同采樣率的翻錄設備對篡改語音進行翻錄,然后使用聲紋鑒定工作站及Adobe Audition 軟件對翻錄前后的數(shù)字音頻,分別在文件屬性、聽覺和圖譜檢驗等方面進行比對和分析。
隨著深度學習的不斷發(fā)展,國內(nèi)對語音檢測技術也逐漸趨于完善。高華等提出了基于時域的不同采樣頻率采樣和基于頻域的功率譜分析的辦法來檢測語音的篡改,從時域上做插零后進行差值處理,即頻域上加窗函數(shù),然后進行分幀濾波,通過觀察頻譜有無發(fā)生泄露來判斷有無篡改現(xiàn)象。包永強等探討了音頻取證的分類,構建了音頻取證框架。圍繞音頻主動取證技術、基于電網(wǎng)頻率特征的音頻篡改技術、無電網(wǎng)頻率成分下的音頻篡改檢測技術、錄音設備的特征參數(shù)、模式識別、數(shù)據(jù)庫建設情況以及錄音場合識別等一系列統(tǒng)計分類實驗,得出較高的識別率,從而推動音頻證據(jù)的真實性、來源性取證的不斷發(fā)展。本文側(cè)重于篡改檢測的真實性,通過MATLAB GUI 設計的數(shù)字語音篡改平臺,通過這個平臺觀察拼接的兩段采樣率不同的語音信號的時域波形,頻譜、倒譜圖和聲道沖激響應頻譜是否存在差異,以此來判定語音是否存在拼接。
語音信號是一種短時平穩(wěn)信號,即時變的,十分復雜,攜帶很多有用的信息,其特征參數(shù)的準確性和唯一性將直接影響語音識別率的準確性。特征參數(shù)應該能夠比較準確地表達語音信號的特征,具有一定的唯一性。本文從時域、頻域和倒譜域分析。
從時域分析上來說,語音信號最直觀的表現(xiàn)形式就是時域波形。
從頻域分析上來說,本文語音信號可以從頻譜和倒頻譜兩方面分析。頻譜使用快速傅里葉變換(FFT)運算。倒譜(CEP)是重要的語音特征參數(shù),倒譜分析也叫同態(tài)處理分析,可以將非線性問題轉(zhuǎn)化成線性問題來處理。倒譜是信號功率譜對數(shù)值進行傅里葉變換的結(jié)果,這里我們計算的是實倒譜,是實數(shù)的對數(shù)運算,倒譜分析過程如圖1所示,計算過程如下:
圖1 倒譜分析過程
將原語音信號經(jīng)過傅里葉變換得到頻譜:
[]=[][]
只考慮幅度就是:
|[]|=|[]||[]|
在兩邊取對數(shù):
log||[]||=log||[]||+log||[]||
再在兩邊取逆傅里葉變換得到:
[]=[]+[]
語音信號模型可以看成激勵模型、聲道模型、輻射模型的串聯(lián)。從倒譜域分析上來說,語音信號是由聲門的激勵信號和聲道沖激響應的卷積而形成的。在計算聲道沖激響應頻譜時,先進行了預加重,目的是為了更好地分析聲道,去掉激勵模型和輻射模型的影響。譜的包絡往往包含著說話的語義成分,它是聲道所對應的部分,聲道沖激響應頻譜就可以體現(xiàn)聲道特征。對倒譜的包絡進行IFFT 變換就可以得到聲道沖激響應,所以它是倒譜的低頻部分。
本文的分析流程圖如圖2所示。
圖2 篡改檢測流程圖
打開MATLAB →在命令行執(zhí)行guide →出現(xiàn)GUI 編輯界面,選擇一個默認的空白模板→選擇所需控件,主要是可編輯文本框、靜態(tài)文本框、pushbutton 按鈕,radiobutton 單選框、坐標區(qū),按鈕組→點擊編輯器按鈕,會顯示GUI 界面對應的.m 文件→在生成所加控件的回調(diào)函數(shù)callback 加入相應代碼,點擊界面上相應按鈕時就會實現(xiàn)代碼的功能。
本界面可實現(xiàn)四種功能,如圖3所示。
圖3 音頻輸入界面
音頻輸入輸出界面具體內(nèi)容有:
(1)選擇“文件”file_radiobutton 按鈕將電腦上的文件讀取出來,可以實現(xiàn)播放、暫停。首先使用uigetfile 函數(shù):[filename,pathname]=uigetfile({‘*.wav;*.mp3;*.flac;*.m4a’,...’音頻文件(*.wav,*.mp3,*.flac,*.m4a)’},’選 擇文件’)彈出選擇文件窗口,使用audioread 函數(shù):[handles.Sample,handles.Fs]=audioread(handles.Filepath) 讀取音頻文件,然后使用set 函數(shù)定位到對應的GUI 界面按鈕,play 函數(shù)play(handles.player)和stop 函數(shù)stop(handles.player)實現(xiàn)對選中音頻的播放和暫停。
(2)選擇“錄音”record_radiobutton 按鈕錄制語音素材,可以在選定采樣率下進行音頻錄制,紅色圓圈按鈕為開始錄制,旁邊的灰色方格按鈕為停止錄制。使用audiorecorder 函數(shù):handles.recObj=audiorecorder(fs,16,1)創(chuàng)建一個錄音器,其中fs 為采樣頻率,頻率越高保真度越好,但也不能過高,一般來說根據(jù)人聲的特點采樣頻率8 000 Hz 以上都可以,并且采樣頻率越高對硬件設備的要求也越高。16 表示采樣的數(shù)據(jù)以16 bit 保存,1 表示采集一個聲道的語音信號。使用record 函數(shù)record(handles.recObj) 開始錄音,stop 函數(shù)stop(handles.recObj)停止錄音。
(3)播放器設置。創(chuàng)建player 回調(diào)函數(shù):set(handles.player,′StartFcn′,{@playstart_Callback,handles},...
‘StopFcn’,{@playstop_Callback,handles}),使用length 函數(shù)和set 函數(shù)顯示時長和采樣率。
(4)導出音頻將其存儲到對應的文件夾中,如圖4所示。
圖4 音頻輸出界面
調(diào)用putfile 跳轉(zhuǎn)到putfile.m 文件,使用uigetdir 函數(shù)打開文件夾選擇對話框,就可以選擇保存路徑。選擇format_popupmenu 按鈕可以選擇保存的文件的格式,選擇Fs_popupmenu 按鈕可以選擇需要保存的采樣率,選擇bps_popupmenu 按鈕可以選擇保存的比特率,使用get 函數(shù)得出當前語音信號的各屬性值,最后使用audiowrite 函數(shù)在保存路徑中生成錄音文件。“取消”cancel_pushbutton 按鈕使用delete 函數(shù)用于取消上述操作。選擇“重置”reset_pushbutton 按鈕將文件名,文件格式,采樣率和比特率全部初始化。
音頻分析界面具體內(nèi)容有:
(1)時域分析。使用axes 函數(shù)axes(handles.axes1)創(chuàng)建一個坐標系,然后使用plot 函數(shù)繪出時域曲線。
(2)頻域分析。使用了快速傅里葉變換的函數(shù)fft:X=fft(data.*hanning (length(handles.data))),其中加窗函數(shù)hanning 減小頻譜泄露,然后確定限定頻率范圍:fm=10 000*length(X)/Fs,確定頻率刻度:f=(0:fm)*Fs/blockSize,最后用plot 函數(shù)畫出頻譜圖。
(3)倒譜分析。語音信號的倒譜分析就是提取語音信號的倒譜特征的過程。本文使用matlab 可以使用自帶的fft函數(shù)得到信號頻譜c=fft(log(abs(handles.data)+eps)),eps 是返回參數(shù)的精度,然后確定倒頻刻度作為橫坐標“倒角”:
ms1=handles.sample/1 000;
ms20=handles.sample/50;
q=(ms1:ms20)/handles.sample;
最后使用plot函數(shù)畫出頻譜圖plot(q,abs(c(ms1:ms20)))。
(4)聲道沖激響應頻譜分析。聲道沖激響應就是倒譜的包絡進行IFFT 后得到的低頻部分。設置了FFT 的長度nfft 為1 024,因為進行IFFT 后的譜的縱軸是對數(shù)化了的,因此IFFT 后橫軸不是時間t 而是頻率Hz。計算出頻率刻度,然后按公式取出實數(shù)部分:Y=log(abs(fft(data))),對其求IFFT。接著分離聲門激勵脈沖和聲道沖激響應,通常認為基音頻率都是低于500 Hz 的,為了留有余量這里取550 Hz,所以mcep 取11 025/550=20,即在倒譜域中第20 根條譜線之前是反映了包絡的系數(shù)。然后進行預加重去掉激勵模型和輻射模型的影響,構建聲道沖激響應的倒譜序列:
zy=z(1:mcep+1);
zy=[zy’ zeros(1,nfft-2*mcep-1)zy(end:-1:2)’];
接著再使用FFT 變換計算出聲道沖激響應的頻譜,得到圖形plot(ff,real(ZY(nn)))。
音頻分析界面如圖5所示。
圖5 音頻分析界面
菜單欄具體內(nèi)容有:
(1)打開/初始化。用clear 函數(shù)進行初始化,使用uiputfile 函數(shù)打開對話框,然后利用wavread 函數(shù)載入音頻文件,guidata(hObject,handles)用來保存文件,同時進行時域回調(diào)。
(2)數(shù)據(jù)分析與處理。編寫回調(diào)函數(shù),分別回調(diào)GUI中“時域波形”“頻域分析”“倒譜分析”“聲道沖激響應頻譜”中編寫的函數(shù):
fftplot_Callback(hObject,eventdata,handles)%頻域回調(diào)
daopu_Callback(hObject,eventdata,handles)%倒譜回調(diào)
sdcjxy_Callback(hObject,eventdata,handles);% 聲道沖激響應頻譜回調(diào)
(3)結(jié)果圖像保存。使用uiputfile 函數(shù)[file,path]=uiputfile(‘xxx.jpg’,’Save file name’) 打開保存窗口,然后編寫h=figure 畫出圖形,使用saveas 函數(shù)saveas(h,[path file])保存畫出的圖形(時域圖,頻譜圖、倒譜圖和聲道沖激響應頻譜)并且顯示保存路徑,最后結(jié)束操作close(h)。
菜單欄界面如圖6所示。
圖6 菜單欄界面
音頻文件的一般格式為mp3 格式,由于其文件與其他音頻格式文件相比儲存占用容量小,音質(zhì)好,一直是主流音頻格式。與這種優(yōu)勢呈現(xiàn)明顯對比的,是mp3 格式音頻文件的壓縮是一種有損壓縮,會犧牲高音頻段的部分分量。針對這一缺陷,本研究利用通過MATLAB GUI 設計的音頻輸入輸出界面錄制語音信號并保存(保存兩種采樣率的音頻),然后使用音頻剪輯軟件將兩段采樣率不同的語音信號與原信號進行拼接。
4.2.1 采樣率相同情況下的篡改分析
圖7是采樣率為11 025 Hz 的原始音頻的倒譜圖,圖8是采樣率為11 025 Hz 的原始音頻拼接采樣率為11 025 Hz的拼接音頻1 的倒譜圖。
圖7 原始音頻倒譜圖
圖8 采樣率為11 025+11 025 Hz 音頻倒譜圖
通過圖像可以很清晰地看出兩段音頻的不同,可以驗證從倒譜圖判斷語音信號發(fā)生篡改的結(jié)論。之后本文又對四十段音頻進行拼接驗證,結(jié)論與上述情況均一致。
4.2.2 采樣率不同情況下的篡改分析
因為倒譜圖中線條較多較為雜亂,所以提取倒譜圖中的聲道沖激響應頻譜來觀察。
圖9是采樣率為11 025 Hz 的原始音頻拼接采樣率為11 025 Hz 的拼接音頻1 的聲道沖激響應頻譜,圖10是采樣率為11 025 Hz 的原始音頻拼接8 000 Hz 的拼接音頻2 的聲道沖激響應頻譜,拼接音頻1 和拼接音頻2 僅采樣率不同,內(nèi)容上相同。
圖9 采樣率11 025+11 025 Hz 音頻聲道沖激響應頻譜
圖10 采樣率11 025+8 000 Hz 音頻聲道沖激響應頻譜
圖11是采樣率為8 000 Hz 的原始音頻拼接采樣率為8 000 Hz 的拼接音頻3 的聲道沖激響應頻譜,圖12是采樣率為8 000 Hz 的原始音頻拼接11 025 Hz 的拼接音頻4 的聲道沖激響應頻譜,拼接音頻3 和拼接音頻4 僅采樣率不同,內(nèi)容上相同。
圖11 采樣率8 000+8 000 Hz 音頻聲道沖激響應頻譜
圖12 采樣率8 000+11 025 Hz 音頻聲道沖激響應頻譜
通過對上述兩組拼接的是不同采樣率音頻的倒譜圖觀察來看,可以發(fā)現(xiàn)當加入的音頻的采樣率高于自身的采樣率時,聲道沖激響應頻譜變化較大,當加入的音頻的采樣率低于自身的采樣率時,聲道沖激響應頻譜大致上不會發(fā)生太大的改變,本研究對另外十二組拼接不同采樣率的音頻進行實驗,也可以發(fā)現(xiàn)這一點。
本文分析了十四組原始音頻和篡改后的頻譜,從倒譜圖判斷發(fā)生的篡改的準確率是88%,從聲道沖激響應頻譜判斷發(fā)生篡改的準確率是72%。經(jīng)過分析發(fā)現(xiàn)與以下幾點有關:
(1)使用MATLAB GUI 搭建的錄音平臺會錄制出電腦運行過程中很大的電流聲。
(2)聲音聲調(diào)的變化。
(3)環(huán)境噪聲會使無聲段和有聲段不能被有效判別,會使頻譜和倒譜發(fā)生很大的改變,帶來誤差。
本文通過分析拼接的兩段不同采樣率的音頻,可以從倒譜圖判斷語音信號存在篡改的問題。采用自制的利用MATLAB GUI 創(chuàng)建了一個錄音設備,可以實現(xiàn)在選定采樣率下進行錄音,并且可以將其保存在指定的路徑中。此外還可以選擇音頻文件來得出其基礎數(shù)據(jù)(時長和采樣率)。然后比較了原始語音和兩段在原始語音的基礎上采用不同采樣率拼接的篡改語音,觀察其聲道沖激響應頻譜的變化,可以確定拼接的語音是比原始語音采樣率更高還是更低。但通過圖像觀察而不是數(shù)據(jù)分析容易存在誤差,并且聲道沖激響應頻譜只是語音信號倒譜的低頻分量,不能反映出相位信息。
后續(xù)的研究會從實倒譜轉(zhuǎn)為復倒譜,提取基音特征,以此作為描述音韻的輔助特征參數(shù)更深入地研究語音的聲門激勵響應,并將聲門激勵信號和聲道沖激響應結(jié)合起來運用在語音識別中?;谀J狡ヅ浜投虝r平均過零率檢測的音頻誤碼掩蓋算法是檢測丟幀音頻信號并將音頻信號重構的重要方法,本研究會在此基礎上對語音信號進行端點檢測,更好的去除無聲段的影響。同時也會結(jié)合環(huán)境噪聲對倒譜的影響,在濾除高頻噪聲的情況下對倒譜圖加窗分幀進行分析,放大語音信號的特征參數(shù)來研究。