Sous-échantillonnage audio de 44,1 kHz à 16 kHz en Java


J'ai une application qui enregistre un échantillon de parole à partir du microphone de l'utilisateur et le télécharge sur un serveur qui fait ensuite des choses avec. Il semble que je doive enregistrer avec les paramètres suivants pour éviter un IllegalArgumentException:

Encoding encoding = AudioFormat.Encoding.PCM_SIGNED;
float sampleRate = 44100.0F;
int sampleSizeInBits = 16;
int channels = 2;
int frameSize = 4;
float frameRate = 44100.0F;
boolean bigEndian = false;

Mais j'ai besoin de l'enregistrer à 16khz, pas 44.1, (sampleRate et framerate à la fois, je suppose) et il doit être en mono (1 canal). Le PCM signé est également obligatoire, donc c'est bien. (Le serveur est TRÈS pointilleux et je ne peux pas y apporter de modifications.) Comment puis-je convertir cela en utilisant Java?

Je soumets le fichier audio via HttpClient en tant que Filebody à un servlet, je l'enregistre sur le serveur, puis je le traite.

Author: icedwater, 2012-07-11

1 answers

Voici quelques bons liens pour commencer par vous-même:

Alternativement (pour une utilisation rapide) cette bibliothèque GRATUITE voici ce que vous voulez:

 3
Author: David Kroukamp, 2012-07-10 21:24:09