Estou escrevendo um software para processamento de áudio fornecido como amostras de PCM de 16 bits. A primeira etapa do processamento envolve o cálculo da energia (ou variação total) em uma determinada faixa de frequência (acima de uma certa frequência de corte).
O que estou fazendo atualmente é subtrair a energia do sinal filtrado passa-baixo da energia do sinal original. Descobri que grande parte do processamento é dedicado à conversão de sampels inteiros em uma representação de ponto flutuante.
Então, minha pergunta é: existe uma técnica para filtrar as amostras inteiras sem convertê-las em ponto flutuante?
fonte
Em alguns processadores, converter um bloco grande de números inteiros (mas em cache) em flutuadores antes de processá-los pode ser mais rápido, devido à eliminação dos riscos do pipeline. Você pode comparar isso.
Se você usar aritmética de número inteiro escalado ou ponto fixo, a quantidade de precisão inteira adicionada necessária nos coeficientes e nos valores intermediários será aproximadamente proporcional à proporção entre a taxa de amostragem e a frequência de corte desejada. Pode ser necessário usar aritmética inteira de precisão de 24,32,48 bits ou mais em suas amostras de 16 bits para reduzir o nível de ruído numérico desejado. Alguns conjuntos de instruções do processador (ARM, MIPS, etc.) podem incluir aritmética de acumulação de 64 bits apenas para essa finalidade.
fonte