Design of IIR Digital Filter Based on MATLAB Speech Signal Denoising

Table of contents Abstract
1
Abstract 2
1 Introduction 3
1.1 Research background 3
1.2 Research status at home and abroad 4
1.2.1 Research status quo at home and abroad 4
1.2.2 Research status abroad 5
1.3 Design content of IIR digital filter 5
2 Design and research of digital filter 6
2.1 Working principle of digital filter 7
2.2 Classification of digital filter 7
2.3 Basic structure of IIR digital filter 8
3 Design of IIR digital filter 8
3.2 Impulse response invariant method 9
3.3 Bilinear transformation method 10
4 IIR digital filter based on MATLAB 11
4.1 Speech signal acquisition, reading, and noise addition 13
4.2 Analog filter design 16
4.3 Bilinear transformation method to design Butterworth digital filter 16
4.4 Impulse invariant response method to design Chebyshev I digital filter 17
4.5 Speech signal filtering Comparison of processing results 19
5 IIR digital filter denoising platform GUI interface design 19
5.1 IIR digital filter denoising platform GUI interface design process 20
5.2 IIR digital filter denoising platform interface design 21
5.2.1 Original voice module design 22
5.2. 2 Noise-added speech module design 25
5.2.3 Filter module design 27
5.2.4 Exit module design 28
6 Summary 29
6.1 Deficiencies in filter design 30
6.2 Summary and prospect 31
2 Design and research of digital filter

The filter is a linear system such as filtering the signal and estimating the parameters. It is based on the difference equation and is mainly divided into two parts: a digital filter and an analog filter. The latter filters the continuous time domain signal and It is composed of capacitors, resistors and transistors. The former generally first samples the continuous time domain signal to obtain the discrete time domain signal, which is then filtered by a computer or by special digital filtering hardware. Digital Filter (Digital Filter) or DF is divided into two categories, namely IIR (Infinite Impulse Response) and FIR (Finite Impulse Response) [1]. The current signal and historical input are used as input, and the output signal will also be fed back to IIR as an input signal, thus forming a closed loop, while FIR only has current input data and historical input as input signal input to FIR without feedback (the schematic block diagram is shown in the figure 2-1). This paper mainly takes the design of IIR filter as the main research object and includes GUI interface design, and FIR is not involved too much.
insert image description here

Figure 2-1 Block diagram of two digital filters


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%---------------------------利用函数wavread对语音信号的采集--------------------------------%
global wav_in;
global wav_in_1;
global Fs;
global bits;
global n;
global f1;
[filename pathname]=uigetfile({
    
    '*.wav'}, 'File Selector');
[wav_in,Fs,bits] = wavread([pathname '\' filename]);

handles.wav_in = wav_in;
guidata(hObject, handles);
axes(handles.axes1);
% aa=abs(fftshift(wav_in));
% plot(aa);title('')
N=length(wav_in);
 n=0:N-1;
 plot(n,wav_in);                             %画出原始语音信号的波形
 xlabel('n');
 ylabel('x(n)');
 title('原始语音信号');
 f1=fft(wav_in,N);            %对语音号进行快速傅里叶变换,得出频谱
% GX=fft(wav_in,512);

 sound(wav_in,Fs);
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global wav_in;
global wav_in_1;
global Fs;
global bits;
global n;
global f1;
% SNR=40;
% wav_in=awgn(wav_in,SNR);
 y1=fft(wav_in,512);
  f=Fs*(0:511)/512;
Au=0.03;
 wav_in=wav_in(:,1);
t=0:1/Fs:(size(wav_in)-1)/Fs;%将所加噪声信号的点数调整到与原始信号相同
  d=[Au*cos(2*pi*5000*t)]';%噪声为5kHz的余弦信号
  wav_in_1=10*wav_in+d;
   y2=fft(wav_in_1,512);
handles.wav_in = wav_in_1;% ¨¨¨
guidata(hObject, handles);
axes(handles.axes2);
 plot(t,wav_in_1)
 title('加噪后的信号');
 xlabel('time n');
 ylabel('fuzhi n');
  guidata(hObject, handles);
 axes(handles.axes3);
  plot(abs(n),abs(f1));     
  xlabel('k');
  ylabel('|y(k)|');
  title('FFT后的波形');
% guidata(hObject, handles);
% axes(handles.axes3);
%  plot(f,abs(y1(1:512)));
%  title('原始语音信号频谱');
%  xlabel('Hz');
%  ylabel('fuzhi');
guidata(hObject, handles);
axes(handles.axes4);
 plot(f,abs(y2(1:512)));
 title('加噪后的信号频谱');
 xlabel('Hz');
 ylabel('fuzhi');
sound(wav_in_1,Fs);


insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here

Guess you like

Origin blog.csdn.net/newlw/article/details/131780717