[Acadêmicos] Projeto parte II: Filtragem de um sinal de áudio com Octave

by 23:48 0 comentários

             Se você chegou aqui e não passou pela fundamentação teórica dos assuntos que serão usados aqui, clique aqui.  


Metodologia e resultados

            O projeto consiste na retirada de interferências em sinais de áudio utilizando filtros digitais. Para a realização, foi usado um áudio em formato .wav, de nome  “darth_vader”. Vamos reduzir a interferência em “darth_vader.wav” com filtros FIR e IIR, para compará-los. Abaixo você pode reproduzir e baixar o áudio original com as interferências. Aqui vai ser explicado como filtrei de acordo com esse áudio, pode não condizer com a forma de filtragem do seu. Se houver dúvidas comente nesse post.  




Filtro FIR     

Esta parte trata do áudio “darth_vader.wav”. Ao reproduzir, pude ouvir uma pessoa falando e uma sirene nos primeiros segundos gerando ruído.
           Abri o Octave e criei um novo documento. Carreguei o áudio e plotei o gráfico do áudio em relação ao tempo com o código a seguir:
Percebi que nos primeiros 3 segundos há uma intensidade maior no gráfico e a partir do terceiro segundo suaviza mais, justamente quando há no áudio apenas fala humana. Decidi fazer a analise do espectro do sinal por partes. Já que existe no áudio uma parte em que há voz sem sirene, o cortei do segundo 3 ao 6 e plotei seu  espectro na frequência juntamente com o original.  Usei o seguinte escopo de código em outro arquivo para o recorte:
Obtive esse espectro:

Comparando este com o sinal original (não cortado) com partes ruidosas:

Fica clara a localização dos ruídos na faixa de aproximadamente 2700 Hz a 5300 Hz. Apesar de conter componentes da voz nessa faixa, ela será rejeitada, pois não são tão relevantes. Para essa filtragem eu usei a função fir1. Ela usa a janela de Hamming por padrão então só precisamos entrar com a ordem do filtro e a frequência ou vetor de frequências, dependendo de qual design deseje implementar.
A primeira tentativa foi de gerar um filtro passa baixa com frequência de corte de 2100 Hz e ordem 50. Gravei o áudio “darth_vader_FILTRADO_FIR_passabaixa.wav”. O resultado não me agradou, pois além de ter resquícios da sirene, o áudio estava com o som abafado e baixo. Notei que esse “abafamento” poderia ser caudado pelo componente significativo em torno da frequência 200 Hz. Apliquei um passa banda passando por parâmetro um vetor de duas frequências para atenuar o componente de baixa frequencia e o resultado foi melhor que o anterior, ainda que haja resquícios da sirene. Gravei com o nome de “darth_vader_FILTRADO_FIR_passabanda_final.wav”






O espectro do filtro FIR, do sinal original e filtrado:


Filtro IIR

 Para projetar o filtro IIR, estudei as aproximações disponíveis no Octave. Algumas das funções que as expressam são: butter, cheby1, cheby2, ellip. A ideia inicial era usar essas aproximações para chegar a um passa banda. Seria preciso apenas passar o vetor de frequências por parâmetro, como feito no filtro FIR.  Mas os filtros IIR introduzem distorções significantes de fase, sendo inaceitáveis em processamento digital (MIROSLAV, 2001). A implementação do passa faixa gera instabilidade numérica no Octave. Decidi implementar apenas o passa baixa Butterworth, com ordem 20 obtido empiricamente.  Utilizei a função butter para criar o filtro e a função filter para filtrar.



Percebe-se que o filtro IIR tem velocidade de transição muito maior que o filtro FIR. Lembrando que o IIR está com uma ordem menor que a metade da definida para o FIR. Veja o audio resultante abaixo:




Conclusão

            Por meio deste projeto, podemos melhorar a percepção das variações de frequência a nível de audição e espectro, detectando sinais ruidosos e os filtrando. Compreendemos por meios práticos a teoria das janelas do filtro FIR, e como conseguir um filtro IIR por meio de aproximações de filtros analógicos. Aprendemos a pesar vantagens e desvantagens para obedecer a requisitos de projetos. Algumas conclusões sobre isso são:
Filtros FIR podem ser projetados com resposta em fase linear. Fase linear é importante para aplicações onde a distorção de fase devido à resposta em fase não linear pode degradar o desempenho, como é o caso de processamento de voz e transmissão de dados.
Uma desvantagem dos filtros FIR, em comparação com os filtros IIR é o considerável aumento necessário na ordem do filtro para se alcançar uma resposta em freqüência especificada, desta forma necessitando mais espaço de armazenamento para os coeficientes, e maior velocidade de processamento devido ao aumento do número de multiplicações causado pela maior ordem do filtro.

Referências

ALEXANDER, C. K.; SADIKU, M. N. O. Fundamentos de circuitos elétricos [recurso eletrônico].Tradução: José Lucimar do Nascimento ; revisão técnica: Antônio Pertence Júnior. – 5. ed. – Dados eletrônicos. – Porto Alegre : AMGH, 2013.

DINIZ, P.; SILVA, E. da; NETTO, S. Processamento Digital de Sinais – Projeto e Análise de Sistemas. [S.l.]: Bookman, 2004.

HAMMING, R. Digital Filters. 3rd. ed. Mineola, NY: Dover Publications, 1997

HAYKIN, S. BARRY, V.V. Sinais e Sistemas. Porto Alegre: Bookman, 2001

MIROSLAV, D. L.,DEJAN, V. T.; EVANS, B. L. Filter Design for Signal Processing Using MATLAB and Mathematica. 2001

OLIVEIRA, E. E. C. et al.; Projeto e Análise do Desempenho dos Filtros IRR por Meio da Técnica de Invariância Por Impulso e Transformação Bilinear. Universidade Federal do Rio Grande do Norte UFRN.

OPPENHEIM, A.; SCHAFER, R. Discrete-Time Signal Processing. [S.l.]: Prentice-Hall, 1989.

PELLUZI, D. GNU Octave: Alternativa ao uso do MATLAB. 2005. Disponível em: <https://www.vivaolinux.com.br/artigo/GNU-Octave-Alternativa-ao-uso-do-MATLAB> Acesso em: 23 mai 2016.




.

Autora

Apaixonada por muitas coisas. Uma delas é fazer exatamente o que eu estou fazendo com a minha vida: nada.

0 comentários:

Postar um comentário