SlideShare a Scribd company logo
1 of 14
Izdvajanje signala pomoću mikrofonskog niza preko LMS beamformer-a
Dimitrije Jovanović, Nikola Antonijević
Elektrotehnički fakultet Univerziteta u Beogradu
Sadržaj
1 Postavka problema 2
2 Uvod 3
2.1 Gradijentni algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 LMS algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Adaptivni Beamformer 4
3.1 Treniranje koeficijenata filtra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Filtriranje signala sa željenog zvučnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3 Matrično pakovanje koeficijenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Poboljšanje adaptacije koristeći Hlibertovu transformaciju 6
5 MATLAB simulacija 7
6 Rezultati 13
7 Literatura 14
Strana 1 of 14
1 Postavka problema
U prostoriji se nalaze dva zvučna izvora (zvučnika) i mikrofonski niz sa 24 mikrofona. Geometrija i izgled
mikrofonskog niza prikazani su na slici 1. Skica eksperimentalne postavke data je na slici 2. Sa jednog izvora
emituje se MLS sekvenca, a sa drugog zvučnika beli šum. Signal koji se snima sa mikrofonskog niza ima 24
nezavisna kanala. Potrebno je dizajnirati adaptivni beamformer tako da se na izlazu beamformera dobija
signal sa jednog od zvučnika (ulaz u beamformer je signal sa mikrofonskog niza). Postupak ponoviti i za
drugi zvučnik.
Slika 1: Geometrija mikrofonskog niza i njegov fizički izgled
Slika 2: Skica merenja
Nakon toga na ulaz kreiranih beamformera dovesti signal sa mikrofonskog niza i analizirati da li beamformer
može da razdvoji signale u ovom slučaju. Pored objektivnih provera sličnosti originalnih signala i signala na
izlazu beamformera koristiti i subjektivne metode, odnosno slušanje.
Strana 2 of 14
2 Uvod
2.1 Gradijentni algoritam
Važan rezultat teorije Vinerovog filtra je da je funkcija greške J(w) konveksni paraboloid sa jedinstvenim
minimumom. Ovaj karakteristični oblik funkcije greške može da se iskoristi da bi se do minimuma funkcije
greške došlo rekurzivno, umesto putem direktnog rešavanja normalnog sistema jednačina, a u cilju eliminisanja
potrebe za invertovanjem autokorelacione matrice R. Pošto je funkcija greške konveksni paraboloid, do
minimuma se može doći polazeći iz bilo koje tačke, ako se korak po korak ide nizbrdo. Pošto je funkcija greške
konveksni paraboloid, do minimuma se moe doći polazeći iz bilo koje tačke, ako se ide korak po korak ide ka
tački minimuma.
Slika 3: Funkcija greške gradijentnog algoritma
2.2 LMS algoritam
Gradijentni algoritam obezbedjuje stabilnu i determinističku konvergenciju koeficijenata adaptivnog filtra ka
optimalnim vrednostima, čime omogućava da se do optimalnih vrednosti koeficijenata dodje bez potrebe da
se invertuje autokorelaciona matrica - pod uslovom da poznajemo autokorelacionu funkciju ulaznog signala i
unakrsnu korelaciju ulaznog i aproksimiranog signala.
Ove veličine su neophodne da bi se izračunala tekuća vrednost gradijenta funkcije greške u svakoj iteraciji.
Ako ne raspolažemo ovim veličinama, moramo da u svakoj iteraciji izvršimo procenu gradijenta. Widrow i
Hoff su 1960. godine predložili jednostavan način da se ovaj gradijent proceni.
Njihova modifikacija gradijentnog algoritma, nazvana Least Mean Square (LMS) kao glavnu odliku ima
izuzetnu jednostavnost. Upravo zahvaljujui jednostavnosti, ovaj algoritam se veoma mnogo koristi u praksi.
LMS algoritam se oslanja na definiciju načina na koji se izraunavaju nove vrednosti koeficijenata adaptivnog
transverzalnog filtra u gradijentnom algoritmu.
Rekurzivna relacija LMS algoritma (adaptaciono pravilo) je w (n + 1) = w (n) + 1
2 µ (−∇ (n)).
Strana 3 of 14
3 Adaptivni Beamformer
3.1 Treniranje koeficijenata filtra
Grane odgovaraju mikrofonima. U svakoj grani se koeficijent množe signalima sa mikrofona. Ti signali se
sabiraju i dovode nea ulaz adaptivnog algoritma.
Slika 4: Širokopojasni Beamforming
y(n) = w∗
x(n + 1)
e(n) = y(n) − d(n)
w(n + 1) = w(n) − 2µx(n + 1)e(n)
MSE(n) = E[|e(n)|2
]
3.2 Filtriranje signala sa željenog zvučnika
Sada se sa zvučnika puštaju violina i govor. Signali sa mikrofona se samo propuštaju kroz istrenirani filtar iz
prethodnog koraka.
Strana 4 of 14
3.3 Matrično pakovanje koeficijenata
Posmatra se n-ta iteracija, n = L, . . . , N.
Koeficijenti filtra: w = [w1 · · · wKL]
T
W =





