0
저는 현재이 책을 처음 접하기 때문에 친절하게 이해하기 쉽습니다.java를 사용하여 pcm 바이트 배열 .wav 파일에서 주파수 및 피치를 얻는 방법?
나는 음성을 좋거나 나쁘거나 중립적 인 것으로 분류해야하는 프로젝트가 있습니다. 제 계획은 샘플 데이터 세트의 모든 주파수와 피치를 얻고 SVM을 사용하여 트레이닝하는 것입니다.
모든 .wav 파일의 음조 및 주파수를 얻기 위해. 오디오 파일에서 PCM 데이터를 찾는 코드를 작성했습니다. 이제이 데이터를 고속 푸리에 변환 알고리즘에 적용하여 주파수를 얻는 방법은 무엇입니까? FFT 알고리즘에 바이트 배열을 적용하기 전에 고려해야 할 사항이 더 있습니까? 고려해야 할 많은있다
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[];
}
오디오의 단일 샘플을 나타내는 바이트 수를 고려해야한다고 생각합니다. 요즘 대부분의 오디오 파일은 샘플 당 16 비트입니다. – john16384
StackOverflow에 대한 비슷한 질문이 많습니다. 좋은 답변은 - [jtransforms + audio 검색] (http://stackoverflow.com/search?q=Jtransforms+audio)입니다. –
FFT 라이브러리는 입력 요구 사항을 float-look해야하고 이에 따라 웨이브 데이터를 변환해야합니다. –