Questo progetto software è frutto del lavoro svolto per conseguire la laurea in ingegneria delle telecomunicazioni presso l'università "La Sapienza" di Roma.
Il mio elaborato riguarda la localizzazione di una sorgente sonora all'interno di un'ambiente chiuso.
Titolo tesi: " Algoritmi di localizzazione di sorgenti audio in presenza di riverbero: confronto e implementazione in tempo reale".
Relatore: Dott. Raffaele Parisi (Sito del docente)
Correlatore: Dott. Albenzio Cirillo (Sito)
Data di discussione della tesi: 18 Febbraio 2008
Le onde sonore che vengono generate da una sorgente e si propagano in un ambiente chiuso originano un fenomeno complesso che prende il nome di riverbero, dovuto alla sovrapposizione degli effetti di riflessione, diffrazione e diffusione. L'acustica "geometrica" trascura in prima approssimazione diffrazione e diffusione, limitandosi a modellare le riflessioni del segnale sulle pareti e sugli ostacoli eventualmente presenti. Il risultato è il modellamento della funzione di trasferimento della stanza, o equivalentemente della sua risposta impulsiva. In particolare una tecnica spesso utilizzata è quella che fa uso di sorgenti "virtuali" disposte esternamente alla stanza (metodo delle sorgenti immagine).
Tra le applicazioni di interesse vi sono innanzitutto la localizzazione e l'inseguimento di sorgenti sonore, che costituiscono una parte importante di molti sistemi per video-conferenza, telefonia in viva-voce, ecc. I parametri spaziali che si ottengono nel processo di localizzazione possono essere successivamente utilizzati per il dereverbero dei segnali (parlato o musica), la detezione di difetti in macchinari, il riconoscimento di parlatori.
La localizzazione delle sorgenti può avvenire mediante tecniche di "array processing" (per esempio "beamforming") oppure tramite la stima preliminare dei ritardi relativi (Time Delay of Arrival, TDOA) tra i segnali acquisiti da coppie di microfoni, seguita da triangolazione. In particolare le TDOA possono essere stimate mediante tecniche di cross-correlazione generalizzata. Il problema principale è quello di trattare in modo adeguato gli "arrivi multipli" sui microfoni, dati dalla sovrapposizione dei segnali diretti tra sorgenti e microfoni e dei segnali riflessi. La presenza del riverbero richiede quindi l'utilizzo di opportune tecniche di pre-elaborazione affinchè la stima delle TDOA avvenga correttamente.
Nel mio elaborato di tesi mi sono occupato di algoritmi per la localizzazione di sorgente sonora facenti uso della stima preliminare dei ritardi relativi (Time Delay of Arrival, TDOA) tra i segnali acquisiti da coppie di microfoni, detti anche "Metodi indiretti". Nel dettaglio gli algoritmi che ho utilizzato per risolvere il problema di localizzazione sono:
Particle Filtering (PF)
Particle Swarm Optimization (PSO)
In entrambi i casi ho sviluppato prima una soluzione software funzionante in batch a partire da segnali audio registrati (in formato .wav) e poi una soluzione funzionante in real-time tramite acquisizione di segnali audio reali mediante la scheda audio di un personal computer general purpose.
Elaborato di tesi
Presentazione Power Point
Video dimostrativi (date le dimensioni notevoli dei file inviatemi un'e-mail per richiesta)
File audio in formato WAV (date le dimensioni notevoli dei file inviatemi un'e-mail per richiesta)
Codice del programma in C++ (Algoritmo Particle Filtering PF)
Codice del programma in C++ (Algoritmo Particle Swarm Optimization PSO)
Permettono di creare applicazioni Win32, Mac OS X, GTK+, X11, Motif, WinCE e altro. Possono essere utilizzate all'interno di linguaggi di programmazione come: C++, Python, Perl e C#/.NET.
Intel® Integrated Performance Primitives (Intel® IPP) è un set di librerie multicore-ready, che offre funzioni per applicazioni applicazioni "digital media" e "data-processing" altamente ottimizzate. In tale progetto han rivestito notevole importanza in quanto tramite esse è stato possibile effettuare la stima spettrale dei segnali audio utilizzati senza reimplementare da capo gli algoritmi per effettuare una FFT (Fast Fourier Transform). Inoltre si sono rivelate molto performanti in molte operazioni richiedenti il calcolo vettoriale. Tramite esse è stato possibile realizzare un software funzionante in tempo reale (Real Time).
PortAudio è un set di librerie per l' I/O audio, free, cross platform, ed open-source. Permette di scrivere un semplice programma audio in 'C' che può essere compilato ed eseguito su varie piattaforme: Windows, Macintosh (8,9,X), Unix (OSS), SGI, and BeOS. Tramite questo set di librerie è stato possibile acquisire segnali audio reali, tramite array microfonici collegati ad una scheda audio multicanale, collegata tramite porta USB al PC su cui si utilizza il software per la localizzazione di sorgente sonora.
Matlab, per la simulazione di un ambiente chiuso. Nello specifico è stato possibile, tramite un tool di Matlab, ottenere le risposte impulsive di una stanza chiusa in modo da poter ottenere dei segnali audio riverberati utilizzati per effettuare dei test sul software.
Microsoft Visual Studio, un IDE per poter gestire in maniera agevole un progetto in C++ contenente le librerie menzionate precedentemente.