├── .gitignore ├── Mccowan ├── GenNoiseMSC.m ├── README.md ├── applyPostfilter.m └── post_filter_func.m ├── README.md ├── an101-mtms-arrA ├── an101-mtms-arrA 1.wav ├── an101-mtms-arrA 2.wav ├── an101-mtms-arrA 3.wav ├── an101-mtms-arrA 4.wav ├── an101-mtms-arrA 5.wav ├── an101-mtms-arrA 6.wav ├── an101-mtms-arrA 7.wav ├── an101-mtms-arrA 8.wav └── an101-mtms-senn.wav ├── lefkin ├── GenNoiseMSC.m ├── applyPostfilter.m └── postfilter_lefkin.m └── reference ├── An Optimum Microphone Array Post-Filter for Speech Applications.pdf ├── LefkimmiatisMaragos_GeneralizedEstimationMicrophoneArrays_specom2007.pdf └── Microphone Array Post-Filter Based on Noise Field Coherence.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | ##ignore this file## 2 | 3 | EventDetector/bin/EventDetector 4 | 5 | EventDetector/Makefile 6 | 7 | EventDetector/CMakeFiles/ 8 | 9 | cmake_install.cmake 10 | 11 | CMakeCache.txt 12 | 13 | *.asv 14 | 15 | *.pk 16 | 17 | *.d 18 | 19 | # Object files 20 | *.o 21 | *.ko 22 | *.obj 23 | *.elf 24 | 25 | # Linker output 26 | *.ilk 27 | *.map 28 | *.exp 29 | 30 | # Precompiled Headers 31 | *.gch 32 | *.pch 33 | 34 | # Libraries 35 | *.lib 36 | *.a 37 | *.la 38 | *.lo 39 | 40 | # Shared objects (inc. Windows DLLs) 41 | *.dll 42 | *.so 43 | *.so.* 44 | *.dylib 45 | 46 | # Executables 47 | *.exe 48 | *.out 49 | *.app 50 | *.i*86 51 | *.x86_64 52 | *.hex 53 | 54 | # Debug files 55 | *.dSYM/ 56 | *.su 57 | *.idb 58 | *.pdb 59 | 60 | # Kernel Module Compile Results 61 | *.mod* 62 | *.cmd 63 | .tmp_versions/ 64 | modules.order 65 | Module.symvers 66 | Mkfile.old 67 | dkms.conf 68 | 69 | output/ -------------------------------------------------------------------------------- /Mccowan/GenNoiseMSC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/Mccowan/GenNoiseMSC.m -------------------------------------------------------------------------------- /Mccowan/README.md: -------------------------------------------------------------------------------- 1 | # microphone array post-filter 2 | implement McCowan poster-filter 3 | 4 | refer to "Microphone array post-filter based on noise field coherence" 5 | -------------------------------------------------------------------------------- /Mccowan/applyPostfilter.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % test McCowan postfilter 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | % close all 5 | % clear all; 6 | c = 340; % speed of sound 7 | 8 | %% 9 | %% load recorded office noise audio 10 | noisepath = '../an101-mtms-arrA/an101-mtms-arrA '; 11 | % noisepath = '../sound/backward/2/'; 12 | [noise1,fs] = audioread([noisepath,'1.wav']); 13 | noise2 = audioread([noisepath,'2.wav']); 14 | noise3 = audioread([noisepath,'3.wav']); 15 | noise4 = audioread([noisepath,'4.wav']); 16 | [noise5,fs] = audioread([noisepath,'5.wav']); 17 | noise6 = audioread([noisepath,'6.wav']); 18 | noise7 = audioread([noisepath,'7.wav']); 19 | noise8 = audioread([noisepath,'8.wav']); 20 | x = [noise1,noise2,noise3,noise4,noise5,noise6,noise7,noise8]; 21 | 22 | %% high-pass 23 | bhi = fir1(512,0.01,'high'); 24 | x = filter(bhi,1,x); 25 | 26 | interval = 1:120000; 27 | % x = x(interval,:); 28 | N = size(x,2); %Channels 29 | M = N; 30 | angle = [197,90]/180*pi; 31 | r = 0.07; 32 | frameLength = 256; 33 | overlap = 128; 34 | inc = frameLength - overlap; 35 | N_FFT = 256; 36 | 37 | P_len = N_FFT/2+1; 38 | Pxii_pre = ones(N,P_len); 39 | Pxij_pre = ones((N*N-N)/2,P_len); 40 | 41 | %% Frequency domain delay-sum,time alignment 42 | % [ DelaySumOut, x1,DS_weight] = DelaySumURA(x,fs,N_FFT,frameLength,inc,r,angle); 43 | Fvv_th = GenNoiseMSC(M,N_FFT,fs,r); 44 | %% fixed wideband MVDR using pre-defined noise cross-spectral matrix 45 | angle = [197,90]/180*pi; 46 | % [ MVDR_out,H,DI,WNG] = superdirectiveMVDR(x1,fs,N_FFT,frameLength,inc,r,angle); 47 | 48 | %% 49 | [ z,Pxii_pre,Pxij_pre] = post_filter_func( x,sum(x,2)/8,fs,N_FFT,frameLength,inc,Fvv_th,Pxii_pre,Pxij_pre,angle); 50 | 51 | -------------------------------------------------------------------------------- /Mccowan/post_filter_func.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/Mccowan/post_filter_func.m -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # microphone array postfilter 2 | 3 | 4 | refer to 5 | 6 | "Microphone Array Post-Filter Based on Noise Field Coherence" 7 | 8 | "A generalized estimation approach for linear and nonlinear 9 | microphone array post-filters" 10 | 11 | "An Optimum Microphone Array Post-Filter for Speech Applications" 12 | 13 | 14 | -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 1.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 2.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 3.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 4.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 5.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 6.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 7.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-arrA 8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-arrA 8.wav -------------------------------------------------------------------------------- /an101-mtms-arrA/an101-mtms-senn.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/an101-mtms-arrA/an101-mtms-senn.wav -------------------------------------------------------------------------------- /lefkin/GenNoiseMSC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/lefkin/GenNoiseMSC.m -------------------------------------------------------------------------------- /lefkin/applyPostfilter.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % test lefkim postfilter 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | % close all 5 | % clear all; 6 | c = 340; % speed of sound 7 | 8 | %% 9 | %% load recorded office noise audio 10 | noisepath = '../an101-mtms-arrA/an101-mtms-arrA '; 11 | % noisepath = '../sound/backward/2/'; 12 | [noise1,fs] = audioread([noisepath,'1.wav']); 13 | noise2 = audioread([noisepath,'2.wav']); 14 | noise3 = audioread([noisepath,'3.wav']); 15 | noise4 = audioread([noisepath,'4.wav']); 16 | noise5 = audioread([noisepath,'5.wav']); 17 | noise6 = audioread([noisepath,'6.wav']); 18 | noise7 = audioread([noisepath,'7.wav']); 19 | noise8 = audioread([noisepath,'8.wav']); 20 | x = [noise1,noise2,noise3,noise4,noise5,noise6,noise7,noise8]; 21 | % x = [noise2,noise3,noise4,noise5,noise6,noise7]; 22 | %% high-pass 23 | bhi = fir1(512,0.01,'high'); 24 | x = filter(bhi,1,x); 25 | 26 | interval = 1:120000; 27 | % x = x(interval,:); 28 | N = size(x,2); %Channels 29 | M = N; 30 | angle = [197,90]/180*pi; 31 | r = 0.07; 32 | frameLength = 256; 33 | overlap = 128; 34 | inc = frameLength - overlap; 35 | N_FFT = 256; 36 | 37 | P_len = N_FFT/2+1; 38 | Pxii_pre = ones(N,P_len); 39 | Pxij_pre = ones((N*N-N)/2,P_len); 40 | 41 | %% Frequency domain delay-sum,time alignment 42 | % [ DelaySumOut, x1,DS_weight] = DelaySumURA(x,fs,N_FFT,frameLength,inc,r,angle); 43 | Fvv_th = GenNoiseMSC(M,N_FFT,fs,r); 44 | %% fixed wideband MVDR using pre-defined noise cross-spectral matrix 45 | angle = [197,90]/180*pi; 46 | % [ MVDR_out,H,DI,WNG] = superdirectiveMVDR(x1,fs,N_FFT,frameLength,inc,r,angle); 47 | MVDRweights = ones(M,N_FFT/2+1)*0.25; 48 | %% 49 | [ z] = postfilter_lefkin( x,sum(x,2)/8,MVDRweights,fs,N_FFT,frameLength,inc,Fvv_th,Pxii_pre,Pxij_pre,angle); 50 | 51 | -------------------------------------------------------------------------------- /lefkin/postfilter_lefkin.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/lefkin/postfilter_lefkin.m -------------------------------------------------------------------------------- /reference/An Optimum Microphone Array Post-Filter for Speech Applications.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/reference/An Optimum Microphone Array Post-Filter for Speech Applications.pdf -------------------------------------------------------------------------------- /reference/LefkimmiatisMaragos_GeneralizedEstimationMicrophoneArrays_specom2007.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/reference/LefkimmiatisMaragos_GeneralizedEstimationMicrophoneArrays_specom2007.pdf -------------------------------------------------------------------------------- /reference/Microphone Array Post-Filter Based on Noise Field Coherence.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangwei2009/Microphone-Array-postfilter/a20abd03963272785d2296047ad179a68827b39d/reference/Microphone Array Post-Filter Based on Noise Field Coherence.pdf --------------------------------------------------------------------------------