APP下载

基于MFCC的语音篡改检测系统实现

2022-11-03唐依静周成成王鹏孙世凡吴文琪

现代信息科技 2022年17期
关键词:声道时域频谱

唐依静,周成成,王鹏,孙世凡,吴文琪

(南京工程学院 信息与通信工程学院,江苏 南京 211167)

0 引 言

随着社会生活水平的提高,数字多媒体传输技术日益完备。数字多媒体传输技术使数字多媒体信息得到广泛的传播,人们获取信息也越来越方便。但在这种便利技术的背后,同时也存在着巨大的隐患。数字多媒体传输信息的一大特点就是易于修改,一些不法分子利用这一点,经常通过各类剪辑软件来篡改多媒体信息牟取暴利,导致当今社会很多信息的真实性存疑。信息安全成了我们日常生活中一个不可忽视的问题。在司法取证中,视听证据逐渐取代书信证据作为取证的主要证据内容。2016年,最高人民法院、最高人民检察院、公安部就联合发布了《关于办理刑事案件收集提取和审查判断电子数据若干问题的规定》,指出“电子数据是案件发生过程中形成的,以数字化形式存储、处理、传输的,能够证明案件事实的数据”。音频就是电子数据之一。在2021年世界互联网大会乌镇峰会上,习近平总书记强调了“没有网络安全就没有国家安全,就没有经济社会稳定运行,广大人民群众利益也难以得到保障”。

MATLAB 是美国MathWorks 公司出品的数学软件,广泛应用于数据分析、图像处理、信号处理等诸多领域。MATLAB GUI 是基于MATLAB 的人机交互图形化用户界面设计,用户可以选择相应的按键来激活后台基于MATLAB编写的程序,使得界面清晰,不用阅读大量的数据,凭借按键就可实现对应的功能。

本文针对音频篡改的现象,利用MATLAB GUI 构建数字语音篡改平台,从时域分析、频域分析和倒谱分析入手,通过比较两段不同的音频的时域波形、频谱、倒谱和声道冲激响应频谱来判断语音信号是否存在篡改。

1 研究背景

语音篡改检测从真实性和完整性两方面研究,从真实性来说,国外学者Mannepalli K等提出了一种结合MFCC 和动态时间规整算法的复制粘贴篡改检测和定位方法,该方法首先提取每个有声段的梅尔倒谱系数特征,随后使用动态时间规整算法来计算任意两个有声段的相似程度,从而实现音频的复制粘贴篡改检测和定位。完整性方面,倪令阁等利用不同采样率的翻录设备对篡改语音进行翻录,然后使用声纹鉴定工作站及Adobe Audition 软件对翻录前后的数字音频,分别在文件属性、听觉和图谱检验等方面进行比对和分析。

随着深度学习的不断发展,国内对语音检测技术也逐渐趋于完善。高华等提出了基于时域的不同采样频率采样和基于频域的功率谱分析的办法来检测语音的篡改,从时域上做插零后进行差值处理,即频域上加窗函数,然后进行分帧滤波,通过观察频谱有无发生泄露来判断有无篡改现象。包永强等探讨了音频取证的分类,构建了音频取证框架。围绕音频主动取证技术、基于电网频率特征的音频篡改技术、无电网频率成分下的音频篡改检测技术、录音设备的特征参数、模式识别、数据库建设情况以及录音场合识别等一系列统计分类实验,得出较高的识别率,从而推动音频证据的真实性、来源性取证的不断发展。本文侧重于篡改检测的真实性,通过MATLAB GUI 设计的数字语音篡改平台,通过这个平台观察拼接的两段采样率不同的语音信号的时域波形,频谱、倒谱图和声道冲激响应频谱是否存在差异,以此来判定语音是否存在拼接。

2 分析原理和流程图

语音信号是一种短时平稳信号,即时变的,十分复杂,携带很多有用的信息,其特征参数的准确性和唯一性将直接影响语音识别率的准确性。特征参数应该能够比较准确地表达语音信号的特征,具有一定的唯一性。本文从时域、频域和倒谱域分析。

