代码之家  ›  专栏  ›  技术社区  ›  Scott

麦克风的开放式实时音频处理

  •  5
  • Scott  · 技术社区  · 17 年前

    我想写一个跨平台的应用程序,可以处理和回放麦克风数据实时。把聊天室想象成一个概念证明,在那里人们可以互相交谈,并对他们的声音应用过滤器。OpenAL适合这样吗?如果没有,有人能提供另一种选择吗?另外,如果有人能提供或链接我到一个简单的“hello world”程序,从麦克风中读出并输出输出,那将是非常棒的。

    3 回复  |  直到 17 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    OpenAL对于这个目的可能不是很好。我建议您使用SDL(也许可以使用SDL\u混音器)或PortAudio。两者都是跨平台的,而且都非常容易使用。

    要使用OpenAL实现此目的,您必须轮询以查看在隐藏的循环缓冲区中累积了多少个样本。当你决定准备好的时候把它们拿出来。然后应用过滤器。然后将过滤后的数据附加到缓冲区。然后,将缓冲区排队到一个源上,并告诉该源播放(除非它已经在播放)。在我看来,OpenAL的优势在于应用3D效果。它在实时过滤方面没有那么好,尽管我希望如果您愿意接受输出延迟一点的话,它可以工作。我更喜欢使用回调模型而不是缓冲区对象模型进行过滤。


    OpenAL: How to create simple "Microphone Echo" programm? 一条注释指出了处理的位置。

        2
  •  2
  •   Karl    15 年前

    在iOS上,您需要使用音频队列或音频单元进行录制。对于应用实时效果,音频单元是最好的选择,尽管比音频队列复杂得多。

        3
  •  -1
  •   mahboudz    16 年前

    苹果有两个(或更多)这样的样品。看看aurioTouch和SpeakHere。aurioTouch可以接收麦克风输入并回放,SpeakHere可以接收输入并录制,您可以很容易地修改它来回放。