我想做一个实时的声音分析。目前,我能够获得实时的频谱流,但当我试图绘制光谱图时,它引入了大约4秒的延迟,即使我试图减少计算。
我想知道是否有一种方法可以更快地绘制光谱图(例如绘制数据、更新轴而不是更新图)。
目前,我正在使用一个带有1024个示例的输入缓冲区:
Spectrogram(audio, 256, round(256/2), 256, 1800)我试图缩小窗口大小和NFFT,但结果总是一样的。
发布于 2015-12-09 20:30:16
尝试为每次更新的光谱图设置图像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);
endhttps://stackoverflow.com/questions/34176264
复制相似问题