Извлечение данных быстрого преобразования Фурье из файла

Я создаю инструмент, который должен работать на сервере и анализировать звуковые файлы. Я хочу сделать это на Ruby, так как все мои другие инструменты написаны также на Ruby. Но мне трудно найти хороший способ сделать это.

Много примеров, которые яМы нашли, что занимались визуализаторами и графическими вещами. Мне просто нужны данные БПФ, не более того. Мне нужно и получить аудио данные, и сделать БПФ на нем. Моя конечная цель состоит в том, чтобы вычислить некоторые вещи, такие как среднее значение / медиана / мода, 25-й процентиль и 75-й процентиль по всем частотам (взвешенная амплитуда), BPM и, возможно, некоторую другую хорошую характеристику, чтобы позже иметь возможность объединять похожие звуки вместе ,

Сначала я попытался использоватьрубиново-аудио а такжеfftw3 но я никогда не иду вдвоем, чтобы действительно работать вместе. Документация не былаТоже хорошо, так что я действительно неНе знаю, какие данные были перемешаны. Далее я попытался использоватьbplay /BREC и ограничить мой скрипт на Ruby, чтобы он просто использовал STDIN и выполнял FFT (все еще используя fftw3). Но я не могbplay / brec работает, поскольку сервер неу меня нет звуковой карты, а у меня нетНевозможно просто передать звук непосредственно на STDOUT, не заходя сначала на аудиоустройство.

Вот'самый близкий ямы получили:

# extracting audio from wav with ruby-audio
buf = RubyAudio::Buffer.float(1024)
RubyAudio::Sound.open(fname) do |snd|
    while snd.read(buf) != 0
        # ???
    end
end

# performing FFT on audio
def get_fft(input, window_size)
    data = input.read(window_size).unpack("s*")
    na = NArray.to_na(data)
    fft = FFTW3.fft(na).to_a[0, window_size/2]
    return fft
end

Так что теперь яя застрял и могубольше не найти хороших результатов в Google. Так что, возможно, вы, ребята, можете мне помочь?

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос