Pergunta

No meu aplicativo, estou usando o AvaudiorCorder para detectar a entrada do microfone. No entanto, preciso criar um filtro passa-alto para registrar apenas sons mais altos. Eu olhei para a FFT, mas não consigo descobrir como implementá -lo. Então, agora estou procurando um fudge com um FFT com um filtro passa-alto.

Qualquer ajuda seria muito apreciada! Obrigado!

Foi útil?

Solução

Dê uma olhada em Artigo da Wikipedia sobre filtros passa-alto, especialmente o Seção sobre implementação algorítmica de um.

Para os preguiçosos, aqui está a implementação do pseudocódigo:

// Return RC high-pass filter output samples, given input samples,
// time interval dt, and time constant RC
function highpass(real[0..n] x, real dt, real RC)
    var real[0..n] y
    var real α := RC / (RC + dt)
    y[0] := x[0]
    for i from 1 to n
        y[i] := α * y[i-1] + α * (x[i] - x[i-1])
    return y

Outras dicas

Usar um FFT seria uma solução de marreta neste caso. Um filtro FIR ou IIR simples deve ser suficiente, mas você precisa decidir sobre os parâmetros de design para o filtro primeiro, ou seja, frequência de corte (ponto -3 dB), ondulação da banda de passagem, ganho de banda de parada e se você se preocupa com resposta de fase ou não.

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