Отдельный файл WAV на куски для FFT - PullRequest
0 голосов
/ 30 мая 2019

Я пишу программу для определения частот в данном файле WAV, оптимально песню.Мне нужно разделить файл wav на куски, чтобы подать его на мой БПФ, но я не знаю, как выполнить это разделение.Я считаю, что они называются фреймами, но я довольно новичок во всем этом.

Я понятия не имею, с чего начать на самом деле - я только посмотрел онлайн и не нашел то, что хотел.У меня есть догадка, что это связано с разделением FileInputStream на куски, но я понятия не имею, как это сделать.

    FileInputStream input = new FileInputStream(filelocation);


    //Number of samples to take (higher number more accurate but slower
    int numsamples = Constants.numsamples;
    //Sample rate of the file (total frequency range is 1/samplerate)
    int samplerate = Constants.samplerate;
    //Puts the audio file into something readable by the FFT
    WaveDecoder decoder = new WaveDecoder(input);
    //Contains all the samples within the entire file
    ArrayList<Float> allSamples = new ArrayList<Float>( );
    //Contains the aformentioned samples, but in a format that FFT will take
    float[] samples = new float[numsamples];
    //Actual instance of the transform
    FFT fft = new FFT(numsamples, samplerate );


    //number of samples = 441000/filelength

    //Copies the contents of the WaveDecoder into an array
    while( decoder.readSamples( samples ) > 0 )
    {
        for( int i = 0; i < samples.length; i++ )
            allSamples.add( samples[i] );
    }

Вот ссылка на библиотеку FFT, которую я использую:

https://github.com/Uriopass/audio-analysis

Оптимально, код должен быть разделен на куски (независимо от того, разделен ли он на этапе WaveDecoder или перед) для подачи в FFT.Мне понадобится какой-то способ сказать, как далеко в аудиофайл (в секундах) находится фрагмент данных, чтобы я мог сказать, в какое время воспроизводится каждая конкретная частота.

В конце концов, это БПФ будетбыть бэкэндом программы, которая обеспечивает графическое представление того, что воспроизводится в аудиофайле;если есть какой-либо более простой способ сделать определение частоты для программы этого типа, я весь слух.Это проект для средней школы, поэтому я прошу прощения за чрезмерное количество комментариев.

...