J'ai lu beaucoup de questions sur SO, et franchement, chacune d'elles ne décrit aucune façon particulière de s'y prendre. Certains disent "faire FFT" et certains disent "passage à zéro" etc. Mais je ne suis allé jusqu'à comprendre que l'entrée audio numérique consiste en un tableau d'amplitudes pour une fréquence particulière et bien .. Je ne sais pas vraiment au-delà.
Maintenant, je connais le théorème de Nyquist, la fréquence, l'amplitude, la série de Fourier, etc., et cela remonte à 2-3 ans quand je l'ai fait dans mon programme universitaire au cours d'un semestre. Mais à l'époque, on ne nous avait vraiment pas beaucoup appris sur l'utilisation réelle de Fourier, et je n'ai pas pris la peine de creuser davantage sur le sujet au-delà de l'apprentissage juste assez pour passer le sujet. Mais maintenant, je vais devoir utiliser tout ça.
Voici un instantané des sons que j'essaie de détecter:
Clairement, les sons ont des graphiques uniques. Je veux juste comprendre comment extraire leurs caractéristiques uniques particulières pour leurs lignes épineuses uniques dans le graphique. Comme quelle amplitude, fréquence, etc. Et pendant combien de temps - bien que ce soit trivial, je suppose.
Je veux une liste d'instructions simple et pas à pas - je peux rechercher sur Google la terminologie que je ne comprendrai pas.
Comme peut-être ça? -
Obtenez les données audio d'entrée
Spectogramme de tracé
Obtenez un graphique de spectogramme pour le son que vous souhaitez détecter dans un environnement silencieux
Étudiez ce graphique - dessinez des caractéristiques uniques de ce son
Créez une sorte de fonction qui peut détecter ces caractéristiques particulières dans le flux audio en direct, en utilisant les caractéristiques du son de (4)
Si une correspondance est trouvée, eh bien - le travail est fait.
Polissez l'algorithme pour éliminer les faux négatifs.
Je pensais faire en sorte que l'utilisateur enregistre le son qu'il veut stocker comme un geste dans un environnement calme. Et l'utilisateur ne ferait le son qu'entre le rembourrage du temps calme ; 3 secondes au début et à la fin de l'enregistrement.
Disons que pendant les 3 premières secondes, mon système établirait que l'entrée actuelle est le bruit de fond calme normal. Et puis un changement soudain dans le graphique serait le début de l'entrée sonore. Et lorsque cela s'arrête, l'enregistrement continue pendant encore 3 secondes, le rembourrage du temps silencieux de fin . Cela serait fait manuellement par l'utilisateur. Il stockerait alors automatiquement les caractéristiques de la seule partie pendant laquelle le changement soudain du graphique a duré - quelque part entre les temps de remplissage.
Et ainsi, les caractéristiques de cette partie seraient enregistrées en tant que données gestuelles de ce son, qui seraient utilisées pour détecter ce son particulier dans le flux audio en direct plus tard.
Le problème est que je pense tout cela en anglais simple. J'ai besoin de penser en mathématiques et en physique, pour pouvoir l'implémenter efficacement dans mon code. Je suis tellement sacrément ignorant quoi écrire et où l'écrire dans mon code - même avec autant de bibliothèques et de questions sur SO à ma disposition.
Et désolé si cela a été long.