Gostaria de saber como remover o ruído ambiental de uma gravação de fala.
Eu fiz algumas pesquisas e notei que a maioria dos métodos propostos usa a rápida transformação de Fourier. Mas por que você não pode usar um filtro eletrônico clássico para remover as frequências de ruído? Por que se preocupar em fazer uma FFT?
— Jazis
Porque fft dá uma saída de melhor qualidade ??
Compare o preço do sistema de um 5GS / s DSP com a de um grupo de indutors e bonés ...
Talvez você possa fazer uma filtragem mais complexa com um fft. "filtros eletrônicos clássicos" simplesmente removem todas as frequências em um determinado intervalo. Além disso, aqui está o seu crachá de estudante, um presente meu para você.
— Andrew Pikul 23/10
Tenho 2 problemas com sua pergunta: (1) O que você quer dizer com "filtro eletrônico clássico"? (2) O fato de algo ser feito de uma maneira (FFT) NÃO significa que não pode ser feito de outra maneira (filtro); pode haver apenas algumas desvantagens para fazê-lo de outra maneira. Você supõe, no entanto, que não é possível fazer isso com o filtro eletrônico clássico (o que você quer dizer com isso), o que provavelmente está errado.
Qual é o formato da sua gravação de voz (analógica versus digital)? A latência é um problema (ao vivo vs. após o fato)? Quanto tempo dura a gravação (uma música versus dias de gravação)?
Bem, ele é armazenado digitalmente agora, certo? Então, você planeja colocar o microfone ao lado do alto-falante após um filtro analógico para regravá-lo?
Chega de brincar, vou levar a sério.
Para fazer um filtro atenuar mais em uma faixa menor de frequências, também conhecida como tornar a curva de resposta em frequência mais vertical, basta aumentar a ordem do filtro.
Isso é algo que é razoavelmente fácil de fazer no Matlab. Também é algo possível de fazer pós-processamento. Também se trata de repetibilidade. Se você aplicar o filtro em um dia ensolarado hoje, espera que ele funcione de maneira idêntica a amanhã, quando estiver chovendo. Você espera que funcione exatamente da mesma forma, certo?
Nos circuitos analógicos, você tem todos esses "resistores de 5%", "capacitor de 1%" e todas as outras coisas. Portanto, se você quiser fazer algo exato , definitivamente precisará aparar o circuito posteriormente para que ele corresponda perfeitamente ao filtro desejado. Se você deseja aumentar a ordem do filtro ... então, infelizmente ... isso tornará o filtro muito maior fisicamente. Em vez de assumir o tamanho de um cartão de crédito, ele terá o tamanho de, eu não sei, depende da ordem do filtro e do que você está bem.
Com relação à repetibilidade, fazer algo hoje .. quente .. amanhã .. mais frio ... as resistências mudarão um pouco, a resposta de frequência mudará, alguns Hz lá, alguns lá, mais componentes você terá em seus circuitos , é mais provável que seus componentes alterem seus valores. E então você tem umidade, oxidante ...
E aqui está a frase que eu deveria ter dito primeiro, você não pode pós-processá-la, a menos que tenha fitas cassete. Não tenho 100% de certeza sobre o meio musical analógico que está sendo usado para gravar / excluir facilmente. Discos LP seria um pesadelo ...
E não vamos esquecer o preço. Um é o software, se você mesmo o escreve, é essencialmente de graça, o outro exige componentes, partes físicas.
Mas não pense que os filtros analógicos são ruins, eles têm seus usos, como remover harmônicos desagradáveis ​​em grandes motores DC ou criar motores de passo ultra silenciosos para impressoras 3D, suavizando a corrente. E toneladas de outros usos. - Além disso, se você o resolver com um filtro analógico, ninguém pensaria que seria uma solução ruim.
Acredito que estou respondendo indiretamente por que a FFT é a melhor maneira de fazer isso, pós-processamento. A linha inferior é que é muito mais barato fazer. Você também pode aplicar um filtro de entalhe se souber em que frequência o ruído está. Ou um filtro mais amplo, também conhecido como bandstop.
E a última coisa que quero acrescentar ... como essa resposta é tão longa, me desculpe. Mas se você usa um filtro analógico e ... mexe nos seus cálculos, pensa que está tudo bem e elegante e o usa em algum evento sério, como entrevistar o rei da Suécia (Knugen). E você estragou o tamanho de um capacitor, em vez de filtrar o ruído de 16kHz, está filtrando o "ruído" de 4kHz. Se você lidar com isso digitalmente, é apenas uma questão de alterar algumas variáveis, não é necessário dessoldar -> soldar outro componente. Também a entrevista está arruinada.
Hans Majonnäs Honung Carl XVI Gustaf
@pipe Tackar, det behövdes. (Obrigado de, eu precisava disso.)
Pergunta de acompanhamento (porque esta resposta depende muito de uma definição literal de analógico). Por que escolher a FFT para filtrar o ruído em vez dos filtros polinomiais clássicos?
@lebetman, não espere que eu responda a isso.
Essa foi uma resposta bastante sólida! Obrigado mano, e obrigado a todos que responderam, eu não estava esperando tanta ajuda! Eu certamente farei mais perguntas neste fórum. Mais uma vez obrigado!
Mas por que você não pode usar um filtro eletrônico clássico para remover as frequências de ruído?
Quem disse que você não pode? É assim que isso foi feito nos dias anteriores ao processamento do sinal digital. O problema é que o ruído de filtragem é sempre um compromisso entre manter intacto o sinal desejado (fala, música) e diminuir o ruído.
Para fitas cassete e outros sistemas de gravação analógica como DNL e Dolby, foram utilizados filtros que somente quando o sinal é fraco, significando que o ruído é mais audível. Então, quando o sinal é mais forte, o filtro desaparece. Veja: Artigo da Wikipedia sobre Redução de ruído
A fala pode ser limitada a uma banda de frequência estreita, como 300 Hz a 3 kHz, enquanto ainda é perfeitamente compreensível. Você poderia criar um filtro analógico simples para essa banda, mas isso limitaria a quantidade de ruído suprimida. Para filtrar com mais eficiência as frequências fora desta banda, seria necessário um filtro analógico complexo. Esses filtros são difíceis de projetar, construir e fabricar.
É aqui que entra o processamento do sinal digital. No domínio digital, é muito mais fácil implementar filtros complexos com muitos pólos e zeros. Além disso, como a localização (no domínio da frequência) desses polos e zeros está vinculada ao relógio do DSP (Processador de sinal digital), que é um relógio preciso (cristal), o filtro será muito mais preciso em comparação com uma implementação analógica .
+1 por mencionar o compromisso entre manter os sinais desejados e remover os indesejados. O problema é que a fala e o ruído ocupam as mesmas frequências; portanto, um filtro FFT pode remover o ruído "de linha de base", ou seja, depois de analisar a amplitude do ruído em cada frequência sem fala , que pode ser removida onde houver fala. É assim que os filtros de ruído FFT no Audacity etc etc etc funcionam.
Não sei ao certo o que torna os filtros analógicos especialmente difíceis de projetar e construir. Tudo o que você basicamente precisa é de um ou dois opamps e alguns resistores e capacitores. E como os opamps geralmente vêm em pacotes duplos, você precisa de apenas um chip. Normalmente, eu usaria o filtro analógico para fazer a filtragem passa-baixo para garantir que haja pouco sinal de alta frequência no sinal. Você não pode se livrar disso com a FFT posteriormente. Por outro lado, não há problema em fazer o filtro passa-banda FFT quando você tem uma "gravação" limpa para processar.
@ Barleyman não sabe ao certo o que torna os filtros analógicos especialmente difíceis de projetar e construir. Eu estava me referindo a filtros de alta ordem, como a 4ª ordem e superior. Eu concordo que alguns opamps. resistores e capacitores podem fazer quase qualquer filtro de pedidos, mas você já tentou projetar um? Eu tenho, ok, em um simulador, mas você já encontra capacitores padrão não sendo precisos o suficiente. Em pedidos mais altos, o valor exato dos componentes se torna cada vez mais importante.
Além disso, o alias não é mais um problema, pois agora temos ADCs e DACs sigma-delta com frequências de amostragem muito altas, de modo que basta um RC simples.
— Bimpelrekkie 24/10
@Bimpelrekkie Eu projetei vários, nada disso hoje em dia. No passado, você usava um livro com algumas opções de parâmetros pré-calculadas com as quais passaria algum tempo mexendo para obter alguns valores razoáveis ​​dos componentes. A precisão não é um grande problema se você não está tentando ser muito seletivo. O RC realmente não faz o trabalho se você estiver tentando fazer, por exemplo, gravação de áudio. Com -20dB / década, você teria que colocar o filtro em 2,2kHz para obter algum tipo de filtragem na frequência Nyquist. O Cherbychew de 3ª ordem faria melhor a 12kHz fc. 5ª ordem iria levá-lo a -46dB que é "bom o suficiente"
Bem, o primeiro passo para entender por que precisamos da FFT é entender como a filtragem digital funciona.
Então, basicamente, você tem uma estrutura, como um registro de deslocamento, com vários elementos de memória, uma entrada e uma saída. Um valor de amostra entra na entrada, é deslocado pelo registrador e passa para a saída. Em cada estágio do registro, ele é multiplicado por um número chamado coeficiente de filtro.
Essa idéia funciona bem quando você tem um registro rápido, fazendo multiplicações rápidas, e as amostras aparecem lentamente uma a uma.
Na vida real, em vez disso, você provavelmente obterá um quadro que consiste em várias amostras. Quando você deseja filtrar isso, convolve as amostras com os coeficientes do filtro. É o mesmo que fazer a abordagem anterior, mas parece um pouco diferente.
Agora vem a parte FFT. Acontece que a convolução cresce em complexidade numérica muito rapidamente com o número de amostras. Por outro lado, a FFT é numericamente complicada no início, mas o número de operações necessárias cresce muito mais lentamente com o aumento dos coeficientes do filtro em comparação com a convolução.
O que significa acima é que, acima de um certo número de amostras, será muito mais rápido converter um sinal no domínio da frequência usando uma FFT, filtrar o sinal no domínio da frequência e depois convertê-lo novamente usando o IFFT. O truque que estamos usando é uma das propriedades da convolução, a saber, que a convolução no domínio do tempo pode, em algumas circunstâncias, ser modelada como multiplicação no domínio da frequência.
Então, para resumir, se o número de coeficientes de filtro que você possui for suficientemente grande, a FFT será mais rápida. O "grande" pode ser tão pequeno quanto cem.
Eu acho que por "filtro eletrônico clássico" ele quis dizer um filtro analógico, não convolução.
@ jalalipop Poderia ser, mas eu queria explicitamente explicar a parte da FFT. Na época, já tínhamos uma resposta explicando por que gostaríamos de ter filtros digitais em vez de analógicos.
Os métodos baseados em FFT (você ainda precisará trabalhar com modificações de janelas e sobreposição-adição ou sobreposição-deslocamento) têm como principal vantagem que o design esteja solidamente no domínio da frequência, e um filtro Wiener ou subtração espectral ou várias outros sistemas baseados em estatísticas de sinal e um modelo realmente funcionam fundamentalmente no domínio da frequência.
Por outro lado, o cancelamento de eco e várias variantes não dependem de um modelo de ruído, mas de uma gravação imperfeita altamente correlacionada com o ruído. Isso é feito usando filtros variados (geralmente FIR) para subtrair uma estimativa de ruído do sinal e atualizar os filtros para manter a correlação do sinal restante com o canal de ruído mínima. Para essas técnicas, a FFT não é tão útil (quando atrasos consideráveis ​​no sinal resultante e nas atualizações do filtro são permitidos, eles podem ser empregados como componente em uma FIR da caixa preta com atraso por razões de desempenho, mas não são realmente úteis para seus capacidade de representação no domínio da frequência).
solidamente no domínio da frequência . Não haveria nenhuma vantagem em particular porque, se não fosse, porque os tons e as notas têm as propriedades de tom de solo e de tom.
Os filtros analógicos são fáceis de projetar, mas a limitação é que você precisa continuar adicionando elementos de filtro físicos para obter a filtragem de parada de banda de determinadas frequências. E você precisa ajustar os valores dos componentes se quiser mover os entalhes. Um único opamp pode fazer um entalhe de parada de banda; portanto, você precisa adicionar outro amplificador para cada entalhe desejado. Para um entalhe mais seletivo, você precisará de dois amplificadores por entalhe.
Em termos práticos, você provavelmente seria melhor atendido por um filtro passa-baixo de 3ª ordem que você pode fazer com um único opamp ou talvez um filtro passa-baixo de quinta ordem que requer dois. Use o (s) filtro (s) de passa-baixo para atenuar as frequências acima da frequência Nyquist (1/2 frequência de amostragem) com alguma margem e você terá uma amostra digital de alta qualidade para pós-processamento. Com uma gravação limpa como essa, você pode aplicar filtros FFT para criar filtros passa-alto, passa-banda e interrompe-banda, conforme necessário.
A filtragem invariante no tempo linear que um "filtro eletrônico clássico" faz é apenas uma multiplicação "burra" no domínio de Fourier. Mas as informações que você encontra em uma FFT informa mais detalhes do que apenas a resposta de um filtro, que é apenas uma combinação linear desses componentes. Usando essas informações, você pode orientar o processamento de dados e adaptá-lo aos dados. O ruído possui algumas características que os vocais nítidos e os tons musicais não possuem, por exemplo, a correlação entre sobretons não é a mesma para ruído e voz ou música.
Portanto, se pudermos identificar as correlações entre os componentes de frequência - ou seja, encontrar um "tom de fundo" de alguma forma, podemos orientar a filtragem e torná-la mais adaptada aos dados.