Je suis actuellement nouveau à ce sujet, alors s'il vous plaît gardez simple pour moi de comprendre.Comment obtenir la fréquence et la hauteur d'un fichier .wav pcm byte array en utilisant java?
J'ai un projet dans lequel je dois classer la voix comme bonne, mauvaise ou neutre. Mon plan est d'obtenir toutes les fréquences et la hauteur de l'ensemble de données d'échantillons et de les former en utilisant SVM.
Afin d'obtenir la hauteur et la fréquence de tous les fichiers .wav. J'ai fait le code jusqu'à trouver les données PCM à partir d'un fichier audio. Maintenant, comment dois-je appliquer ces données à l'algorithme de transformation de Fourier rapide pour obtenir des fréquences? Y at-il plus de choses à considérer avant d'appliquer le tableau d'octets à l'algorithme FFT?
Voici mon code pour le convertion de fichier wav à un tableau pcm octets:
int totalFramesRead = 0;
File fileIn = new File(inputFile);
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileIn);
int bytesPerFrame = audioInputStream.getFormat().getFrameSize();
if (bytesPerFrame == AudioSystem.NOT_SPECIFIED) {
// some audio formats may have unspecified frame size
// in that case we may read any amount of bytes
bytesPerFrame = 1;
}
// Set an arbitrary buffer size of 1024 frames.
int numBytes = 1024 * bytesPerFrame;
byte[] audioBytes = new byte[numBytes];
try {
int numBytesRead = 0;
int numFramesRead = 0;
// Try to read numBytes bytes from the file.
while ((numBytesRead = audioInputStream.read(audioBytes)) != -1) {
// Calculate the number of frames actually read.
numFramesRead = numBytesRead/bytesPerFrame;
totalFramesRead += numFramesRead;
}
return audioBytes[];
}
Je pense que vous devez prendre en compte le nombre d'octets représentant un seul échantillon d'audio. La plupart des fichiers audio actuels seront de 16 bits par échantillon. – john16384
Il existe déjà de nombreuses questions similaires sur StackOverflow, avec de bonnes réponses - essayez [recherche de jtransforms + audio] (http://stackoverflow.com/search?q=Jtransforms+audio). –
Votre bibliothèque FFT aura probablement besoin de regarder en flottant ses exigences d'entrée et de convertir les données d'onde en conséquence. –