Definição de números por orelha

Neste artigo, falarei sobre um programa de processamento simples que "escuta" o microfone e determina os números discados no telefone no modo de tom.

Prefácio


A universidade permaneceu no passado há cerca de dez anos, mas durante todo esse tempo não deixei sentimentos nostálgicos e ansiava por ciência. Há um sentimento de que não terminei algo ou corremos algo muito rápido. Felizmente, as plataformas modernas fazem você se sentir um estudante a vida toda.

O laboratório nº 3 do curso “Fundamentos do processamento de sinais digitais” LETI na plataforma openu me levou a escrever este artigo.

Princípio de funcionamento


Se você pressionar os botões do telefone (ou aqui ), poderá ouvir que cada caractere tem sua própria frequência, ou melhor, até duas, e essa combinação codifica exclusivamente um caractere.
Nossa tarefa é extrair as duas frequências mais fortes do sinal ruidoso e verificar se elas codificam algum caractere de acordo com a tabela:
1209 Hz1336 Hz1477 Hz1633 Hz
697 Hz123Um
770 Hz456B
852 Hz789C
941 Hz*0 0#D

Eu usei o processamento, como possui todas as primitivas para trabalhar com microfone e transformada de Fourier.

O algoritmo é o seguinte:

  • imagine o sinal como um espectro, fft.analyze retornará um array float [] para nós
  • encontre o número de referência n 1 correspondente à amplitude máxima
  • Zerul ele e tudo em um determinado bairro (escolhido sabiamente), para não pegar duas frequências próximas
  • encontramos o 2º número de referência n 2 correspondente ao máximo das amplitudes restantes
  • pelos números n 1 e n 2 , encontramos as frequências correspondentes de acordo com a fórmula:

    fn=fdn/N

    onde f n - frequência de amostragem: 44100 Hz, N - número de amostras (potência de duas)
  • determinamos quais frequências da tabela correspondem às encontradas (com alguma tolerância de ± 35 Hz) e encontramos o símbolo desejado

O que aconteceu


Você pode criar e executar o programa na forma de jar independente da fonte , pode usar o telefone ou esta página para gerar sons.



O próximo passo é implementar o mesmo no Arduino.

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


All Articles