Définition des nombres à l'oreille

Dans cet article, je vais parler d'un programme de traitement simple qui «écoute» le microphone et détermine les numéros composés sur le téléphone en mode tonalité.

Préface


L'université est restée dans le passé il y a une dizaine d'années, mais pendant tout ce temps je n'ai pas laissé de sentiments nostalgiques et de nostalgie pour la science. On a le sentiment que je n'ai pas fini quelque chose, ou on a couru quelque chose trop vite. Heureusement, les plateformes modernes vous font sentir comme un étudiant toute votre vie.

Le laboratoire n ° 3 du cours «Fondamentaux du traitement numérique du signal» LETI sur la plate- forme openu m'a incité à écrire cet article.

Principe de fonctionnement


Si vous appuyez sur les boutons du téléphone (ou ici ), vous pouvez entendre que chaque personnage a sa propre fréquence, ou même deux, et cette combinaison code de manière unique un personnage.
Notre tâche consiste à extraire les deux fréquences les plus fortes du signal bruyant et à vérifier si elles codent un caractère conformément au tableau:
1209 Hz1336 Hz1477 Hz1633 Hz
697 Hz123Un
770 Hz456B
852 Hz789C
941 Hz*0#D

J'ai utilisé le traitement, comme il a toutes les primitives pour travailler avec un microphone et une transformée de Fourier.

L'algorithme est le suivant:

  • imaginez le signal comme un spectre, fft.analyze nous renverra un tableau float []
  • trouver le numéro de référence n 1 correspondant à l'amplitude maximale
  • Zerul lui et tout dans un certain quartier (choisi judicieusement), afin de ne pas attraper 2 fréquences proches
  • on retrouve le 2ème numéro de référence n 2 correspondant au maximum des amplitudes restantes
  • par les nombres n 1 et n 2 on trouve les fréquences correspondantes selon la formule:

    où f n - fréquence d'échantillonnage: 44100 Hz, N - nombre d'échantillons (puissance de deux)
  • nous déterminons quelles fréquences du tableau correspondent à celles trouvées (avec une certaine tolérance de ± 35 Hz) et trouvons le symbole souhaité

Qu'est-il arrivé?


Vous pouvez créer et exécuter le programme sous la forme d'un pot autonome à partir de la source , vous pouvez utiliser le téléphone ou cette page pour générer des sons.



La prochaine étape, je veux implémenter la même chose sur Arduino.

Source: https://habr.com/ru/post/fr429700/


All Articles