Hola, necesito reducir la frecuencia de muestreo de un archivo de audio wav de 44.1kHz a 8kHz. Tengo que hacer todo el trabajo manualmente con una matriz de bytes ... es para fines académicos.Java - archivo de audio wav de baja resolución
Actualmente estoy usando 2 clases, Sumidero y Fuente, para abrir y empujar matrices de bytes. Todo va bien hasta que llego a la parte en la que necesito reducir la resolución del fragmento de datos mediante una interpolación lineal.
Dado que estoy disminuyendo la resolución de 44100 a 8000 Hz, ¿cómo puedo interpolar una matriz de bytes que contiene algo así como 128 000 000 bytes? En este momento estoy sacando 5, 6 o 7 bytes dependiendo de i% 2 == 0, i% 2 == 1 e i% 80 == 0 y envío el promedio de estos 5, 6 o 7 bytes al nuevo archivo .
El resultado es de hecho un archivo de audio más pequeño que el original pero no se puede reproducir en Windows Media Player (dice que hay un error al leer el archivo) y hay mucho ruido aunque puedo escuchar el camino correcto el ruido.
Por lo tanto, para resumir, necesito ayuda con respecto a la parte de interpolación lineal. Gracias por adelantado.
Será más fácil para nosotros ayudarlo a encontrar sus errores si publica el código que está utilizando ahora. –