performing a deconvolution on signals

20 visualizaciones (últimos 30 días)
Joseph Tabbah
Joseph Tabbah el 23 de Nov. de 2022
Respondida: Sai Kiran el 23 de Dic. de 2022
i took 2 signals and convolved them to encrypt the signal, how can i separate the 2 audios using a known audio?
% this project is a door locking and unlocking mechanism using an audio
% file , by taking an input form a user we store the file in the memory
% then we encrypt it with another audio file using convolution, the user
% enters the audio file 2 , in this case the chicken sound into the door
% and using deconcolution we decrypt the signal once again
% first we record an audio to store in matlab
recObj = audiorecorder
recDuration = 5;
disp("Begin speaking.")
recordblocking(recObj,recDuration);
disp("End of recording.")
play(recObj);
y = getaudiodata(recObj);
plot(y);
% we read the audio file 2 that we have stored on our device
[audio2,fs] = audioread('chicken-2.wav');
% we take the audio from file transform it to the frequency domain
W=length(audio2);
b=(1/W)*ones(1,W);
F= fft(audio2);
H1= fftshift(F);
S1 = log(1+abs(H1));
figure(1);plot(S1);
title('Fourrier transform of audio 1')
% we filter and fourier transform the audio we recorded
W2=length(y);
b2=(1/W2)*ones(1,W2);
a2=1;
audiohe1=filter(b2,a2,audio2);
F2= fft(audio2);
H2= fftshift(F2);
S2 = log(1+abs(H2));
figure(2);
plot(S2);
title('Fourrier transform of audio 2')
%bow we have to make them the same lengh
% this is useful to encrypt the signal and to compare the signals later
%make both signals same size
if W>W2
S1=resample(S1,W,W2);
end
if W<W2
S2=resample(S2,W,W2);
end
figure
aud_pad = cat(1,y(:,1),zeros(7890000,1)); %we pad the audios with zeros
aud_pad2 = cat(1,audio2(:,1),zeros(458383,1));
aconv=conv(y(:,1),audio2(:,1));
sound(aconv)
plot(aconv);
title('Convolutions');
s5 = ifft(aconv);
plot(s5);
title('signal in time domain')
%now the sound is ecrypted all what we have left to do is deconvolve
  2 comentarios
Image Analyst
Image Analyst el 23 de Nov. de 2022
OK, thanks for the announcement. Good luck with it. 🙂
If you have a question, just ask it.
Joseph Tabbah
Joseph Tabbah el 23 de Nov. de 2022
i fixed it for you

Iniciar sesión para comentar.

Respuestas (1)

Sai Kiran
Sai Kiran el 23 de Dic. de 2022
Hi,
I understand that you want to seperate two audio files from the encrypted audio using one of the known audio file.
To perform deconvolution, you can use the deconv function in MATLAB.
This function takes the convolved signal and the known signal as inputs and returns the original signals as output.
For example, to separate the two signals in your code, you can use the following lines of code:
[audio_1,audio_2] = deconv(aconv,audio_2);
This will give you the original signals audio_1 and audio_2 that were used to produce the convolved signal aconv.
I hope this helps!

Categorías

Más información sobre Audio I/O and Waveform Generation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by