?? 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;
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 + -