Como gravar para wav do microfone após a aplicação rápida de Fourier transformar e um filtro passa-alta sobre ele?

StackOverflow https://stackoverflow.com/questions/1640638

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu recebo entrada do microfone e eu aplicar a FFT sobre ele. Depois disso, eu coloquei frequências superiores a 1 KHz com zero (o filtro passa-alto).

Eu quero saber como posso gravar a entrada do microfone depois que eu passei para FFT e depois da aplicação do filtro de alta freqüência.

Eu estou trabalhando com c #, o que eu preciso fazer? : P

Foi útil?

Solução

Depois de sua FFT e filtro, você precisa fazer um FFT inverso para obter a volta de dados para o domínio do tempo. Então você deseja adicionar esse conjunto de amostras para o seu arquivo .WAV.

Quanto produzir o arquivo em si vai, o formato é amplamente documentado (pesquisando por "formato .WAV" deve transformar-se mais resultados do que você tem qualquer utilidade para), e muito simples. É basicamente um cabeçalho simples (chamado de "pedaço"), que diz que é um arquivo .wav (ou na verdade um "RIFF" arquivo). Depois, há um pedaço "fmt" que informa sobre o formato das amostras (bits por amostra, as amostras por segundo, o número de canais, etc), então há uma parte de "dados" que contém as próprias amostras.

Uma vez que parece que você está indo para estar fazendo isso em tempo real, o meu conselho seria esquecer sobre fazer sua FFT, filtrar e iFFT. Um filtro FIR dará essencialmente os mesmos resultados, mas geralmente muito mais rápido. A idéia básica do filtro FIR é que em vez de converter seus dados para domínio da freqüência, filtrando-a, em seguida, converter de volta ao domínio do tempo, você converter seus coeficientes do filtro de domínio do tempo, e aplicá-los (bastante) diretamente aos seus dados de entrada. Este é o lugar onde DSPs ganhar seu sustento: quase todos eles têm instruções de multiplicação-acumulação, que pode implementar mais de um filtro FIR em uma instrução. Mesmo sem que, no entanto, a obtenção de um filtro FIR para executar em tempo real em um processador moderno não tomar qualquer truque real a menos que você está fazendo realmente amostragem rápida. Em qualquer caso, é muito mais fácil que a obtenção de uma FFT / filtro / iFFT para operar na mesma velocidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top