Tout d'abord, je m'excuse parce que je suis un développeur de logiciels et cela fait très longtemps que je n'ai pas plongé dans les mathématiques pures, donc ma question peut sembler stupide. J'espère que non.
Le contexte est la reconnaissance du pitch en musique.
Si vous prenez une note de musique et y appliquez une transformée de Fourier, vous aurez une somme infinie d'amplitudes pour des fréquences données. Par exemple, si je joue une note dont la fondamentale est , sur n'importe quel instrument, après la transformée de Fourier, j'aurai des harmoniques à . Chaque fréquence aura une amplitude donnée qui définit le timbre de l'instrument (piano, voix, trompette, ... tous suivent ce loaw, mais vous aurez des amplitudes différentes pour chaque harmonique)
Maintenant , ce que je voudrais faire est d'un signal audio donné, trouver . Juste ça. C'est plus compliqué qu'il n'y paraît car vous aurez toujours du bruit de fond et ainsi de suite ... De plus, n'est pas forcément la fréquence avec la plus grande amplitude!
Donc, mon idée pour trouver est d'appliquer une DFT (enfin une FFT pour la vitesse) et de trouver une fréquence , de sorte que soit maximal dans la sortie FFT.
Pensez-vous que ce soit possible? Pensez-vous que c'est possible en très peu de temps (disons <5 millisecondes)?
Réponses:
Ce que vous décrivez est très similaire à la méthode d'estimation de la hauteur du spectre des produits harmoniques, comme indiqué dans cet article CCRMA de Stanford .
Une FFT ne vous donne pas une "somme infinie d'amplitudes", mais un nombre fini de cases de résultat en fonction de la longueur de la FFT.
5 mS n'est qu'une période d'une note de 200 Hz et seulement une fraction d'une période inférieure à 200 Hz. La reconnaissance de la hauteur musicale nécessite généralement d'entendre ou d'analyser un nombre multiple de périodes de la périodicité d'un son lancé. Et beaucoup de musique utilise des notes inférieures à G2. Si vous avez une longueur de données suffisante, le calcul d'une estimation de hauteur à partir de ces données peut prendre seulement de l'ordre des microsecondes plutôt que des millisecondes sur un PC ou un appareil mobile moderne.
la source