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.
0 comentários:
Postar um comentário