Changing intensities (dB) of a sound file at certain frequencies?
18 次查看(过去 30 天)
显示 更早的评论
Is there a way to parse through a sound file (in .wav format) and adjust (increase/decrease) its intensity in decibels at certain frequencies? I have tried to do FFT to get the frequency domain, then adjusting the magnitude of the soundfile by multiplying with a constant value. Then use ifft to return to the time domain.
[y1, Fs] = audioread('sound.wav');
Y = fft(y1);
% decrease intensity of lower frequencies
Y(1:1000)= Y(1:1000) .* 0.25;
y2 = ifft(Y);
soundsc(y2, Fs);
This does not work and gives the error : "Error using soundsc (line 25) Audio data must be real and floating point."
Here is an example of what I want to do in Matlab (0:50 - 1:20): https://youtu.be/YantpouC4Mk?t=50
Any help is appreciated, thanks in advanced!
1 个评论
Adam
2016-6-15
If you don't alter the negative frequencies equally with the positive ones you will end up with a complex result when you use iift to return to the time domain.
采纳的回答
Star Strider
2016-6-15
See my Answer to your duplicate Question on this topic: http://www.mathworks.com/matlabcentral/answers/290073-amplify-and-dampen-certain-frequencies
0 个评论
更多回答(1 个)
Sachin Shrestha
2016-6-15
Hi Sven,
Regarding your error, you could listen to the audio by simply changing the last line of the code from
soundsc(y2, Fs);
to
soundsc(real(y2), Fs);
You may proceed with your testings now.
Hope this will help. Good Luck!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Audio I/O and Waveform Generation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!