Audio Julia中用于音频处理的实时STFT和ISTFT

Audio Julia中用于音频处理的实时STFT和ISTFT,audio,streaming,julia,time-frequency,Audio,Streaming,Julia,Time Frequency,我对音频处理和处理实时数据流还不熟悉。我想做的是: 收听内置麦克风 将样本分成0.1秒的块 通过短时傅立叶变换(STFT)将区块转换为周期图 应用一些简单的函数 通过逆STFT(ISTFT)转换回时间序列数据 在耳机上播放新音频 我一直在四处寻找“实时光谱图”来指导我如何处理数据,但没有骰子。然而,我发现了一些有趣的软件包,包括PortAudio.jl、DSP.jl和MusicProcessing.jl 感觉上,我需要利用多处理技术将传入的数据存储到合适的块中,同时对以前的块应用一些函数,同

我对音频处理和处理实时数据流还不熟悉。我想做的是:

  • 收听内置麦克风
  • 将样本分成0.1秒的块
  • 通过短时傅立叶变换(STFT)将区块转换为周期图
  • 应用一些简单的函数
  • 通过逆STFT(ISTFT)转换回时间序列数据
  • 在耳机上播放新音频
我一直在四处寻找
“实时光谱图”
来指导我如何处理数据,但没有骰子。然而,我发现了一些有趣的软件包,包括
PortAudio.jl
DSP.jl
MusicProcessing.jl

感觉上,我需要利用多处理技术将传入的数据存储到合适的块中,同时对以前的块应用一些函数,同时播放另一个以前处理过的块。所有这些感觉都太复杂了,并且已经让我有一段时间没有接触这个项目了


任何帮助都将不胜感激,谢谢。

一如往常,请从您真正需要的简单版本开始。。。现在忽略从麦克风中提取音频,而是编写一些代码来合成已知频率的正弦曲线,并将其用作输入音频,或从wav文件中读取音频-其好处在于它的已知性和可复制性,与麦克风音频不同

这篇文章展示了如何使用你提到的一些lib

你说的是“实时光谱图”。。。这只是重复处理一个音频窗口,所以让我们先简化一下它。。。一旦您能够读取wav音频文件,然后将其发送到FFT调用,该调用将返回其频域表示的音频曲线。。。当您正确地陈述此频域数据后,可以将其发送到反向FFT调用中,以返回原始的时域音频曲线

在您完成上述工作后,将其包装在一个呼叫中,该呼叫提供音频样本的滑动窗口,使您能够“实时”解析来自麦克风的传入音频。。。请记住,在输入FFT和IFFT调用的样本窗口中,始终使用2个音频样本的幂。。。假设您的窗口是16384个样本。。。julia服务器需要处理多个请求(1)从麦克风馈送中提取下一个样本缓冲区(2)向FFT和IFFT呼叫发送一个样本窗口。。。请注意,滑动窗口中的音频采样数通常会大于传入麦克风缓冲区的大小-因此滑动窗口的概念。。。随着时间的推移,将您的麦克风缓冲区添加到此窗口的前端,并从此窗口的尾端移除相同数量的样本