Module Localisation de Sources sonores

PACT

matfontaine.github.io/PACT-LOC

Mathieu FONTAINE
mathieu.fontaine@telecom-paris.fr

2022-2023

Attentes du module

  • Comprendre l'algorithme de localisation MUSIC
  • Implémentation à la main de MUSIC sous Python
  • Application au projet PACT (pourquoi ce module est adapté etc.)
  • Résultats avec la méthode implémentée + comparaison avec version de Pyroomacoustics

Livrable

  • Code de votre groupe en Python avec quelques résultats.

Plan

I - Transformée de Fourier à court terme

II - Modèle et hypothèse

III - Algorithme MUSIC

I - Transformée de Fourier à court terme

La transformée de Fourier discrète

Soit un signal discret $x_0,\dots,x_{N-1}$. Sa transformée de Fourier (discrète) est:
$$ X(f) = \sum_{n=0}^{N-1}x_ne^{-i\frac{2\pi f n}{N}} $$
  • On obtient une représentation fréquentielle du signal
  • Complexité algorithmique : $O(N^2)$

Il existe une version édulcorée qui réduit la complexité $O(N^2)$ en $O(N\log(N))\\$ (cf. Cooley-Tukey FFT algorithm)
Figure : champ d'une Baleine. On remarque l'activité dans les basses fréquences.

On emploiera la FFT dans la suite.

Transformée de Fourier à Court Terme (TFCT)

  • Découpage d'un signal en plusieurs séquences
  • multiplication par un fenêtrage (Pourquoi ? cf. poly OASIS)
  • FFT sur chacune des séquences
TFCT d'un signal de parole (selon Laroche)
On obtient un signal "temps-fréquence" $X(f,t)$

Spectrogramme de puissance

  • Module au carré des coefficients
  • $$ S(f,t) = |X(f,t)|^2 \qquad\qquad\qquad \texttt{(Spectrogramme de Puissance)} $$
  • Pour une meilleure représentation, on calcule le log du SP.
Figure : Log-Spectrogramme d'un signal de parole.

II - Modèle et hypothèse

Position du problème

Propagation du son (champ proche)

L'explication ici est extrêmement simplifié par rapport à un vrai cours d'acoustique (mais sera suffisant pour implémenter un algorithme de localisation)
  • quand la source n'est pas loin des microphones (moins de 50cm pour des micros espacées de 5-10cm)
  • alors la propagation du son est représentée par des ondes sphériques.
Si on considère $M$ microphones aux points $m_1, \dots, m_M$ et $p_1, \dots, p_L$ $L$ points avec ses coordonnées cartésiennes et $r_{ml}$ la distance euclidienne entre le point $a_l$ et le $n$-ème microphone alors les vecteurs de pointage (représentant la propagation de la source au microphone) est un vecteur $\bold{a}_l(f) \in \mathbb{C}^M$ donnée par :
$$ \bold{a}_{l}(f) = [\frac{1}{r_{1l}}e^{-i\frac{\omega_f r_{1l}}{c_0}}, \dots, \frac{1}{r_{Ml}}e^{-i\frac{\omega_f r_{Ml}}{c_0}}] $$
  • $\omega_f = 2\pi f$ : fréquence angulaire (avec $f$ en Hz)
  • $c_0 \approx 331$ m.s${^{-1}}$ : célérité du son dans l'air sec avec une température à 20°C.

Propagation du son (champ lointain)

  • quand la source est plus loin des microphones (plus de 50cm pour des micros espacées de 5-10cm)
  • alors la propagation du son est représentée par des ondes planes et les sources peuvent être supposés être à l'infini
  • On estimera juste des angles d'arrivées (Azimuth et élévation) et non des distances