从时域分析上来说,语音信号最直观的表现形式就是时域波形。

从频域分析上来说,本文语音信号可以从频谱和倒频谱两方面分析。频谱使用快速傅里叶变换(FFT)运算。倒谱(CEP)是重要的语音特征参数,倒谱分析也叫同态处理分析,可以将非线性问题转化成线性问题来处理。倒谱是信号功率谱对数值进行傅里叶变换的结果,这里我们计算的是实倒谱,是实数的对数运算,倒谱分析过程如图1所示,计算过程如下:

图1 倒谱分析过程

将原语音信号经过傅里叶变换得到频谱:

[]=[][]

只考虑幅度就是:

|[]|=|[]||[]|

在两边取对数:

log||[]||=log||[]||+log||[]||

再在两边取逆傅里叶变换得到:

[]=[]+[]

语音信号模型可以看成激励模型、声道模型、辐射模型的串联。从倒谱域分析上来说,语音信号是由声门的激励信号和声道冲激响应的卷积而形成的。在计算声道冲激响应频谱时,先进行了预加重,目的是为了更好地分析声道,去掉激励模型和辐射模型的影响。谱的包络往往包含着说话的语义成分,它是声道所对应的部分,声道冲激响应频谱就可以体现声道特征。对倒谱的包络进行IFFT 变换就可以得到声道冲激响应,所以它是倒谱的低频部分。

本文的分析流程图如图2所示。

图2 篡改检测流程图

3 MATLAB GUI 界面

打开MATLAB →在命令行执行guide →出现GUI 编辑界面,选择一个默认的空白模板→选择所需控件,主要是可编辑文本框、静态文本框、pushbutton 按钮,radiobutton 单选框、坐标区,按钮组→点击编辑器按钮,会显示GUI 界面对应的.m 文件→在生成所加控件的回调函数callback 加入相应代码,点击界面上相应按钮时就会实现代码的功能。

3.1 音频输入输出界面

本界面可实现四种功能,如图3所示。

图3 音频输入界面

音频输入输出界面具体内容有:

(1)选择“文件”file_radiobutton 按钮将电脑上的文件读取出来,可以实现播放、暂停。首先使用uigetfile 函数:[filename,pathname]=uigetfile({‘*.wav;*.mp3;*.flac;*.m4a’,...’音频文件(*.wav,*.mp3,*.flac,*.m4a)’},’选 择文件’)弹出选择文件窗口,使用audioread 函数:[handles.Sample,handles.Fs]=audioread(handles.Filepath) 读取音频文件,然后使用set 函数定位到对应的GUI 界面按钮,play 函数play(handles.player)和stop 函数stop(handles.player)实现对选中音频的播放和暂停。

(2)选择“录音”record_radiobutton 按钮录制语音素材,可以在选定采样率下进行音频录制,红色圆圈按钮为开始录制,旁边的灰色方格按钮为停止录制。使用audiorecorder 函数:handles.recObj=audiorecorder(fs,16,1)创建一个录音器,其中fs 为采样频率,频率越高保真度越好,但也不能过高,一般来说根据人声的特点采样频率8 000 Hz 以上都可以,并且采样频率越高对硬件设备的要求也越高。16 表示采样的数据以16 bit 保存,1 表示采集一个声道的语音信号。使用record 函数record(handles.recObj) 开始录音,stop 函数stop(handles.recObj)停止录音。

(3)播放器设置。创建player 回调函数:set(handles.player,′StartFcn′,{@playstart_Callback,handles},...

‘StopFcn’,{@playstop_Callback,handles}),使用length 函数和set 函数显示时长和采样率。

(4)导出音频将其存储到对应的文件夹中,如图4所示。

图4 音频输出界面

