2015-12-09 11 views
0

Я пытаюсь выполнить анализ звука в реальном времени. В настоящее время я могу получать потоковое вещание в реальном времени, но когда я пытаюсь построить спектрограмму, она вводит задержку около 4 секунд, даже если я попытаюсь уменьшить расчеты.Анализ спектрограммы в реальном времени

Я хотел бы знать, есть ли способ выполнить более быстрый график спектрограммы (как для построения данных, так и для обновления осей, а не для графика обновления).

На данный момент я использую входной буфер с 1024 образцов:

Spectrogram(audio, 256, round(256/2), 256, 1800) 

Я пытался уменьшить размер окна и NFFT, но результат всегда один и тот же.

ответ

0

Попробуйте просто установить CData изображения для каждого обновления спектрограммы (см. Пример кода ниже). Если вы можете быстро вычислить свой спектрограмм, это не должно вызывать длительных задержек. Создание нового изображения путем простого вызова спектрограммы без вывода может привести к задержкам.

Вы можете использовать

tic 
S=Spectrogram(audio, 256, round(256/2), 256, 1800); 
toc 

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

figure 
audio=randn(1024,1); 
[S,F,T]=spectrogram(audio,256,round(256/2),256,1800); 
im=image(F,T,abs(S).^2); 

for i=1:100 
    audio=randn(1024,1); 
    S=spectrogram(audio,256,round(256/2),256,1800); 
    set(im,'CData',abs(S).^2); 
    pause(1/30); 
end 
+0

Кажется, это хороший способ улучшить скорость графика спектрограмм. Я пытаюсь написать свой код для выполнения анализа! Спасибо! – Dodz

Смежные вопросы