TIme shifting an audio in a frequency domain

42 views (last 30 days)
Hi guys, newbie here. Needed to help on this, not sure if it is possible to acheive.
I am trying to do a time shift in freq domain on one of the audio so this part of the code i did so far. reading an audio can put into window frame form.
[data,fs] = audioread('audio.wav');
no_frame = 10;
datalength = length(data);
framesize = floor(datalength/no_frame);
temp = 0
for i = 1 : no_frame
frames(i,:) = data(temp + 1 : temp + framesize);
temp = temp + framesize;
end
tried doing this line but seem to have problem:
y(i,:) = yp(i,:).*exp(-j*2*pi*f*(1/fs));
Appreatiate any suggestion. Thank you.

Answers (1)

Prabhan Purwar
Prabhan Purwar on 18 Nov 2019
Hey,
The following code illustrates the Time-shifting of a signal in the frequency domain.
[data,fs] = audioread('FemaleSpeech-16-8-mono-3secs.wav');
no_frame = 10;
datalength = length(data);
N = floor(datalength/no_frame); %Framesize
temp = 0;
for i = 1 : no_frame
frames(i,:) = data(temp + 1 : temp + N);
temp = temp + N;
end
i=1; %for 1st frame
t=400;
yi=frames(i,:);
yp(i,:)=fft(yi);
y(i,:) = exp(-1i*2*pi/N*(0:N-1)*t).*yp(i,:);
rslt(i,:)=ifft(y(i,:),'symmetric');
plot(yi);
figure
plot(rslt(i,:));
Output:Capture.JPG
Refer to the following links for further information:
  1 Comment
Yvonne Haesevoets
Yvonne Haesevoets on 13 Jun 2023
I tried applying --like you did-- this property of the DTFT to operate a shift in time by a non-integer number of samples, but I was missing one element : 'symmetric'. It makes perfect sense.
It works like a charm now --thank you !

Sign in to comment.

Categories

Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!