【问题标题】:Real Time Audio Analysis In LinuxLinux 中的实时音频分析
【发布时间】:2010-10-16 17:32:41
【问题描述】:

我想知道推荐使用的音频库是什么?

我正在尝试制作一个有助于调音的小程序。 (钢琴、吉他等)。我读过 ALSA 和 Marsyas 音频库。

我认为这个想法是从麦克风中采样数据,对 5-10 毫秒的块进行分析(根据我的阅读内容)。然后执行 FFT 以确定哪个频率包含最大峰值。

【问题讨论】:

    标签: linux audio real-time signal-processing alsa


    【解决方案1】:

    这个guide 应该会有所帮助。不要将 ALSA 用于您的应用程序。使用更高级别的 API。如果您决定要使用 JACK,http://jackaudio.org/applications 有三个乐器调音器可以用作示例代码。

    【讨论】:

      【解决方案2】:

      Marsyas 将是执行此操作的绝佳选择,它专为此类任务而构建。

      为了调整仪器,您需要做的是有一个算法来估计基本 声音的频率(F0)。有许多算法可以做到这一点,其中一种是最新最好的 是由 Alain de Cheveigne 开发的 YIN 算法。我最近添加了 YIN 算法 到 Marsyas,使用它非常简单。

      这是您将在 Marsyas 中使用的基本代码:

      MarSystemManager mng; // 包含所有内容的系列 MarSystem* net = mng.create("系列", "系列"); // 使用 AubioYin 处理来自 SoundFileSource 的数据 net->addMarSystem(mng.create("SoundFileSource", "src")); net->addMarSystem(mng.create("ShiftInput", "si")); net->addMarSystem(mng.create("AubioYin", "yin")); net->updctrl("SoundFileSource/src/mrs_string/filename",inAudioFileName); while (net->getctrl("SoundFileSource/src/mrs_bool/notEmpty")->to()) { 净->滴答(); realvec r = net->getctrl("mrs_realvec/processedData")->to(); cout

      此代码首先创建一个 Series 对象,我们将在其中添加组件。在一个系列中,每个组件 串行接收前一个 MarSystem 的输出。然后我们添加一个 SoundFileSource,您可以输入它 在 .wav 或 .mp3 文件中插入。然后我们添加 ShiftInput 对象,它输出重叠的音频块,它 然后输入 AubioYin 对象,该对象估计该音频块的基频。

      然后我们告诉 SoundFileSource 我们要读取音频文件名中的文件。

      while 语句然后循环,直到 SoundFileSource 用完数据。一会儿里面 循环,我们取网络处理过的数据并输出(0,0)元素,即 基频估计。

      当您为 Marsyas 使用 Python 绑定时,这会更容易。

      【讨论】:

        【解决方案3】:

        http://clam-project.org/ CLAM 是一个成熟的软件框架,用于音频和音乐领域的研究和应用程序开发。它提供了一个概念模型以及用于分析、合成和处理音频信号的工具。

        他们有一个很棒的 AP​​I、漂亮的 GUI 和一些完成的应用程序,您可以在其中查看所有内容。

        【讨论】:

          【解决方案4】:

          由于内核驱动程序包含在内核中并且 OSS 被贬低,ALSA 现在是 linux 的默认标准。然而,ALSA 用户空间还有其他选择,例如jack,它似乎针对的是低延迟专业类型的应用程序。它的 API 似乎有一个更好的 API,虽然我没有使用过它,但我对 ALSA API 的短暂接触会让我觉得几乎任何东西都会更好。

          【讨论】:

            【解决方案5】:

            Audacity 包含频率图功能并具有内置 FFT 滤波器。

            【讨论】:

              猜你喜欢
              • 2022-01-17
              • 2011-11-16
              • 2010-11-18
              • 2012-04-08
              • 2020-08-05
              • 2017-04-24
              • 2013-08-20
              • 2014-01-19
              • 1970-01-01
              相关资源
              最近更新 更多