Ho letto molte domande su SO, e francamente, ognuna di esse non sta descrivendo alcun modo particolare per farlo. Alcuni dicono "fai FFT" e alcuni dicono "zero crossing" ecc. Ma sono arrivato solo a capire che l'ingresso audio digitale è costituito da una serie di ampiezze per una particolare frequenza e bene .. Non so davvero molto oltre a ciò.
Ora conosco il teorema di Nyquist, la frequenza, l'ampiezza, le serie di Fourier ecc., E questo è di 2-3 anni fa quando l'ho fatto nel mio programma universitario in qualche semestre. Ma allora non ci era stato insegnato molto l'uso reale di Fourier nel mondo reale, e non mi preoccupavo di approfondire l'argomento oltre l'apprendimento quanto bastava per passare l'argomento. Ma ora dovrò usare tutta quella roba.
Ecco un'istantanea dei suoni che sto cercando di rilevare:
Chiaramente i suoni hanno grafici unici. Voglio solo capire come estrarre le loro particolari caratteristiche uniche per le loro uniche linee appuntite nel grafico. Mi piace quale ampiezza, frequenza, ecc. E per quanto tempo - anche se questo è banale immagino.
Voglio un semplice elenco di istruzioni passo per passo, non vago: posso cercare su Google la terminologia che non capirò.
Come forse questo? -
Ottieni dati audio in ingresso
Tracciato spectogramma
Ottieni il grafico dello spectogramma per il suono che desideri rilevare in un ambiente silenzioso
Studia quel grafico - disegna le caratteristiche uniche di quel suono
Esegui un qualche tipo di funzione in grado di rilevare quelle particolari caratteristiche nel feed audio dal vivo, usando le caratteristiche del suono trovato in (4)
Se viene trovata una corrispondenza, bene - il lavoro è fatto.
Lucida l'algoritmo per eliminare i falsi negativi.
Stavo pensando di far registrare all'utente il suono che vogliono memorizzare come gesto in un ambiente tranquillo. E l'utente avrebbe emesso il suono solo tra il riempimento del tempo di silenzio ; 3 secondi all'inizio e alla fine della registrazione.
Ad esempio, durante i primi 3 secondi, il mio sistema stabilirà che l'ingresso corrente è il normale suono di sottofondo silenzioso. E poi un improvviso cambiamento nel grafico sarebbe l'inizio dell'audio in ingresso. E quando questo si interrompe, la registrazione andrebbe avanti per altri 3 secondi, trascinando il tempo di quiete . Questo sarebbe fatto manualmente dall'utente. Quindi memorizzerebbe automaticamente le caratteristiche della sola parte durante la quale è durato l'improvviso cambiamento nel grafico, a metà tra i tempi di riempimento.
E quindi le caratteristiche di quella parte verrebbero salvate come dati di gesto di quel suono, che sarebbero stati usati per rilevare quel particolare suono nel feed audio dal vivo in seguito.
Il problema è che sto pensando tutto questo in un inglese semplice. Ho bisogno di pensare in matematica e fisica, per essere in grado di implementarlo in modo efficiente nel mio codice. Sono così dannatamente all'oscuro di cosa scrivere e dove scriverlo nel mio codice - anche con così tante librerie e domande su SO a mia disposizione.
E scusa se è stato lungo.