Desideri un array mini-microfono USB. È possibile?


13

Ho imparato molto sulla formazione del fascio adattivo e mi sono dilettato con vari sim in MATLAB, ecc.

Ma quale modo migliore per capire qualcosa - veramente capirlo - che giocare con l'intero sistema?

A tal fine, vorrei trovare (costruire?) Un array di microfoni USB, per esempio 5 microfoni o giù di lì. Sarebbero in grado di acquisire segnali dall'ambiente, (ovvero ovunque si trovi il mio laptop), e quindi sarei in grado di prendere quei segnali ed elaborarli in MATLAB o altro.

Preferirei davvero non costruire il tutto, quindi spero che qualcuno abbia già usato array di microfoni USB collegati in passato e possa puntare nella giusta direzione?

I microfoni non devono necessariamente essere fantasiosi quando si tratta di risoluzioni bit dei loro A / D, ecc. I microfoni KISS di qualità rispettabile andranno bene.

Risposte:


8

La videocamera Playstation Eye ha un array di microfoni lineari a 4 elementi. Fornisce campioni a 16 bit a 48 KHz con un SNR di 90 dB. È facile da usare: enumera come un dispositivo audio USB standard con quattro canali separati.

Per un esempio dell'uso in questo modo, vedi: Test audio a 4 canali per PS3 Eye su Ubuntu Karmic


1
@Mohammad Questa sarebbe probabilmente una buona soluzione se sei felice di limitarti a quattro canali. Quattro canali offrono un guadagno di beamforming di circa 12 dB. Il rovescio della medaglia è che a causa del fatto che l'estensione totale dell'array è piuttosto piccola, avrai un punto focale piuttosto grande che forma i raggi: non puoi separare fonti sonore troppo vicine tra loro. La vostra applicazione principale per questo array probabilmente non isolerebbe le fonti sonore ma piuttosto traccerebbe una singola sorgente sonora attraverso lo spazio. Vale a dire dove si trova una persona dalla loro voce ...
ARF,

1
@ArikRaffaelFunke Hmm, non so abbastanza sulla formazione del fascio adattivo per sapere cos'è un punto focale. :-) Comunque penso che sarei ancora in grado di separare le fonti usando ICA non istantaneo. (attualmente mi sto concentrando sull'ICA). Inoltre, sì, 4 non è quanto speravo ... Ma forse questo può essere un inizio
Spacey,

3

Avendo lavorato a lungo nel beamforming adattivo, avrei davvero evitato di hackerare qualcosa per questo fino a quando non avessi avuto qualche esperienza. (Nota: le soluzioni professionali con circa 60 canali costano circa 100.000 €. Con molti canali la risoluzione spaziale migliora molto, ma si ottiene solo una quantità limitata di informazioni attraverso una porta USB ...)

Per un beamforming affidabile è essenziale che tutti i microfoni utilizzino la stessa base dei tempi. Il modo più semplice per raggiungere questo obiettivo è con una scheda audio USB esterna con più canali di ingresso. Ma quelli non sono davvero economici. Hai dato un'occhiata a cosa si può trovare su eBay?

Un'alternativa è quella di sacrificare la base dei tempi comune utilizzando un numero di schede audio USB con ad esempio due canali ciascuna. Sarà tuttavia necessario calibrare il sistema di acquisizione. Questo non è davvero così difficile come sembra:

Per calibrare, si configura l'array e si produce un suono breve (ad esempio una crepa / applauso / ecc.) A una distanza dall'array che è dell'ordine dell'estensione dell'array. Quindi registri questo suono e usi Matlab o simili per calcolare la correlazione incrociata tra clap / crack / etc. sui diversi canali. Questo ti fornirà un elenco di offset di tempo che devi applicare ai tuoi canali per allinearli prima di fornire i dati al tuo algoritmo di beamforming.

Per esplorare il beamforming adattivo, questa è probabilmente la strada da percorrere a meno che non sia possibile contrattare su una scheda audio multicanale.


Modifica 1

Questa modifica serve a rispondere alle domande poste nei commenti.

L'idea di base di delay e sum beamforming è applicare ritardi a diversi canali di acquisizione in modo tale che i suoni originati da un punto nello spazio siano allineati e "amplificati" quando vengono aggiunti segnali dai diversi canali. I suoni che provengono da altre regioni dello spazio non si allineano e quindi non sono "amplificati".

Il punto nello spazio per il quale i suoni si allineano utilizzando un certo insieme di ritardi è chiamato focus del array di microfoni (o punto focale). In realtà, tuttavia, il focus non è un punto ideale, ma piuttosto una piccola (ish) regione (a seconda della matrice) di spazio per cui i suoni si allineano bene. La dimensione di questa regione è chiamata dimensione del punto focale.

La geometria (dimensioni, forma, ecc.) Dipende dai dettagli esatti dell'array: numero di microfoni, spaziatura dei microfoni, contenuto in frequenza dei segnali di interesse. Vedi ad esempio questo articolo .

Per ulteriori informazioni, cercare testi sulla messa a fuoco di "matrici a fasi" o "matrici lineari" negli ultrasuoni. Il Beamforming può essere utilizzato alla ricezione (per amplificare i segnali da un certo punto nello spazio) o all'emissione (per creare un punto "forte" in una stanza). I principi sono identici: basta sostituire "microfono" con "altoparlante" nel tuo pensiero.

Per quanto riguarda la procedura di calibrazione: hai ragione. La procedura che ho delineato è troppo semplicistica. Funziona bene solo se è possibile creare l'applauso di calibrazione da una distanza molto più lunga rispetto alla regione di spazio a cui si è interessati (vale a dire per garantire un'onda normale).

Se ciò non è possibile, è necessario tenere conto della posizione dell'applauso. In questo caso, la procedura più semplice consiste nel correggere i ritardi mediante correlazione incrociata come descritto, ma quindi aggiungere nuovamente la curvatura del fronte d'onda sul segnale applicando un insieme di ritardi "inversione del fascio di luce" calcolato con la posizione dell'origine del clap. (Cioè se usi una variabile di profondità + t0 (o + z0) nel tuo algoritmo "normale" di beamforming, devi usare -t0 (o -z0) per l'algoritmo di beamforming inverso.)

Qual è il punto di questa calibrazione: elimina qualsiasi errore dovuto alle diverse schede audio che iniziano la loro registrazione in momenti leggermente diversi. Ciò normalmente impedirebbe l'allineamento corretto dei segnali anche con ritardi corretti e quindi impedire l'effetto di amplificazione che si sta cercando.


Grazie Arik. Tuttavia, non sono sicuro del motivo per cui si desidera compensare i ritardi qui. Ad esempio, alcuni beamforming adattivi come sai sono delay-and-sum, quindi prende automaticamente in considerazione i problemi di ritardo. La seconda cosa (credo che questo è quello che stai dicendo), è che io non voglio un comune tempo-sync. (ad esempio, premere un pulsante, tutti i microfoni iniziano a registrare contemporaneamente), ma non voglio che abbiano ritardi comuni.
Spacey,

In realtà ho integrato nel mio laptop, un array di microfoni, penso che siano solo due microfoni, ma potrebbe essere un punto di partenza, tuttavia non ho idea di come accedere ai loro dati con il minimo sforzo separatamente ...
Spacey

@Mohammad - il problema non sta compensando i ritardi noti , ma sta compensando i ritardi sconosciuti . Fondamentalmente, ci sarà un po 'di tempo di elaborazione per ciascuna scheda audio USB separata e potrebbe variare da dispositivo a dispositivo (nel qual caso potrebbe essere compensato), o anche non essere costante / cambiare a seconda del caricamento del bus USB.
Connor Wolf,

@Mohammad Cosa ha detto FakeName ... Per rendere le cose forse ancora più chiare: la base dei tempi per qualsiasi beamforming deve essere migliore del semiperiodo della componente di frequenza più alta che vuoi prendere in considerazione. Credo che sia impossibile raggiungere questo obiettivo con schede audio indipendenti semplicemente avviandole contemporaneamente alla registrazione. Le cose sono diverse se si dispone di una singola scheda audio con più canali.
ARF,

@ArikRaffaelFunke Capisco cosa intendi per calibrazione, ho frainteso la tua affermazione. Tuttavia, non vedo come si possa rimuovere il ritardo dalla base dei tempi non comune, senza rimuovere inavvertitamente anche il ritardo dal canale (che si desidera mantenere). L'unico modo è assicurarsi che la distanza di ciascun microfono dal clap sia la stessa, ma ciò è impossibile per un array lineare> 2. Forse se abbastanza lontano (quindi fronti delle onde planari) non importerebbe troppo?
Spacey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.