18

Desidero sviluppare un'app per rilevare il vento in base al flusso audio.
Ho bisogno di alcuni pensieri esperti qui, solo per darmi linee guida o alcuni collegamenti, so che questo non è un compito facile, ma sto pensando di fare un sacco di sforzi qui.Rilevamento rumore del vento

Il mio piano è rilevare alcuni pattern comuni nel flusso e se i valori sono vicini a questi modelli comuni del rumore del vento notificherò che la corrispondenza è stata trovata, se i valori sono più vicini al modello noto grande, posso essere sicuri che il vento sia rilevato, se i valori non corrispondono ai modelli allora suppongo che non ci sia molto vento ....

Questo è il mio piano all'inizio, ma ho bisogno di imparare come questo le cose sono fatte C'è già qualche progetto aperto che sta facendo questo? O c'è qualcuno che sta facendo ricerche su questo argomento?

La ragione per cui scrivo su questo forum è perché non so come google, le cose che ho trovato non stavo cercando. Non so davvero come iniziare a sviluppare questo tipo di algoritmo.

EDIT 1:
ho provato a registrare un vento, e quando ho aperto il file audio salvato per me è stato solo un po 'di numeri :). Non vedo nemmeno in quale formato dovrei salvare questo, l'onda è abbastanza buona? Dovrei usare qualcos'altro, o cosa succede se converto il file audio del rumore del vento in mp3: è questo che aiuterà con l'analisi?

Beh, ho ricevuto molte domande, perché non so da dove leggere di più su questo argomento. Contrassegno la mia domanda con le linee guida, quindi spero che qualcuno mi aiuti.

Ci deve essere qualcosa che è rilevabile, perché il rumore del vento è così comune, ci deve essere in qualche modo per rilevare questo, abbiamo bisogno solo di qualcuno che mi dia consigli, qualcuno che abbia familiarità con questo argomento.

+1

+1: domanda interessante e onesta. – leppie

+1

Hai già registrato alcuni campioni di rumore del vento? Come sembrano? Intendo le serie temporali, gli spettri di potenza ... – kol

+3

Il vento è silenzioso da solo. È l'interazione con altri elementi che fanno rumore: foglie, case, oboi, microfoni ... Quindi devi prima restringere il tuo ambiente. – mouviciel

risposta

3

La scienza per il tuo problema si chiama "classificazione del modello", in particolare il sottocampo di "classificazione del modello audio". Il compito è astratto come classificare una registrazione audio in due classi (vento e non vento). Sembra che non abbiate ancora un forte background nell'elaborazione del segnale, quindi lasciatemi inserire un avvertimento centrale: La classificazione del modello non è così semplice come sembra in un primo momento. Gli umani eccellono nella classificazione del modello. I computer no.

Un buon primo approccio è spesso quello di calcolare la correlazione della trasformata di Fourier del segnale e un campione. Non so quanto dipenderà dalla velocità del vento, comunque.

Si potrebbe voler dare un'occhiata all'approccio bag-of-frames, è stato usato con successo per classificare il rumore ambientale.

2

Come @thiton ha menzionato questo è un esempio di classificazione del modello audio.

Principali caratteristiche del vento: è un rumore bianco modellato (banda/hp filtrato) con piccole fluttuazioni semi-casuali di ampiezza e altezza. Almeno è così che la maggior parte dei sintetizzatori lo riproducono e suona abbastanza convincente.

Devi controllare il contenuto spettrale e modificare il file d'onda, quindi avrai bisogno di FFT. Il formato di input non ha molta importanza, ma ovviamente la materia prima (wav) è migliore.

Una volta ottenuto ciò, è necessario rilevare che è vicino a una sorta di rumore colorato e quindi forse estrarre serie di intonazione e ampiezza e provare a utilizzare l'algoritmo di classificazione del modello classico per tale set di dati.Penso che l'apprendimento supervisionato possa funzionare qui.

3

