6 v" Y. H; H# u; S7 _( D+ M. ~% l 3 `& _1 _, f4 `* n, A[cleanSignal,setup.sampFreq] = audioread('..\data\twoMaleTwoFemale20Seconds.wav'); ; P7 \) u+ c( R) a0 V8 {3 }7 J* y0 J/ D5 P* E; n
%---------------------------------------------------initial end----------------------------------------! J8 h6 K6 [! x% _
% O1 f V* X* @! ^( f! T9 O/ S2 R0 m1 c/ O; T- F: z; M
0 Z! O/ _% u$ ]; q( c
%-------------------------------algorithm processing-------------------------------------------------- - M: s2 L1 `! H. r' M8 u : s0 E* h$ P1 s; Aif setup.reverbTime == 0, % ~& k9 l4 w7 Z0 d! A setup.reverbTime = 0.2;2 e: |6 ]( ^( j1 c
reflectionOrder = 0; $ y( ?% I8 w- A! G1 Kelse : D0 t! c4 M' v* p reflectionOrder = -1; , F( g7 C7 G/ z7 ~( s& S' Jend$ f2 B. k8 J4 E
) S. I) Q4 m' ?1 T5 y2 A4 F3 I
rirMatrix = rir_generator(setup.speedOfSound,setup.sampFreq,setup.micPoints',setup.srcPoint',setup.roomDim',..." o$ _8 U$ W$ c1 }4 ]' k
setup.reverbTime,setup.nRirLength,setup.micType,setup.reflectionOrder,[],[],setup.hpFilterFlag); 7 ^1 |4 @8 I, F/ G( ?! C 3 @+ i0 \% z' u* B9 X) Gfor iSens = 1:setup.nSensors,$ j. ?' T( i# o
tmpCleanSignal(:,iSens) = fftfilt(rirMatrix(iSens,',cleanSignal); ! z+ D( |3 F( bend # `" W; k2 K- U5 dmcSignals.clean = tmpCleanSignal(setup.nRirLength:end,;) g, l8 e* [7 B: _* B% a
setup.nSamples = length(mcSignals.clean); . I2 p' f/ r0 Q- K- |# a4 _ [4 O. P
mcSignals.clean = mcSignals.clean - ones(setup.nSamples,1)*mean(mcSignals.clean); * ] X3 P( r* w7 B & c( ~) a8 @' E) b1 I& T* Q0 _# R%-------produce the microphone recieved clean signals--------------------------------------------- y6 V( r! }; e. O : ^% L) ~8 g' g( omic_clean1=10*mcSignals.clean(:,1); %Because of the attenuation of the recievd signals,Amplify the signals recieved by Mics with tenfold7 D# e1 T5 D$ ~, X2 {
mic_clean2=10*mcSignals.clean(:,2);* c" P9 L |2 q; z8 B) S
mic_clean3=10*mcSignals.clean(:,3); 1 `7 k* V0 r2 p" ^( qmic_clean4=10*mcSignals.clean(:,4);1 d4 f( [# h1 q' K# S& R
audiowrite('mic_clean1.wav' ,mic_clean1,setup.sampFreq);. y! R7 N. O9 j7 b
audiowrite('mic_clean2.wav' ,mic_clean2,setup.sampFreq); ' z7 [ b2 j, x4 }! Oaudiowrite('mic_clean3.wav' ,mic_clean3,setup.sampFreq);# p* D7 `1 z, l7 I
audiowrite('mic_clean4.wav' ,mic_clean4,setup.sampFreq);" k, z1 [# ~: w* }1 q0 N8 X
" g6 B2 p- I* r' t, ]! U%----------------------------------end-------------------------------------------------- 6 d ~( k t N c9 d1 b$ U9 n2 j7 b, G
addpath([cd,'\..\nonstationaryMultichanNoiseGenerator\']); , {6 @& e- ~; n" ~ J% K% S3 Y7 s9 t9 x8 P' D6 f
cleanSignalPowerMeas = var(mcSignals.clean); D+ }( |2 G6 A4 V. j! r, ]" _
8 E6 g0 W& {$ E( L' G- h. d$ R
mcSignals.diffNoise = generateMultichanBabbleNoise(setup.nSamples,setup.nSensors,setup.sensorDistance,... 3 [8 y% _1 X6 q5 j setup.speedOfSound,setup.noiseField); & R1 w8 c9 Q2 J4 ldiffNoisePowerMeas = var(mcSignals.diffNoise); + E9 t/ m9 Q+ W3 ?0 @$ hdiffNoisePowerTrue = cleanSignalPowerMeas/10^(setup.sdnr/10); 6 ^1 N# L c0 V5 n2 bmcSignals.diffNoise = mcSignals.diffNoise*... & l$ ? v3 u6 D1 I) \) G, | diag(sqrt(diffNoisePowerTrue)./sqrt(diffNoisePowerMeas)); + S- m/ J& l. @$ i7 `- L 3 [7 Q" z/ u1 o2 T- T* amcSignals.sensNoise = randn(setup.nSamples,setup.nSensors); : x" l/ S# c5 isensNoisePowerMeas = var(mcSignals.sensNoise); + H( N; a B) o# m& [$ `sensNoisePowerTrue = cleanSignalPowerMeas/10^(setup.ssnr/10);! l9 Q8 |, ]' C6 b3 A4 p8 C
mcSignals.sensNoise = mcSignals.sensNoise*... ! M0 g. J( ~& K9 c3 C; z8 J diag(sqrt(sensNoisePowerTrue)./sqrt(sensNoisePowerMeas)); * a9 T5 @" ~$ U ' V7 s t9 E/ D7 w8 g( q7 BmcSignals.noise = mcSignals.diffNoise + mcSignals.sensNoise; + n5 _, E7 J; b* I; o- JmcSignals.observed = mcSignals.clean + mcSignals.noise;$ l0 r: r7 h% {7 @9 {. W
0 F1 U2 h7 Y2 F' l
%------------------------------processing end-----------------------------------------------------------8 e- t. E% L; @3 O
" [0 C, p b; W1 y9 f$ @
" {3 J+ F& z' S! x+ R- K9 p
0 S" {5 m& ~. Z" S" c9 Q. T. d 3 ]; z' t. M3 H, m% q; C* Y%----------------produce the noisy speech of MIc in the specific ervironment sets------------------------! H% Q1 m1 x8 t& w7 a2 O% e) z
4 ~9 T0 z* s: Gnoisy_mix1=10*mcSignals.observed(:,1); %Amplify the signals recieved by Mics with tenfold * _/ z2 C! D, \: Tnoisy_mix2=10*mcSignals.observed(:,2);* F1 I n3 Z" l( `- j. O4 ?
noisy_mix3=10*mcSignals.observed(:,3);1 ^& ^, F- y" I3 G* I( n1 h. a( t( X% n
noisy_mix4=10*mcSignals.observed(:,4); % Y3 }1 y q% e, l5 Y8 `2 Rl1=size(noisy_mix1); . v) Y% e$ ^" \- U, Y, b9 H. hl2=size(noisy_mix2); - q T& T& r- R9 ]l3=size(noisy_mix3);6 ?/ r+ ]( x5 f& W7 T
l4=size(noisy_mix4); 5 q6 W/ d9 |2 ~/ N- }audiowrite('diffused_babble_noise1_20dB.wav' ,noisy_mix1,setup.sampFreq); h9 A% ]: x2 O0 [& G8 q6 e3 `; K
audiowrite('diffused_babble_noise2_20dB.wav' ,noisy_mix2,setup.sampFreq);& @8 t$ |0 z" r0 @4 W5 G8 _0 {
audiowrite('diffused_babble_noise3_20dB.wav' ,noisy_mix3,setup.sampFreq);4 V* j _" L$ A' m& G* O
audiowrite('diffused_babble_noise4_20dB.wav' ,noisy_mix4,setup.sampFreq);4 H3 F3 k. G& {0 y
$ u1 j' y- v1 f3 Q