📄 extract.asv
字号:
%Name: Yan Diqun
%Context: Extracting Process
%Project: Least Significant Bit
global bitstream LengthOfBitstream RepeatNum speech
%-----------------------提取过程------------------------------
%file_name='lsb_watermarked.wav';
[file_name]=uigetfile('*.wav');
[audio,fs,wmode,fidx]=readwav(coverfile_name,'r');
watermarked_audio=audio+32768;
LengthOfCover=length(watermarked_audio);
rand('state',5);
index_embed=randperm(LengthOfCover);
% 算法开始时间
start_time=cputime;
%watermark_recover=zeros(RepeatNum,length_of_bitstream);
for i = 1:LengthOfCover
watermark_recover(i) = watermark
end
uwork1=0;
uwork2=0;
for i=1:LengthOfBitstream
temp2=watermark_recover(:,i);
for j=1:RepeatNum
if temp2(j)==1
uwork1=uwork1+1;
else
uwork2=uwork2+1;
end
end
if uwork1>uwork2
watermark(i)=1;
else
watermark(i)=0;
end
uwork1=0;
uwork2=0;
end
%显示算法的处理时间
elapsed_time=cputime-start_time,
%求位错误率
sim_1=0;
for i=1:length(watermark)
if(bitstream(i)==watermark(i))
sim_1=sim_1+1;
end
end
ber=(length(bitstream)-sim_1)/length(bitstream);
str=sprintf('位错误率为:%f\n',ber);
disp(str);
%BCH纠错码解码
watermark=decode(watermark,7,4,'bch');
%将比特流文件转换成wav格式文件
uWork=0;
j=1;
for i=1:length(speech)
for k=0:7
uWork=uWork+watermark(k+j)*2^k;
end
recoverspeech(i)=uWork;
uWork=0;
j=j+8;
end
recoverspeech=recoverspeech-128;
writewav(recoverspeech,8000,'recoverspeech.wav','8');
%恢复保密语音显示
figure(4)
plot(recoverspeech);
title('recover speech');
axis tight;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -