how do i seperate two different frequencies in one sound?

5 次查看(过去 30 天)
I have an voice record. It contains a man's speech and another dominant voice with different frequency.
How can i seperate them? Also, how can i delete jammer effect of dominant tone voice.
  6 个评论

请先登录,再进行评论。

采纳的回答

Eqehan
Eqehan 2022-3-12
I completed the project. I used Fourier Transform(fft) and Band-Pass Filter. I am sharing the codes and screenshots for community.
clear all;close all;clc; % Clear everything
[data, Fs] = audioread('sound1.wav'); % Define sound document
D= fft(data); % Fourier Transform of data of our sound
plot(real(D)); % Plot the real part of fourier transform.
I found human voice frequencies at the result of fourier transform. It is between 1500-7500Hz. So i want to take just this frequencies. Then i made an Band-Pass Filter.
Band-Pass Filter
clear all;close all;clc; % Clear everything
[data, Fs] = audioread('sound1.wav'); % Define sound document
N=128; % Order of filter
Fn = Fs/2; % Nyquist Freq
fc1 = 1500/Fn; % Cut_Off Freq 1 - 1500Hz
fc2 = 7500/Fn; % Cut_Off Freq 2 - 7500Hz
B = fir1(N, [fc1 fc2], 'bandpass'); % Band-Pass Filter
ses_filtered = filtfilt(B, 1, data); % Apply filter
sound(ses_filtered,Fs); % Play the filtered sound
audiowrite('sound_result.wav',ses_filtered,Fs); %record the new sound
So, the first subplot(2,1,1) shows my raw sound, which has noise in high frequency.
Second subplot(2,1,2) shows the result.

更多回答(0 个)

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by