En este artículo hablaré sobre un programa de
procesamiento simple que "escucha" al micrófono y determina los números marcados en el teléfono en modo de tono.
Prólogo
La universidad permaneció en el pasado hace unos diez años, pero durante todo este tiempo no he dejado sentimientos de nostalgia y anhelo por la ciencia. Existe la sensación de que no terminé algo, o que ejecutamos algo demasiado rápido. Afortunadamente, las plataformas modernas te hacen sentir como un estudiante toda tu vida.
El Laboratorio No. 3 del curso "Fundamentos del procesamiento de señales digitales" LETI en la plataforma
openedu me impulsó a escribir este artículo.
Principio de funcionamiento
Si presiona los botones del teléfono (o
aquí ), puede escuchar que cada personaje tiene su propia frecuencia, o más bien incluso dos, y esta combinación codifica un personaje de manera única.
Nuestra tarea es extraer las dos frecuencias más fuertes de la señal ruidosa y verificar si codifican algún carácter de acuerdo con la tabla:
| 1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz |
---|
697 Hz | 1 | 2 | 3 | Un |
---|
770 Hz | 4 4 | 5 5 | 6 6 | B |
---|
852 Hz | 7 7 | 8 | 9 9 | C |
---|
941 Hz | * * | 0 0 | # # | D |
---|
Solía procesar, como Tiene todas las primitivas para trabajar con un micrófono y transformada de Fourier.
El algoritmo es el siguiente:
- imagine la señal como un espectro, fft.analyze nos devolverá una matriz float []
- encuentre el número de referencia n 1 correspondiente a la amplitud máxima
- Zerul él y todo en cierto vecindario (elegido sabiamente), para no atrapar 2 frecuencias cercanas
- encontramos el segundo número de referencia n 2 correspondiente al máximo de las amplitudes restantes
- por los números n 1 yn 2 encontramos las frecuencias correspondientes de acuerdo con la fórmula:
donde f n - frecuencia de muestreo: 44100 Hz, N - número de muestras (potencia de dos)
- determinamos qué frecuencias de la tabla corresponden a las encontradas (con cierta tolerancia de ± 35 Hz) y encontramos el símbolo deseado
Que paso
Puede compilar y ejecutar el programa en forma de jarra independiente desde la
fuente , puede usar el teléfono o esta
página para generar sonidos.

El siguiente paso quiero implementar lo mismo en Arduino.