Suponha que eu tenha um sinal de áudio amostrado em Hz e gostaria de criar um filtro passa-baixo que isola tudo abaixo de ~ Hz. No mundo digital, este é um filtro passa-baixo com a banda passante em . Além disso, a banda de transição também deve ser razoável. Criar um filtro FIR para isso pode ter muitos toques que, a longo prazo, afetam a precisão. Um filtro IIR também não é ideal porque o áudio sofre uma resposta de fase não linear nos filtros; portanto, a menos que o sinal seja filtrado, revertido e filtrado novamente, não é realmente uma opção.
Uma transformação de wavelet poderia ser melhor nisso do que a filtragem regular de uma só vez?
Respostas:
Se você está otimizando o tempo de engenharia e está em uma plataforma que suporta FFTs grandes (isto é, não ponto fixo), siga os conselhos do hotpaw2 e use convolução rápida . Ele terá um desempenho muito melhor do que uma implementação ingênua de FIR e deve ser relativamente fácil de implementar.
Por outro lado, se você tiver algum tempo para gastar com isso para obter a melhor implementação ou se estiver em uma plataforma de ponto fixo, use uma estrutura multirate down-filter-up-subtract. Mas é um pouco mais complicado fazer tudo certo.
Eu tenho acesso a implementações confiáveis e altamente otimizadas de ferramentas de filtragem rápida e de convolução rápida. A convolução rápida leva cerca de 3x mais tempo para obter um desempenho equivalente do sinal em comparação com a estrutura de múltiplas taxas. Além disso, isso é até em uma plataforma de ponto flutuante. A diferença aumentaria consideravelmente em um ponto fixo dsp.
Em termos gerais:
Conversão descendente:
Use 8 estágios de filtros de meia banda, dizimados por 2 para transformar seu sinal de 48kHz em um sinal de 187,5 Hz. O primeiro estágio dessa redução de escala pode ter uma banda de transição muito ampla, permitindo que a energia atinja o mesmo nome, desde que não atinja novamente o intervalo abaixo dos 60 Hz. À medida que as etapas progridem, o número de torneiras precisa aumentar, mas elas serão aplicadas a taxas de amostragem progressivamente mais baixas, de modo que o custo geral de cada etapa permanece pequeno.
Filtragem:
Execute sua filtragem rigorosa em torno de 60 Hz bw para manter a energia que você deseja subtrair. Há uma vantagem dupla em fazer sua filtragem rigorosa na taxa baixa:
Conversão ascendente:
Essencialmente, este é o inverso dos estágios de dizimação. Cada um dos oito estágios do interpolador dobra a taxa estimando a amostra que fica entre amostras de entrada consecutivas. A banda de transição aumenta à medida que a taxa de amostragem aumenta.
Subtrair:
Subtraia o sinal filtrado passa-baixa de taxa total do sinal original. Se você ajustou corretamente todos os atrasos de grupo, a estrutura geral será um filtro passa-alto com uma largura de banda de transição estreita.
fonte
Experimente um filtro de convolução de adição / gravação de sobreposição com a FFT / IFFT mais longa que se adapta às suas restrições de latência e desempenho computacional. Você pode projetar filtros FIR extremamente longos ao usar esse método com FFTs ainda mais longas.
Se você conseguir fazer a FFT de toda a música ou de todo o seu arquivo de sinal de áudio em uma FFT + IFFT muito longa (existem algoritmos FFT especiais para vetores longos que não cabem no dcache ou na RAM), você não precisará fazer nada sobreponha o processo de adicionar / salvar, e você pode obter uma banda de transição muito estreita.
fonte
Existem claramente duas opções: FIR e IIR. Como já foi dito, o FIR requer uma resposta de impulso MUITO longa (1000s de toques) e é caro em termos de memória, MIPS e latência com adição / economia de sobreposição, sendo a escolha mais eficiente. No entanto, a latência pode ser um problema real. Se você quiser usá-lo como passe alto para um subwoofer de home theater, a latência será tão alta que você perderá a sincronização labial com o vídeo.
O IIR é várias ordens de magnitude mais barato e, portanto, frequentemente usado. De fato, ele possui uma resposta de fase não plana, mas em muitos casos isso não é um problema ou pode ser contornado. Por exemplo, se você precisar de um filtro passa-alto para proteger os drivers em uma caixa de graves, a resposta da fase não é muito importante, pois a resposta geral da fase do sistema é dominada pelo driver, pelo gabinete e pela acústica na sala. O filtro desempenha apenas um papel menor aqui. Em muitos casos, você também precisa manter a fase "relativa" e não a absoluta. Digamos que você queira aplicar o passe alto no sinal A, mas não no sinal B, você pode simplesmente colocar um passe tudo correspondente no sinal B para que a fase relativa de A e B permaneça a mesma. A latência geral e o atraso do grupo dessa abordagem ainda são muito menores que o do método FIR.
fonte