Skip to content

Processamento de sinais para remoção de ruídos usando python

License

Notifications You must be signed in to change notification settings

gsfreitas/processamento_sinais

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

Processamento-de-Sinais

Sobre o projeto

O projeto de processamento de sinais consiste na aplicação de filtros para determinar o número digitado em um smartphone através do áudio de cada botão. Além de determinar o número que foi digitado, um dos objetivos era eliminar os ruídos do áudio para captar somente as frequências de interesse.

Sinal original

O sinal original foi lido e armazenado em uma variável para facilitar toda a análise posteriormente. Na imagem acima é perceptível a dificuldade para diferenciar as frequências de interesse e do ruído presente no sinal.

TF Magnitude

Pela DTMF, a frequência máxima dos dígitos é 1500 Hz. Considerando o teorema de amostragem, a frequência mínima necessária para o registro sonoro é de 3000 Hz. No cálculo realizado para a amostra de áudio dada, o valor mínimo possível foi de 3150 Hz. Antes da realização da etapa de downsampling com o dado obtido, foi utilizado um filtro IIR anti-aliasing para remover frequências maiores que 1500 Hz e o resultado foi apresentado na Figura onde é apresentada a Magnitude, em conjunto com o gráfico do filtro em Dbs. Os filtros anti-aliasing foram usados para limpar frequências indesejadas de ruídos, sobrando apenas os dados que precisam ser analisados. O downsampling na prática deve ser utilizado para corrigir imperfeições do sinal, como o efeito “escada” na qual sua resolução não está boa o suficiente, ao analisar o gráfico com o espectro no domínio da frequência do sinal transformado, é notório que em torno dos picos há outos menores, o que atrapalha a análise, já que nem sempre os filtros anti-aliasing são totalmente eficientes na remoção, logo, é permitido o uso deste processo.

Filtro IIR Sinal filtrado

O gráfico da TF, o áudio ainda apresenta frequências de até aproximadamente 8000 Hz. Porém, as frequências dos dígitos encontram-se entre 500Hz e 1500Hz. Foi utilizado um filtro FIR com janela Kaiser (beta igual a 12) e de um segundo filtro FIR com janela Hamming para remover as frequências menores que 600 e entre 1000 e 1100 Hz. Os filtros escolhidos foram evidenciados a seguir, assim como o sinal filtrado.

Janelamento II Janelamento

O filtro Chebyshev foi utilizado por possuir melhor declive na banda de transição e eficiência na linearização da fase. Já a janela Kaiser foi usada por conseguir especificar os parâmetros do filtro e por ser ajustável o seu formato de acordo com o desvio desejado. Enquanto que a janela Hamming destacou-se por melhor detectar as frequências, reduzindo as oscilações na resposta em frequência. A Transformada de Fourier, a magnitude e o espectro de enrgia foram novamente calculados e mostrados abaixo.

TF II Magnitude II Energia

Após todo o processo de filtragem mostrado anteriormente pudemos analisar e encontrar oito picos em instantes distintos. Esses picos mostram exatamente quais foram as teclas discadas, podendo relacionar diretamente ao tempo, onde há oito picos. A janela do tipo Hanning então foi aplicada no sinal filtrado para evitar cortes abruptos e fazer com que haja uma transição mais suave entre as frequências de rejeição e as bandas de passagem. Em seguida, para cada sinal amostrado foi feita a transformada de Fourier para analisá-los no domínio da frequência.

FreqFinal

Pela magnitude percebe-se então que o número digitado é zero. O processo se repete para todos os outros dígitos até formar o número discado em si.

Bibliotecas

  • numpy
  • scipy
  • matplotlib

Autor

Gabriel Freitas

www.linkedin.com/in/gabrielsfreitas

About

Processamento de sinais para remoção de ruídos usando python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages