Pergunta

A FFT típico para olhares de áudio muito semelhante a este, com a maior parte da ação acontece no lado esquerdo

http://www.flight404.com/blog/images/fft.jpg

Ele multiplicou-lo por uma onda sinusoidal parcial para obtê-lo para o fundo, mas o artigo não é muito específico sobre esta parte dela. Ele também parece ser uma modificação "bom o suficiente" do conjunto de dados, em vez de um com base em alguma propriedade. Eu entendo que a audição humana é mais adequado para as frequências mais altas, baixo, portanto, mais música vai ter amplificado e atenuado agudos para que ambos som para nós como sendo de relativamente igual força.

A minha pergunta é o que precisa de modificação a ser feito para a FFT para compensar esta queda padrão?

for(i = 0; i < fft.length; i++){
     fft[i] = fft[i] * Math.log(i + 1); // does, eh, ok but the high
                                        // end is still not really "loud"
                                        // enough
}

EDIT ::

http://en.wikipedia.org/wiki/Equal-loudness_contour

Me deparei com este artigo, eu acho que pode ser a direção de cabeça, mas ainda pode haver alguma propriedade de uma FFT que precisa ser counteracte.

Foi útil?

Solução

Em primeiro lugar, você tem certeza que quer fazer isso? Faz sentido para compensar algumas coisas, como a resposta do microfone não ser plana, mas não percepção humana. As pessoas estão acostumadas a ouvir sons com o conteúdo espectral que os sons têm no mundo real, e não ao longo de curvas de intensidade iguais perceptivas. Se você tocar um som que você tenha modificado na maneira de sugerir que soaria estranho. Talvez algumas pessoas como a música ter melhorado baixas frequências, mas esta é uma questão de gosto, não psicofísica.

Ou talvez você está compensando por alguma outra razão, por exemplo, tendo em conta a sensibilidade pobres para frequências mais baixas pode melhorar um algoritmo de compressão. Não é a ideia?

Se você quer normalizar pelas curvas isofônicas, deve-se notar que a maioria das curvas e as equações estão em termos de nível de pressão sonora (SPL). SPL é o log do quadrado da amplitude da forma de onda, então quando você trabalhar com os FFTs, é provavelmente mais fácil de trabalhar com o seu quadrado (a espectros de potência). (Ou, é claro, você pode compensar de outras maneiras por, digamos, multiplicando por sqrt (log (i + 1)) em sua equação acima -. Assumindo que o log foi uma aproximação da curva de equal-loudness inversa)

Outras dicas

Eu acho que a contorno volume igual é exatamente na direção certa. No entanto, a sua forma depende do nível de pressão absoluta. Em outras palavras, a curva de sensibilidade de nossa audição muda com a pressão sonora.

Não há "normalização correta" se você não tem informações sobre os níveis absolutos. Se este é um problema depende do que você quer fazer com os dados.

O contorno sonoridade é padronizado em ISO 226, mas este documento não está disponível gratuitamente para download. Ele deve estar em um decente embora biblioteca da universidade. Aqui está outra fonte para loudness contornos

Assim que você está tentando elevar o nível das freqüências de ponta? Soa como um filtro passa alta com um trabalho poderio mínimo multiplicador, de modo que você não atenuam os sinais de baixa frequência demais. Pegue um bom livro sobre design de filtro, talvez monkey ao redor com este applet

Nos velhos tempos de primeiros samplers, isto é antes MOTU impulso pessoas :) não era FFT, mas simples (Fairlight ou Roland-lo primeiro eu acho) Normalização feito no sinal de domínio de tempo original ou resultante (se você estiver fazendo corte batida, reciclar-style); você não pode fazer isso? Ou só vão para a FFT depois de compensar para neutralizar para ele?

Parece que um procedimento de duas fases de outra forma, eu pessoalmente deixar FFT como é para a tarefa ..

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