Mi sono appena imbattuto in questo post di recente ho creato una libreria in grado di rilevare il rumore del vento nelle registrazioni.

Ho creato un modello di rumore del vento e creato un database di esempi e poi ho addestrato un algoritmo di Machine Learning per rilevare e misurare il livello del vento in modo percettivamente ponderato.

Il C++/C code is here se è utile a chiunque!

+0

Puoi dirci qualcosa in più sul tuo progetto? Mi piacerebbe sapere in che modo il codice è concesso in licenza (è open source, quale licenza?). La domanda richiede anche alcune indicazioni su come implementarlo. Quale approccio generale hai adottato? –

+1

Ciao il mio progetto si chiama il buon progetto di registrazione, è un progetto di ricerca presso l'Università di Salford, Regno Unito www.goodrecording.net. Stiamo esaminando i modi per determinare automaticamente la qualità dell'audio, in particolare nei contenuti generati dagli utenti. Il codice è open source, è concesso in licenza con la licenza MIT. L'approccio che ho usato è stato quello di creare un modello di rumore del vento, aggiungere il rumore a molti esempi di musica vocale e paesaggi sonori, quindi estrarre le caratteristiche audio (MFCC) e formare un classificatore casuale a foresta con il rapporto segnale/rumore quantizzato come etichetta di classe. – Kenders2000

1

Questo è in realtà un problema difficile da risolvere.

Supponendo di disporre di un solo microfono dati. I dati non elaborati che ottieni quando apri un file audio (segnale nel dominio del tempo) hanno alcune, ma non molte informazioni per questo tipo di elaborazione. Devi entrare nel dominio della frequenza usando FFT e guardare le statistiche dei bin di frequenza e usarli per costruire un classificatore usando SVM o Foreste casuali.

Con tutto il rispetto per @ Karoly-Horvath, non utilizzerei anche le registrazioni che sono state sottoposte a compressione, come ad esempio mp3. Gli algoritmi di compressione audio distorcono sempre le frequenze più alte, che a loro volta sono importanti per rilevare il vento. Se possibile, recupera i dati PCM grezzi da un microfono. È inoltre necessario assicurarsi che la registrazione sia campionata ad almeno 24kHz in modo da avere informazioni del segnale fino a 12kHz.

Infine, la forma del vento nel dominio della frequenza non è un semplice rumore bianco filtrato. La caratteristica è che di solito ha un'elevata energia nelle basse frequenze (un tipo di suono rombante) con suoni di sheering e flapping nelle alte frequenze. L'energia ad alta frequenza è abbastanza transitoria, quindi se la tua dimensione FFT è troppo grande, ti perderai questa importante caratteristica.

Se si dispone di 2 dati del microfono, questo diventa un po 'più semplice. Il vento, quando registrato, è un fenomeno locale. Certo, nelle registrazioni, puoi sentire il fruscio delle foglie o il suono dei rintocchi causati dal vento. Ma quello non è il rumore del vento e non dovrebbe essere filtrato.

L'attuale fastidioso rumore del vento che si sente in una registrazione è l'aria che colpisce la membrana del microfono. Questo effetto è un evento locale e può essere sfruttato se hai 2 microfoni. Può essere sfruttato perché l'evento è locale per ogni singolo microfono e non è correlato con l'altro microfono. Ovviamente è importante anche il fatto che i 2 microfoni siano messi in relazione tra loro. Devono essere ragionevolmente vicini l'uno all'altro (per esempio, entro 8 pollici).

Un dominio del tempo correlation può quindi essere utilizzato per determinare la presenza di rumore del vento. (Tutti gli altri suoni registrati sono correlati tra loro perché i microfoni sono abbastanza vicini tra loro, quindi un'alta correlazione significa assenza di vento, bassa correlazione significa vento). Se stai seguendo questo approccio, il tuo file audio di input non deve essere decompresso. Un algoritmo di compressione ragionevole non influirà su questo.

Spero che questa panoramica aiuti.