Si on considère $M$ microphones aux points $m_1, \dots, m_M$ et $\overrightarrow{u}_1, \dots, \overrightarrow{u}_L$ $L$ vecteurs unitaires orientés dans la direction de point lointain $L$ alors le vecteur de pointage $\bold{a}_l(f) \in \mathbb{C}^M$ est donnée par :
$$ \bold{a}_{l}(f) = [e^{-i k_f(l).m_1}, \dots, e^{-i k_f(l).m_M}] $$
  • $k_f(l) = 2\pi f / c_0 \overrightarrow{u}_l$ : le vecteur d'onde
  • $.$ dans l'exponentielle représente ici le produit scalaire
  • Les $\overrightarrow{u}_l$ sont par exemple des coordonnées sphériques (si on prend l'azimuth et élévation) ou des coordonnées circulaires avec un rayon de $1$

Modèle acoustique

  • Soient $s_1,\dots,s_N$ $N$ sources ponctuelles que l'on souhaite localiser
  • on suppose la TFCT effectuée sur ces sources et on note $\bold{s}_{ft}= [s_{1ft}, \dots, s_{Nft}]^\top \in \mathbb{C}^M$ le vecteur contenant les sources ponctuelles au point temps-fréquence $f,t$
  • Soit $\bold{x}_{ft}= [x_{1ft}, \dots, x_{Nft}]^\top \in \mathbb{C}^M$ l'acquisition du signal par $M$ microphones
  • On définit également le vecteur $\bold{n}_{ft}=[n_{1ft}, \dots, n_{Mft}]^\top \in \mathbb{C}^M$ qui est un bruit additif parasitant l'acquisition des $M$ microphones, indépendante du signal
Un modèle classique (avec une réverbération "raisonnable") est de supposer le modèle de mélange suivant :
$$ \bold{x}_{ft} = A_{f}\bold{s}_{ft} + \bold{n}_{ft} $$
où $\bold{A}_f \in \mathbb{C}^{M \times N}$ est appelée matrice de mélange et a le rôle de représenter la "propagation acoustique" des sources au microphones.

III - MUSIC

Multiple signal classification (MUSIC)

  • Pour l'article au grand complet, c'est ici !
  • Idée : faire une décomposition en valeurs propres de la matrice de covariance du mélange $R_{x, ft} = \mathbb{E}(\bold{x}_{ft}\bold{x}_{ft}^\top)$ et exploiter le fait que les espaces propres engendrant le bruit et la sources sont orthogonaux
D'après $\bold{x}_{ft} = A_{f}\bold{s}_{ft} + \bold{n}_{ft}$ on obtient (si $n$ est gaussien de covariance $\sigma^2 I_M$) :
$$R_{x, ft} = \bold{A}_fR_{s, ft}\bold{A}_f^H + \sigma^2I_M $$
avec $R_{s,ft}$ la matrice de covariance de la source.
Un estimateur de $R_{x, ft}$ (si les sources sont immobiles) est donnée par : $$\widehat{\mathbf{R}}_{\mathbf{x}, f}=T^{-1} \sum_{t=1}^T \mathbf{x}_{f t} \mathbf{x}_{f t}^{\mathrm{H}}$$
Attention ! cette algorithme ne marche que quand $N \leq M$

Suite MUSIC

On peut alors montrer (c'est la contribution de MUSIC) que :
  • $R_{x, ft}$ est de rang plein
  • Les $N \leq M$ plus grandes valeurs propres de $R_{x, ft}$ engendrent l'espace propre du signal $\bold{Q}_{s,f} \in \mathbb{C}^{M \times N}$
  • l'espace propre du bruit $\bold{Q}_{n,f} \in \mathbb{C}^{M \times (M-N)}$ est orthogonal à $\bold{Q}_{s,f}$
En particulier, il est possible de montrer que si $\theta$ est l'angle d'arrivé d'une source alors $\bold{a}_{f}^H(\theta)q_{n,ft} = 0$ où $q_{n,ft}$ est un vecteur propre de l'espace propre du bruit. La fonction suivante (appelé pseudo spectre) :
$$ P_f^{\operatorname{MUSIC}}(\theta)=\frac{1}{\mathbf{a}_f^H(\theta) \mathbf{Q}_{\mathbf{n}, f t} \mathbf{Q}_{\mathbf{n}, f t}^H \mathbf{a}_f(\theta)} $$
tend alors vers l'infini pour les directions de la source $\implies$ on en déduit notre algorithme de localisation !

Résumé de l'algorithme

  • Calculer $\widehat{\mathbf{R}}_{\mathbf{x}, f}$ et faire une décomposition en valeurs propres pour obtenir $\mathbf{Q}_{\mathbf{n}, f}$ à partir des $N-M$ plus petites valeurs propres
  • Calculer $\sum_f P_f^{\text {MUSIC }}\left(\theta_l\right)$ pour différents points $\left\{\theta_l\right\}_l$ et faire du "pick peaking"

Variante encore plus performante et simple à implémenter: Norm-MUSIC

  • Pour le détail technique c'est ici !
  • Remplacer $\sum_f P_f^{\text {MUSIC }}\left(\theta_l\right)$ par $$P^{\text {NormMUSIC }}\left(\theta_l\right)=\sum_{f=1}^F \frac{P_f^{\mathrm{MUSIC}}\left(\theta_l\right)}{\max _{l^{\prime}=1, \ldots, L} P_f^{\text {MUSIC }}\left(\theta_{l^{\prime}}\right)}$$ et faire du "pick peaking"
  • Permet en quelque sorte de normaliser par la fréquence qui contient le plus d'information sur la position