【问题标题】:Realtime STFT and ISTFT in Julia for Audio Processing用于音频处理的 Julia 中的实时 STFT 和 ISTFT
【发布时间】:2019-04-26 01:56:11
【问题描述】:

我是音频处理和实时流式处理数据的新手。我想做的是:

  • 收听内置麦克风
  • 将样本组合成 0.1 秒的块
  • 通过短时傅里叶变换 (STFT) 将块转换为周期图
  • 应用一些简单的函数
  • 通过逆 STFT (ISTFT) 转换回时间序列数据
  • 在耳机上播放新音频

我一直在寻找"real time spectrograms",以便为我提供有关如何处理数据的指南,但没有骰子。不过,我发现了一些有趣的包,包括PortAudio.jlDSP.jlMusicProcessing.jl

感觉就像我需要使用多处理技术将传入的数据存储到合适的块中,同时将某些功能应用于前一个块,同时还要播放另一个先前处理的块。所有这一切都让人感觉过于复杂,并且让我有一段时间无法接触这个项目。

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

【问题讨论】:

    标签: audio streaming julia time-frequency


    【解决方案1】:

    一如既往地从您真正需要的简单版本开始...暂时忽略从麦克风中提取音频,而是编写一些代码来合成已知频率的正弦曲线并将其用作您的输入音频,或者从 wav 文件中读取音频 - 这里的好处是它与麦克风音频不同的是已知且可重现

    这篇文章展示了如何使用你提到的一些库http://www.seaandsailor.com/audiosp_julia.html

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2020-02-09
      • 2011-01-16
      • 2018-01-17
      • 2015-12-09
      • 1970-01-01
      相关资源
      最近更新 更多