调用putfile 跳转到putfile.m 文件,使用uigetdir 函数打开文件夹选择对话框,就可以选择保存路径。选择format_popupmenu 按钮可以选择保存的文件的格式,选择Fs_popupmenu 按钮可以选择需要保存的采样率,选择bps_popupmenu 按钮可以选择保存的比特率,使用get 函数得出当前语音信号的各属性值,最后使用audiowrite 函数在保存路径中生成录音文件。“取消”cancel_pushbutton 按钮使用delete 函数用于取消上述操作。选择“重置”reset_pushbutton 按钮将文件名,文件格式,采样率和比特率全部初始化。

3.2 音频分析界面

音频分析界面具体内容有:

(1)时域分析。使用axes 函数axes(handles.axes1)创建一个坐标系,然后使用plot 函数绘出时域曲线。

(2)频域分析。使用了快速傅里叶变换的函数fft:X=fft(data.*hanning (length(handles.data))),其中加窗函数hanning 减小频谱泄露,然后确定限定频率范围:fm=10 000*length(X)/Fs,确定频率刻度:f=(0:fm)*Fs/blockSize,最后用plot 函数画出频谱图。

(3)倒谱分析。语音信号的倒谱分析就是提取语音信号的倒谱特征的过程。本文使用matlab 可以使用自带的fft函数得到信号频谱c=fft(log(abs(handles.data)+eps)),eps 是返回参数的精度,然后确定倒频刻度作为横坐标“倒角”:

ms1=handles.sample/1 000;

ms20=handles.sample/50;

q=(ms1:ms20)/handles.sample;

最后使用plot函数画出频谱图plot(q,abs(c(ms1:ms20)))。

(4)声道冲激响应频谱分析。声道冲激响应就是倒谱的包络进行IFFT 后得到的低频部分。设置了FFT 的长度nfft 为1 024,因为进行IFFT 后的谱的纵轴是对数化了的,因此IFFT 后横轴不是时间t 而是频率Hz。计算出频率刻度,然后按公式取出实数部分:Y=log(abs(fft(data))),对其求IFFT。接着分离声门激励脉冲和声道冲激响应,通常认为基音频率都是低于500 Hz 的,为了留有余量这里取550 Hz,所以mcep 取11 025/550=20,即在倒谱域中第20 根条谱线之前是反映了包络的系数。然后进行预加重去掉激励模型和辐射模型的影响,构建声道冲激响应的倒谱序列:

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 音频分析界面

3.3 菜单栏

菜单栏具体内容有:

(1)打开/初始化。用clear 函数进行初始化,使用uiputfile 函数打开对话框,然后利用wavread 函数载入音频文件,guidata(hObject,handles)用来保存文件,同时进行时域回调。

(2)数据分析与处理。编写回调函数,分别回调GUI中“时域波形”“频域分析”“倒谱分析”“声道冲激响应频谱”中编写的函数:

fftplot_Callback(hObject,eventdata,handles)%频域回调

daopu_Callback(hObject,eventdata,handles)%倒谱回调

sdcjxy_Callback(hObject,eventdata,handles);% 声道冲激响应频谱回调

(3)结果图像保存。使用uiputfile 函数[file,path]=uiputfile(‘xxx.jpg’,’Save file name’) 打开保存窗口,然后编写h=figure 画出图形,使用saveas 函数saveas(h,[path file])保存画出的图形(时域图,频谱图、倒谱图和声道冲激响应频谱)并且显示保存路径,最后结束操作close(h)。

菜单栏界面如图6所示。

图6 菜单栏界面

4 音频篡改的实验过程

4.1 音频信号的采集

音频文件的一般格式为mp3 格式,由于其文件与其他音频格式文件相比储存占用容量小,音质好,一直是主流音频格式。与这种优势呈现明显对比的,是mp3 格式音频文件的压缩是一种有损压缩,会牺牲高音频段的部分分量。针对这一缺陷,本研究利用通过MATLAB GUI 设计的音频输入输出界面录制语音信号并保存(保存两种采样率的音频),然后使用音频剪辑软件将两段采样率不同的语音信号与原信号进行拼接。