w1 · · · wL
w2 · · · w2L
.
.
.
.
.
.
...
wKL−L+1 · · · wKL





(1)
Ulazni signal: x = [x1 · · · xKL]
T
X =





x1 · · · xL
x2 · · · x2L
.
.
.
.
.
.
...
xKL−L+1 · · · xKL





(2)
Svaka kolona ovih matrica odgovara jednom mikrofonu grani beamformera.
Konvolucija po formuli: y(n) = w∗
x(n + 1)
Konvolucija preko proizvoda matrica: y(n) je zbir svih elemenata matrice WH
X.
Slika 5: Matrični raspored koeficijenata
Strana 5 of 14
4 Poboljšanje adaptacije koristeći Hlibertovu transformaciju
Ulazni i referentni signali su realni. Hilbertovom transformacijom oni postaju analitički.
Frekvencijski odziv Hilbertovog transformatora je oblika H(ejw
) =
(
−j 0 ≤ ω < π
j −π ≤ ω < 0
.
Impulsni odziv Hilbertovog transformatora je oblika h(n) =
(1−cos(nπ)
nπ n 6= 0
0 n = 0
=



2sin2
(nπ
2 )
nπ n 6= 0
0 n = 0
.
Strana 6 of 14
5 MATLAB simulacija
Kod 1.
clc;
close all;
clear all;
5 %pkg load signal;
%% ucitavanje signala
% emitovani signali sa levog i desnog izvora
10 [mls_sekvenca,Fs1] = audioread(’mls_sekvenca.wav’);
[beli_sum,Fs2] = audioread(’beli_sum.wav’);
% snimnjen signal
[niz_mls_sum,Fs4] = audioread(’mikrofonski_niz_MLS_beli_sum.wav’);
15
% signal na kom testiramo nas beamformer
[niz_violona_govor,Fs5] = audioread(’mikrofonski_niz_violina_govor.wav’);
% signal za kalibraciju
20 %[kalibracija,Fs6] = audioread(’kalibracija.wav’);
%% kalibracija signala
% rms_kalibracija=rms(kalibracija);
25 % rms_niz_mls_sum=rms(niz_mls_sum);
% max1=max(rms_niz_mls_sum);
%
% rms_niz_mls_sum_normalizovano=niz_mls_sum./max1;
% niz_mls_sum_kalibrisan=rms_niz_mls_sum_normalizovano(1:end,1:end).*rms_kalibracija(1:end);
30 % rms_niz_mls_sum_kalibrisan=rms(niz_mls_sum_kalibrisan);
%% parametri
L=24; % broj grana
K=360; % broj koeficijenata u svakoj grani
35 N=40000; % duzina signala
mu=1.5;
% definisanje nizova i matrica
W=zeros(K,L); % matrica koeficijenata u beamformer-u
40 X=zeros(K,L); % matrica odbiraka signala u beamformer-u
d=mls_sekvenca(1:N); % referentni signal ako se izdvaja violina
%d=beli_sum(1:N); % referentni signal ako se izdvaja govor
d=hilbert(d);
45 ulazni=niz_mls_sum(1:N,:); % da su istih duzina
ulazni=hilbert(ulazni);
% ulazni=hilbert(ulazni);
y=zeros(N,1); % zbirni signal
50 e=zeros(N,1); % signal greske
Strana 7 of 14
%% algoritam
for n=(K+1):N
55 for l=1:L
for k=K:-1:2
X(k,l)=X(k-1,l);
end
end
60
for l=1:L
X(1,l)=ulazni(n,l);
end
65 odziv_po_granama=((W)).*X;
y(n)=sum(sum(odziv_po_granama));
e(n)=y(n)-d(n);
for l=1:L
70 for k=1:K
W(k,l)=W(k,l)-2*mu*(conj(X(k,l))*e(n));
end
end
i f mod(n,1000)==0
75 n
end
end
%% grafik greske
80
MSE=(abs(e)).ˆ2;
fs=Fs1;
figure ,plot((K+1):N,MSE((K+1):N));
set(gca,’FontSize’,15)
85 xlabel(’Redni broj odbirka’);
ylabel(’Vrednost greske - MSE’);
y_real=real(y);
y_real_n=y_real./(max(abs(y_real)));
90
figure ,plot((N-8000:N-7880)/fs,mls_sekvenca(N-8000:N-7880),’LineWidth’,1);
hold on
plot((N-8000:N-7880)/fs,y_real_n(N-8000:N-7880),’LineWidth’,2);
ylim([-1.35 1.35]);
95 xlabel(’itt[s]’);
ylabel(’Normalizovana amplituda’);
legend({’originalna sekvenca’,’filtriran signal’});
set(gca,’FontSize’,15)
100
%% violina
% kalibracija signala
%
Strana 8 of 14
105 % rms_kalibracija=rms(kalibracija);
% rms_niz_violona_govor=rms(niz_violona_govor);
% max1=max(rms_niz_violona_govor);
%
% rms_niz_violona_govor_normalizovano=niz_violona_govor./max1;
110 % niz_violona_govor_kalibrisan=rms_niz_violona_govor_normalizovano(1:end,1:end).*rms_kalibracija(1:en
% algoritam
115 N=363320;
ulazni2=niz_violona_govor(1:N,:);
ulazni2_h=hilbert(ulazni2);
y_test=zeros(N,1);
120 % pustamo kroz utrenirani beamform-er
for n=K+1:N
for l=1:L
125 for k=K:-1:2
X(k,l)=X(k-1,l);
end
end
130 for l=1:L
X(1,l)=ulazni2(n,l);
end
odziv_po_granama=W.*X;
135 y_test(n)=sum(sum(odziv_po_granama));
i f mod(n,1000)==0
n
end
end
140
% if mod(n,1000)==0
% n
% end
145
%%
% za nefiltrirani signal uzimamo npr. vrednost sa prvog mikrofona,
% pojacanu za neku konstantu (ne znamo kako tacno da dovedemo ulazni i
150 % izlazni signal na istu jacinu)
y_test_real=real(y_test);
y_test_real_n=y_test_real./(max(y_test_real));
y_test_real_n=y_test_real_n(K+1:N);
155
dd=niz_violona_govor(:,1);
dd=dd(K+1:N);
Strana 9 of 14
dd=20*dd;
%sound(dd,Fs5);
160
audiowrite(’Signal sa prvog mikrofona1.wav’,dd,Fs1);
audiowrite(’filtrirani signal1.wav’,y_test_real_n,Fs1);
%pause(9);
165 %sound(y_test_real_n,Fs5); % filtrirani signal
%%
Drugi način kodkoga se beamformer drugačije popunjava odbircima ulaznog signala:
Kod 2.
clear all; close all; clc;
%pkg load signal;
5
%[kalibracija, fs] = audioread (’kalibracija.wav’);
[mic_mls_belisum, fs] = audioread (’mikrofonski_niz_MLS_beli_sum.wav’);
[mls, fs] = audioread (’mls_sekvenca.wav’);
[belisum, fs] = audioread (’beli_sum.wav’);
10 [mic_violina_govor, fs] = audioread (’mikrofonski_niz_violina_govor.wav’);
% Kalibracija
% skalirani_mic_mls_belisum = zeros(size(mic_mls_belisum));
15 % max_rms = -1; % najglasniji mikrofon
% max_rms_ind = 1; % najglasniji mikrofon
% for br=1:24
% if rms(mic_mls_belisum(:,br)) > max_rms
% max_rms_ind = br;
20 % max_rms = rms(mic_mls_belisum(:,max_rms_ind));
% end
% end
% skalirani_mic_mls_belisum = mic_mls_belisum / max_rms .* rms(kalibracija);
25 % % --------------------------------------
% Slucaj kad signali mikrofona imaju isti rms kao zeljeni signal
% R = rms(mls);
% for br = 1:24
30 % in = mic_mls_belisum(:,br);
% a = sqrt((length(in)*R^2)/(sum(in.^2)));
% skalirani_mic_mls_belisum(:,br) = in*a;
% end
% rms(skalirani_mic_mls_belisum);
35 %%
N = 40000; % Ukupan broj odbiraka
x_t = mic_mls_belisum(1:N,:); % 24 ulaznih signala sa po N odbiraka
40
% R = rms(x_t(:,1));
Strana 10 of 14
% for br = 1:24
% in = x_t(:,br);
% a = sqrt((length(in)*R^2)/(sum(in.^2)));
45 % x_t(:,br) = in*a;
% end
% Psr = rms(x_t(:,1))^2
% 1/(N*Psr)
50 x_t=hilbert(x_t);
K = 24; % broj mikrofona
J = 360; % red filtra u jednoj grani, ovo se povecava,
% ovde ide for petlja za adaptivno menjanje, probali smo vise vrednosti,
55 % nema vidljive razlike u konacnom rezultatu
% Ukupan broj koeficijenata filtra celog sistema je K*J
60 mu = 1.5; % tek treba naci optimalnu vrednost
x = zeros(J*K,1); % vektor svih odbiraka signala unutar beamformera
w = zeros(J*K,1); % vektor svih koeficijenata beamformera
W = (reshape(w,K,J))’; % i-ta kolona su koeficijenti i-te grane bemaformera (ima 24 grane)
65 X = (reshape(x,K,J))’; % i-ta kolona su odbirci ulaznog signala u i-toj grani beamformera
MSE = zeros(N,1); % srednja kvadratna greska
y = zeros(N,1); % zbir odziva svake grane
d = hilbert(mls(1:N,1)); % zeljeni signal
70 % d = hilbert(belisum(1:N,1));
e = zeros(N,1); % vektor greske
for n = J:N
75 X(:,1:K) = x_t(n:-1:n-J+1,1:K); % popunjavanje svake grane odbircima ulaznih signala sa mikrofona
% odmah smo popunili celu matricu
% redjaju se unazad zbog racunanja konvolucije
odziv_po_granama = conj(W).*X; % matrica proizvoda signala i koeficijenata svake grane
80
% sum(odziv_po_granama) je vektor odziva svake grane u n-toj iteraciji
y(n) = sum(sum(odziv_po_granama)); % zbir odziva svake grane u n-toj iteraciji
e(n) = y(n) - d(n);
MSE(n,1) = abs(e(n).ˆ2);
85 w = reshape(W’,1,J*K); % matricu transformisemo u vektor
x = reshape(X’,1,J*K);
w = w - 2*mu*e(n)*(x); % mozda ovo treba popraviti
90 W = (reshape(w,K,J))’; % nove koeficijente vracamo nazad u svaku granu beamformera (u matricu)
i f mod(n,1000)==0
n
end
Strana 11 of 14
95 end
figure ,plot((J+1):N,MSE((J+1):N));
set(gca,’FontSize’,15)
100 xlabel(’Redni broj odbirka’);
ylabel(’Vrednost greske - MSE’);
y_real=real(y);
y_real_n=y_real./(max(abs(y_real)));
105
figure ,plot((N-8000:N-7880)/fs,mls(N-8000:N-7880),’LineWidth’,1);
hold on
plot((N-8000:N-7880)/fs,y_real_n(N-8000:N-7880),’LineWidth’,2);
ylim([-1.35 1.35]);
110 xlabel(’itt[s]’);
ylabel(’Normalizovana amplituda’);
legend({’originalna sekvenca’,’filtriran signal’});
set(gca,’FontSize’,15)
115 N=363320;
y_test=zeros(N,1);
ulaz2 = hilbert(mic_violina_govor);
120 for n = J:N
X(:,1:K) = ulaz2(n:-1:n-J+1,1:K);
odziv_po_granama = conj(W).*X; % matrica proizvoda signala i koeficijenata svake grane
125
y_test(n) = sum(sum(odziv_po_granama)); % zbir odziva svake grane u n-toj iteraciji
i f mod(n,1000)==0
n
130 end
end
%%
dd=mic_violina_govor(:,1);
135 dd=dd(J+1:N);
dd=20*dd;
%sound(dd,Fs5);
y_test_real=real(y_test);
140 audiowrite(’Signal sa prvog mikrofona2.wav’,dd,fs);
audiowrite(’filtrirani signal2.wav’,y_test_real,fs);
%pause(9);
%sound(y_test_real_n,Fs5); % filtrirani signal
145 %%
Strana 12 of 14
6 Rezultati
Slika 6: Grafik srednje kvadratne greške
Slika 7: Grafik referentnog i filtriranog signala
Zbog pojave Multipath-a, u realnim uslovima se dobija odstupanje filtriranog i željenog signala, čak i posle
dobro istreniranih koeficijenata filtra.
Strana 13 of 14
7 Literatura
1. M.Bjelić, M.Stanojević: ”Comparison of LMS Adaptive Beamforming Techniques in Microphone Arrays”
(2015)
2. M.Bjelić, M.Stanojević, D.Š.Pavlović, M.Milić: Microphone array geometry optimization for traffic
noise analysis (2017)
3. S. Haykin: ”Adaptive Filter Theory” (2014)
4. A.D. Poularikas, Z.M. Ramadan: ”Adaptive Filtering Primer with MATLAB” (2006)
5. A.Greensted: ”Frost’s Algorithm, Microphone Array Beamforming” (2010)
Strana 14 of 14

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Audio Signal Extraction Using LMS Beamforming in Microphone Arrays

  • 1. Izdvajanje signala pomoću mikrofonskog niza preko LMS beamformer-a Dimitrije Jovanović, Nikola Antonijević Elektrotehnički fakultet Univerziteta u Beogradu Sadržaj 1 Postavka problema 2 2 Uvod 3 2.1 Gradijentni algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 LMS algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Adaptivni Beamformer 4 3.1 Treniranje koeficijenata filtra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Filtriranje signala sa željenog zvučnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Matrično pakovanje koeficijenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4 Poboljšanje adaptacije koristeći Hlibertovu transformaciju 6 5 MATLAB simulacija 7 6 Rezultati 13 7 Literatura 14 Strana 1 of 14
  • 2. 1 Postavka problema U prostoriji se nalaze dva zvučna izvora (zvučnika) i mikrofonski niz sa 24 mikrofona. Geometrija i izgled mikrofonskog niza prikazani su na slici 1. Skica eksperimentalne postavke data je na slici 2. Sa jednog izvora emituje se MLS sekvenca, a sa drugog zvučnika beli šum. Signal koji se snima sa mikrofonskog niza ima 24 nezavisna kanala. Potrebno je dizajnirati adaptivni beamformer tako da se na izlazu beamformera dobija signal sa jednog od zvučnika (ulaz u beamformer je signal sa mikrofonskog niza). Postupak ponoviti i za drugi zvučnik. Slika 1: Geometrija mikrofonskog niza i njegov fizički izgled Slika 2: Skica merenja Nakon toga na ulaz kreiranih beamformera dovesti signal sa mikrofonskog niza i analizirati da li beamformer može da razdvoji signale u ovom slučaju. Pored objektivnih provera sličnosti originalnih signala i signala na izlazu beamformera koristiti i subjektivne metode, odnosno slušanje. Strana 2 of 14
  • 3. 2 Uvod 2.1 Gradijentni algoritam Važan rezultat teorije Vinerovog filtra je da je funkcija greške J(w) konveksni paraboloid sa jedinstvenim minimumom. Ovaj karakteristični oblik funkcije greške može da se iskoristi da bi se do minimuma funkcije greške došlo rekurzivno, umesto putem direktnog rešavanja normalnog sistema jednačina, a u cilju eliminisanja potrebe za invertovanjem autokorelacione matrice R. Pošto je funkcija greške konveksni paraboloid, do minimuma se može doći polazeći iz bilo koje tačke, ako se korak po korak ide nizbrdo. Pošto je funkcija greške konveksni paraboloid, do minimuma se moe doći polazeći iz bilo koje tačke, ako se ide korak po korak ide ka tački minimuma. Slika 3: Funkcija greške gradijentnog algoritma 2.2 LMS algoritam Gradijentni algoritam obezbedjuje stabilnu i determinističku konvergenciju koeficijenata adaptivnog filtra ka optimalnim vrednostima, čime omogućava da se do optimalnih vrednosti koeficijenata dodje bez potrebe da se invertuje autokorelaciona matrica - pod uslovom da poznajemo autokorelacionu funkciju ulaznog signala i unakrsnu korelaciju ulaznog i aproksimiranog signala. Ove veličine su neophodne da bi se izračunala tekuća vrednost gradijenta funkcije greške u svakoj iteraciji. Ako ne raspolažemo ovim veličinama, moramo da u svakoj iteraciji izvršimo procenu gradijenta. Widrow i Hoff su 1960. godine predložili jednostavan način da se ovaj gradijent proceni. Njihova modifikacija gradijentnog algoritma, nazvana Least Mean Square (LMS) kao glavnu odliku ima izuzetnu jednostavnost. Upravo zahvaljujui jednostavnosti, ovaj algoritam se veoma mnogo koristi u praksi. LMS algoritam se oslanja na definiciju načina na koji se izraunavaju nove vrednosti koeficijenata adaptivnog transverzalnog filtra u gradijentnom algoritmu. Rekurzivna relacija LMS algoritma (adaptaciono pravilo) je w (n + 1) = w (n) + 1 2 µ (−∇ (n)). Strana 3 of 14
  • 4. 3 Adaptivni Beamformer 3.1 Treniranje koeficijenata filtra Grane odgovaraju mikrofonima. U svakoj grani se koeficijent množe signalima sa mikrofona. Ti signali se sabiraju i dovode nea ulaz adaptivnog algoritma. Slika 4: Širokopojasni Beamforming y(n) = w∗ x(n + 1) e(n) = y(n) − d(n) w(n + 1) = w(n) − 2µx(n + 1)e(n) MSE(n) = E[|e(n)|2 ] 3.2 Filtriranje signala sa željenog zvučnika Sada se sa zvučnika puštaju violina i govor. Signali sa mikrofona se samo propuštaju kroz istrenirani filtar iz prethodnog koraka. Strana 4 of 14
  • 5. 3.3 Matrično pakovanje koeficijenata Posmatra se n-ta iteracija, n = L, . . . , N. Koeficijenti filtra: w = [w1 · · · wKL] T W =      w1 · · · wL w2 · · · w2L . . . . . . ... wKL−L+1 · · · wKL      (1) Ulazni signal: x = [x1 · · · xKL] T X =      x1 · · · xL x2 · · · x2L . . . . . . ... xKL−L+1 · · · xKL      (2) Svaka kolona ovih matrica odgovara jednom mikrofonu grani beamformera. Konvolucija po formuli: y(n) = w∗ x(n + 1) Konvolucija preko proizvoda matrica: y(n) je zbir svih elemenata matrice WH X. Slika 5: Matrični raspored koeficijenata Strana 5 of 14
  • 6. 4 Poboljšanje adaptacije koristeći Hlibertovu transformaciju Ulazni i referentni signali su realni. Hilbertovom transformacijom oni postaju analitički. Frekvencijski odziv Hilbertovog transformatora je oblika H(ejw ) = ( −j 0 ≤ ω < π j −π ≤ ω < 0 . Impulsni odziv Hilbertovog transformatora je oblika h(n) = (1−cos(nπ) nπ n 6= 0 0 n = 0 =    2sin2 (nπ 2 ) nπ n 6= 0 0 n = 0 . Strana 6 of 14
  • 7. 5 MATLAB simulacija Kod 1. clc; close all; clear all; 5 %pkg load signal; %% ucitavanje signala % emitovani signali sa levog i desnog izvora 10 [mls_sekvenca,Fs1] = audioread(’mls_sekvenca.wav’); [beli_sum,Fs2] = audioread(’beli_sum.wav’); % snimnjen signal [niz_mls_sum,Fs4] = audioread(’mikrofonski_niz_MLS_beli_sum.wav’); 15 % signal na kom testiramo nas beamformer [niz_violona_govor,Fs5] = audioread(’mikrofonski_niz_violina_govor.wav’); % signal za kalibraciju 20 %[kalibracija,Fs6] = audioread(’kalibracija.wav’); %% kalibracija signala % rms_kalibracija=rms(kalibracija); 25 % rms_niz_mls_sum=rms(niz_mls_sum); % max1=max(rms_niz_mls_sum); % % rms_niz_mls_sum_normalizovano=niz_mls_sum./max1; % niz_mls_sum_kalibrisan=rms_niz_mls_sum_normalizovano(1:end,1:end).*rms_kalibracija(1:end); 30 % rms_niz_mls_sum_kalibrisan=rms(niz_mls_sum_kalibrisan); %% parametri L=24; % broj grana K=360; % broj koeficijenata u svakoj grani 35 N=40000; % duzina signala mu=1.5; % definisanje nizova i matrica W=zeros(K,L); % matrica koeficijenata u beamformer-u 40 X=zeros(K,L); % matrica odbiraka signala u beamformer-u d=mls_sekvenca(1:N); % referentni signal ako se izdvaja violina %d=beli_sum(1:N); % referentni signal ako se izdvaja govor d=hilbert(d); 45 ulazni=niz_mls_sum(1:N,:); % da su istih duzina ulazni=hilbert(ulazni); % ulazni=hilbert(ulazni); y=zeros(N,1); % zbirni signal 50 e=zeros(N,1); % signal greske Strana 7 of 14
  • 8. %% algoritam for n=(K+1):N 55 for l=1:L for k=K:-1:2 X(k,l)=X(k-1,l); end end 60 for l=1:L X(1,l)=ulazni(n,l); end 65 odziv_po_granama=((W)).*X; y(n)=sum(sum(odziv_po_granama)); e(n)=y(n)-d(n); for l=1:L 70 for k=1:K W(k,l)=W(k,l)-2*mu*(conj(X(k,l))*e(n)); end end i f mod(n,1000)==0 75 n end end %% grafik greske 80 MSE=(abs(e)).ˆ2; fs=Fs1; figure ,plot((K+1):N,MSE((K+1):N)); set(gca,’FontSize’,15) 85 xlabel(’Redni broj odbirka’); ylabel(’Vrednost greske - MSE’); y_real=real(y); y_real_n=y_real./(max(abs(y_real))); 90 figure ,plot((N-8000:N-7880)/fs,mls_sekvenca(N-8000:N-7880),’LineWidth’,1); hold on plot((N-8000:N-7880)/fs,y_real_n(N-8000:N-7880),’LineWidth’,2); ylim([-1.35 1.35]); 95 xlabel(’itt[s]’); ylabel(’Normalizovana amplituda’); legend({’originalna sekvenca’,’filtriran signal’}); set(gca,’FontSize’,15) 100 %% violina % kalibracija signala % Strana 8 of 14
  • 9. 105 % rms_kalibracija=rms(kalibracija); % rms_niz_violona_govor=rms(niz_violona_govor); % max1=max(rms_niz_violona_govor); % % rms_niz_violona_govor_normalizovano=niz_violona_govor./max1; 110 % niz_violona_govor_kalibrisan=rms_niz_violona_govor_normalizovano(1:end,1:end).*rms_kalibracija(1:en % algoritam 115 N=363320; ulazni2=niz_violona_govor(1:N,:); ulazni2_h=hilbert(ulazni2); y_test=zeros(N,1); 120 % pustamo kroz utrenirani beamform-er for n=K+1:N for l=1:L 125 for k=K:-1:2 X(k,l)=X(k-1,l); end end 130 for l=1:L X(1,l)=ulazni2(n,l); end odziv_po_granama=W.*X; 135 y_test(n)=sum(sum(odziv_po_granama)); i f mod(n,1000)==0 n end end 140 % if mod(n,1000)==0 % n % end 145 %% % za nefiltrirani signal uzimamo npr. vrednost sa prvog mikrofona, % pojacanu za neku konstantu (ne znamo kako tacno da dovedemo ulazni i 150 % izlazni signal na istu jacinu) y_test_real=real(y_test); y_test_real_n=y_test_real./(max(y_test_real)); y_test_real_n=y_test_real_n(K+1:N); 155 dd=niz_violona_govor(:,1); dd=dd(K+1:N); Strana 9 of 14
  • 10. dd=20*dd; %sound(dd,Fs5); 160 audiowrite(’Signal sa prvog mikrofona1.wav’,dd,Fs1); audiowrite(’filtrirani signal1.wav’,y_test_real_n,Fs1); %pause(9); 165 %sound(y_test_real_n,Fs5); % filtrirani signal %% Drugi način kodkoga se beamformer drugačije popunjava odbircima ulaznog signala: Kod 2. clear all; close all; clc; %pkg load signal; 5 %[kalibracija, fs] = audioread (’kalibracija.wav’); [mic_mls_belisum, fs] = audioread (’mikrofonski_niz_MLS_beli_sum.wav’); [mls, fs] = audioread (’mls_sekvenca.wav’); [belisum, fs] = audioread (’beli_sum.wav’); 10 [mic_violina_govor, fs] = audioread (’mikrofonski_niz_violina_govor.wav’); % Kalibracija % skalirani_mic_mls_belisum = zeros(size(mic_mls_belisum)); 15 % max_rms = -1; % najglasniji mikrofon % max_rms_ind = 1; % najglasniji mikrofon % for br=1:24 % if rms(mic_mls_belisum(:,br)) > max_rms % max_rms_ind = br; 20 % max_rms = rms(mic_mls_belisum(:,max_rms_ind)); % end % end % skalirani_mic_mls_belisum = mic_mls_belisum / max_rms .* rms(kalibracija); 25 % % -------------------------------------- % Slucaj kad signali mikrofona imaju isti rms kao zeljeni signal % R = rms(mls); % for br = 1:24 30 % in = mic_mls_belisum(:,br); % a = sqrt((length(in)*R^2)/(sum(in.^2))); % skalirani_mic_mls_belisum(:,br) = in*a; % end % rms(skalirani_mic_mls_belisum); 35 %% N = 40000; % Ukupan broj odbiraka x_t = mic_mls_belisum(1:N,:); % 24 ulaznih signala sa po N odbiraka 40 % R = rms(x_t(:,1)); Strana 10 of 14
  • 11. % for br = 1:24 % in = x_t(:,br); % a = sqrt((length(in)*R^2)/(sum(in.^2))); 45 % x_t(:,br) = in*a; % end % Psr = rms(x_t(:,1))^2 % 1/(N*Psr) 50 x_t=hilbert(x_t); K = 24; % broj mikrofona J = 360; % red filtra u jednoj grani, ovo se povecava, % ovde ide for petlja za adaptivno menjanje, probali smo vise vrednosti, 55 % nema vidljive razlike u konacnom rezultatu % Ukupan broj koeficijenata filtra celog sistema je K*J 60 mu = 1.5; % tek treba naci optimalnu vrednost x = zeros(J*K,1); % vektor svih odbiraka signala unutar beamformera w = zeros(J*K,1); % vektor svih koeficijenata beamformera W = (reshape(w,K,J))’; % i-ta kolona su koeficijenti i-te grane bemaformera (ima 24 grane) 65 X = (reshape(x,K,J))’; % i-ta kolona su odbirci ulaznog signala u i-toj grani beamformera MSE = zeros(N,1); % srednja kvadratna greska y = zeros(N,1); % zbir odziva svake grane d = hilbert(mls(1:N,1)); % zeljeni signal 70 % d = hilbert(belisum(1:N,1)); e = zeros(N,1); % vektor greske for n = J:N 75 X(:,1:K) = x_t(n:-1:n-J+1,1:K); % popunjavanje svake grane odbircima ulaznih signala sa mikrofona % odmah smo popunili celu matricu % redjaju se unazad zbog racunanja konvolucije odziv_po_granama = conj(W).*X; % matrica proizvoda signala i koeficijenata svake grane 80 % sum(odziv_po_granama) je vektor odziva svake grane u n-toj iteraciji y(n) = sum(sum(odziv_po_granama)); % zbir odziva svake grane u n-toj iteraciji e(n) = y(n) - d(n); MSE(n,1) = abs(e(n).ˆ2); 85 w = reshape(W’,1,J*K); % matricu transformisemo u vektor x = reshape(X’,1,J*K); w = w - 2*mu*e(n)*(x); % mozda ovo treba popraviti 90 W = (reshape(w,K,J))’; % nove koeficijente vracamo nazad u svaku granu beamformera (u matricu) i f mod(n,1000)==0 n end Strana 11 of 14
  • 12. 95 end figure ,plot((J+1):N,MSE((J+1):N)); set(gca,’FontSize’,15) 100 xlabel(’Redni broj odbirka’); ylabel(’Vrednost greske - MSE’); y_real=real(y); y_real_n=y_real./(max(abs(y_real))); 105 figure ,plot((N-8000:N-7880)/fs,mls(N-8000:N-7880),’LineWidth’,1); hold on plot((N-8000:N-7880)/fs,y_real_n(N-8000:N-7880),’LineWidth’,2); ylim([-1.35 1.35]); 110 xlabel(’itt[s]’); ylabel(’Normalizovana amplituda’); legend({’originalna sekvenca’,’filtriran signal’}); set(gca,’FontSize’,15) 115 N=363320; y_test=zeros(N,1); ulaz2 = hilbert(mic_violina_govor); 120 for n = J:N X(:,1:K) = ulaz2(n:-1:n-J+1,1:K); odziv_po_granama = conj(W).*X; % matrica proizvoda signala i koeficijenata svake grane 125 y_test(n) = sum(sum(odziv_po_granama)); % zbir odziva svake grane u n-toj iteraciji i f mod(n,1000)==0 n 130 end end %% dd=mic_violina_govor(:,1); 135 dd=dd(J+1:N); dd=20*dd; %sound(dd,Fs5); y_test_real=real(y_test); 140 audiowrite(’Signal sa prvog mikrofona2.wav’,dd,fs); audiowrite(’filtrirani signal2.wav’,y_test_real,fs); %pause(9); %sound(y_test_real_n,Fs5); % filtrirani signal 145 %% Strana 12 of 14
  • 13. 6 Rezultati Slika 6: Grafik srednje kvadratne greške Slika 7: Grafik referentnog i filtriranog signala Zbog pojave Multipath-a, u realnim uslovima se dobija odstupanje filtriranog i željenog signala, čak i posle dobro istreniranih koeficijenata filtra. Strana 13 of 14
  • 14. 7 Literatura 1. M.Bjelić, M.Stanojević: ”Comparison of LMS Adaptive Beamforming Techniques in Microphone Arrays” (2015) 2. M.Bjelić, M.Stanojević, D.Š.Pavlović, M.Milić: Microphone array geometry optimization for traffic noise analysis (2017) 3. S. Haykin: ”Adaptive Filter Theory” (2014) 4. A.D. Poularikas, Z.M. Ramadan: ”Adaptive Filtering Primer with MATLAB” (2006) 5. A.Greensted: ”Frost’s Algorithm, Microphone Array Beamforming” (2010) Strana 14 of 14