Background: sto lavorando ad un'applicazione per iPhone (citata in molti altri post ) che "ascolta" russare / respirare mentre si dorme e determina se ci sono segni di apnea notturna (come pre-schermo per "sleep lab" test). L'applicazione utilizza principalmente la "differenza spettrale" per rilevare russamenti / respiri e funziona abbastanza bene (circa 0,85-0-0,90 correlazione) quando testata contro le registrazioni del laboratorio del sonno (che in realtà sono piuttosto rumorose).
Problema: la maggior parte del rumore della "camera da letto" (ventole, ecc.) Posso filtrare attraverso diverse tecniche e spesso rilevare in modo affidabile la respirazione a livelli S / N dove l'orecchio umano non è in grado di rilevarlo. Il problema è il rumore della voce. Non è insolito avere una televisione o una radio in esecuzione in sottofondo (o semplicemente avere qualcuno che parla in lontananza), e il ritmo della voce è strettamente correlato alla respirazione / al russare. In effetti, ho eseguito una registrazione del compianto autore / narratore Bill Holm attraverso l'app ed era essenzialmente indistinguibile dal russare in ritmo, variabilità di livello e diverse altre misure. (Anche se posso dire che a quanto pare non aveva apnea notturna, almeno non da sveglio.)
Quindi questo è un po 'lungo (e probabilmente un tratto delle regole del forum), ma sto cercando alcune idee su come distinguere la voce. Non abbiamo bisogno di filtrare i russamenti in qualche modo (pensato che sarebbe bello), ma piuttosto abbiamo solo bisogno di un modo per rifiutare come suono "troppo rumoroso" che è eccessivamente inquinato dalla voce.
Qualche idea?
File pubblicati: ho inserito alcuni file su dropbox.com:
Il primo è un pezzo piuttosto casuale di musica rock (immagino), e il secondo è una registrazione del defunto discorso di Bill Holm. Entrambi (che uso come campioni di "rumore" differenziati dal russare) sono stati mescolati con il rumore per offuscare il segnale. (Questo rende il compito di identificarli significativamente più difficili.) Il terzo file è dieci minuti di una registrazione del tuo veramente dove il primo terzo sta respirando principalmente, il terzo medio è il respiro / russamento misto, e il terzo finale è russare abbastanza costante. (Ottieni un colpo di tosse per un bonus.)
Tutti e tre i file sono stati rinominati da ".wav" a "_wav.dat", poiché molti browser rendono incredibilmente difficile scaricare file wav. Basta rinominarli in ".wav" dopo il download.
Aggiornamento: ho pensato che l'entropia stesse "facendo il trucco" per me, ma si è rivelato principalmente una peculiarità dei casi di test che stavo usando, oltre a un algoritmo che non era troppo ben progettato. Nel caso generale l'entropia sta facendo molto poco per me.
Successivamente ho provato una tecnica in cui ho calcolato l'FFT (usando diverse funzioni della finestra) dell'entità del segnale generale (ho provato potenza, flusso spettrale e diverse altre misure) campionata circa 8 volte al secondo (prendendo le statistiche dal ciclo FFT principale che è ogni 1024/8000 secondi). Con 1024 campioni questo copre un intervallo di tempo di circa due minuti. Speravo di riuscire a vedere gli schemi in questo a causa del ritmo lento del russare / respirare contro la voce / la musica (e che potrebbe anche essere un modo migliore per affrontare il problema della " variabilità "), ma mentre ci sono suggerimenti di uno schema qua e là, non c'è nulla su cui possa davvero aggrapparmi.
( Ulteriori informazioni: in alcuni casi la FFT della grandezza del segnale produce un pattern molto distinto con un picco forte a circa 0,2 Hz e armoniche a gradini. Ma il pattern non è quasi così distinto per la maggior parte del tempo e la voce e la musica possono generare meno distinti versioni di un modello simile. Potrebbe esserci un modo per calcolare un valore di correlazione per una figura di merito, ma sembra che richiederebbe un adattamento della curva a circa un polinomio del 4 ° ordine, e farlo una volta al secondo in un telefono sembra poco pratico.)
Ho anche provato a fare lo stesso FFT di ampiezza media per le 5 singole "bande" in cui ho diviso lo spettro. Le bande sono 4000-2000, 2000-1000, 1000-500 e 500-0. Il modello per le prime 4 bande era generalmente simile al modello generale (sebbene non ci fosse una vera banda "spiccata" e spesso un segnale evanescente nelle bande di frequenza più alte), ma la banda 500-0 era generalmente casuale.
Bounty: Darò a Nathan la generosità, anche se non ha offerto nulla di nuovo, dato che il suo è stato il suggerimento più produttivo fino ad oggi. Ho ancora alcuni punti che sarei disposto a assegnare a qualcun altro, però, se avessero trovato delle buone idee.