4.2 结果分析

4.2.1 采样率相同情况下的篡改分析

图7是采样率为11 025 Hz 的原始音频的倒谱图,图8是采样率为11 025 Hz 的原始音频拼接采样率为11 025 Hz的拼接音频1 的倒谱图。

图7 原始音频倒谱图

图8 采样率为11 025+11 025 Hz 音频倒谱图

通过图像可以很清晰地看出两段音频的不同,可以验证从倒谱图判断语音信号发生篡改的结论。之后本文又对四十段音频进行拼接验证,结论与上述情况均一致。

4.2.2 采样率不同情况下的篡改分析

因为倒谱图中线条较多较为杂乱,所以提取倒谱图中的声道冲激响应频谱来观察。

图9是采样率为11 025 Hz 的原始音频拼接采样率为11 025 Hz 的拼接音频1 的声道冲激响应频谱,图10是采样率为11 025 Hz 的原始音频拼接8 000 Hz 的拼接音频2 的声道冲激响应频谱,拼接音频1 和拼接音频2 仅采样率不同,内容上相同。

图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 仅采样率不同,内容上相同。

图11 采样率8 000+8 000 Hz 音频声道冲激响应频谱

图12 采样率8 000+11 025 Hz 音频声道冲激响应频谱

通过对上述两组拼接的是不同采样率音频的倒谱图观察来看,可以发现当加入的音频的采样率高于自身的采样率时,声道冲激响应频谱变化较大,当加入的音频的采样率低于自身的采样率时,声道冲激响应频谱大致上不会发生太大的改变,本研究对另外十二组拼接不同采样率的音频进行实验,也可以发现这一点。

本文分析了十四组原始音频和篡改后的频谱,从倒谱图判断发生的篡改的准确率是88%,从声道冲激响应频谱判断发生篡改的准确率是72%。经过分析发现与以下几点有关:

(1)使用MATLAB GUI 搭建的录音平台会录制出电脑运行过程中很大的电流声。

(2)声音声调的变化。

(3)环境噪声会使无声段和有声段不能被有效判别,会使频谱和倒谱发生很大的改变,带来误差。

5 结 论

本文通过分析拼接的两段不同采样率的音频,可以从倒谱图判断语音信号存在篡改的问题。采用自制的利用MATLAB GUI 创建了一个录音设备,可以实现在选定采样率下进行录音,并且可以将其保存在指定的路径中。此外还可以选择音频文件来得出其基础数据(时长和采样率)。然后比较了原始语音和两段在原始语音的基础上采用不同采样率拼接的篡改语音,观察其声道冲激响应频谱的变化,可以确定拼接的语音是比原始语音采样率更高还是更低。但通过图像观察而不是数据分析容易存在误差,并且声道冲激响应频谱只是语音信号倒谱的低频分量,不能反映出相位信息。

后续的研究会从实倒谱转为复倒谱,提取基音特征,以此作为描述音韵的辅助特征参数更深入地研究语音的声门激励响应,并将声门激励信号和声道冲激响应结合起来运用在语音识别中。基于模式匹配和短时平均过零率检测的音频误码掩盖算法是检测丢帧音频信号并将音频信号重构的重要方法,本研究会在此基础上对语音信号进行端点检测,更好的去除无声段的影响。同时也会结合环境噪声对倒谱的影响,在滤除高频噪声的情况下对倒谱图加窗分帧进行分析,放大语音信号的特征参数来研究。

猜你喜欢

声道时域频谱
晚霞浅淡少年糖
大品牌7.1声道耳机并不是价格都很贵
中国向左走,向右走?
FCC启动 首次高频段5G频谱拍卖
动态频谱共享简述
基于MATLAB 的信号时域采样及频率混叠现象分析
两种常用漂浮式风力机平台动态特性分析
全景声先行者
不同入射角风波流海上漂浮式风力机频域与时域动态特性
2.1比20多一个声道?音箱声道架构详解