Apache Beam用于音频信号/流处理

时间:2017-08-22 09:52:33

标签: python audio apache-beam

我正致力于语音识别,从而处理音频信号,即将一堆变换和数字信号处理(DSP)技术应用于原始音频信号,以便获得有价值的表示,然后将其输入到机器学习算法中。 / p>

我的代码库完全用Matlab编写,仅适用于有限(有界)信号。我计划迁移到一个解决方案,我可以处理有限和无限(流)音频信号,最好是在python中(主要用于机器学习和音频信号处理中的第三方库可用性)。

经过一番研究,我发现Apache Beam非常适合我的情况,但似乎某些功能在python SDK中不可用,就像在我的情况下超级重要的窗口概念一样,对于有界和无界信号(通常,我的代码处理32毫秒的帧/窗口)。

所以,我正在寻求建议:

  • Apache beam(python SDK)对音频信号的针对性 处理;
  • 如何应对我刚刚提及的限制;
  • 我的情况还有其他选择;

1 个答案:

答案 0 :(得分:0)

首先,一般来说,我会避免使用Python进行繁重的DSP:与C / C ++相比,它将不可避免地导致性能下降。

现在我对Apache Beam了解不多,但它似乎根本不适合音频信号处理,而是处理大量文本数据。实际上,我找不到任何提及“#34; audio"在他们的网站上......

那么,从哪里开始?

在一天结束时,您的程序可能是用C / C ++编写的。你可以使用,例如:

  • Matlab Coder ,它允许您在C / C ++中转换Matlab代码。不确定性能以及它与最终结果的接近程度。
  • PortAudio,这是一个相对较低级别的音频库,肯定会让你制作出你想要的东西。
  • 其他图书馆

您还可以尝试混合 Matlab Coder PortAudio :使用 Matlab Coder 转换您在C / C ++中的特定算法将它们集成到 PortAudio 为您提供的骨架中。

PortAudio 的基本原则是:

  • 它是独立于平台的开源
  • 定义一个回调函数,该函数将在您必须处理音频缓冲区时调用。如果您处理文件,它将被分成小块,这些块将用作音频缓冲区。如果你使用实时流,你从"外部世界"将被发送到此回调函数。