设备指纹——语音频谱信息量

xiaoxiao2021-02-28  11

简介    

    同一段语音用不同设备录音后的手机语音特性是不同的,因此可以从录音后的语音入手来提取相应的特征进行设备检测。在这里用了一种基于语谱图的方法进行检测。本文主要讲提取语音频谱的信息量,后面的识别过程就是用提取的信息量作为特征使用SVM进行分类,本文不再详细介绍。举个例子,下图是同一段语音用不同手机录下后的语谱图,可已看出有很大测差别。语谱图在matlab中使用以下代码可以查看,其中512为fft变换点数,fs为采样频率,100为重叠长度

[x,fs] = audioread('test.wav'); figure; specgram(x,512,fs,100); xlabel('时间(s)');ylabel('频率(Hz)');title('语谱图');

提取流程

本文所提出的设备指纹是基于频谱信息,提取流程如下:

提取代码

[data,f] = audioread('test'); data = filter([1 -0.9375],1,data); %预加重 signal = data(1:8192); %取1s tframe = enframe(signal,hanning(512)); %时域分帧,汉宁窗,采样点512 [tn,tm]= size(tframe); X = zeros(tn,tm/2+1); for i = 1:tn Y = fft(tframe(i,:)); L = length(tframe(i,:)); P2 = abs(Y/L); P1 = P2(1:L/2+1); X(i,:) = P1; end arg = sum(X)/tn; %第k频率点沿时间轴的统计平均值 S = sum(arg); %总频率值 p = arg/S; %频率点K出现的概率 I = -log2(p); %第k个频率点的信息量 for j=1:length(I)-1                    %提取差分特征 diff(j) = I(j+1)-I(j); end

注:本文所用音频采样率为8000Hz

语音信号处理交流群:652292630

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2650348.html

最新回复(0)