audio - 来自麦克风的 OpenAL 实时音频处理

标签 audio real-time signal-processing openal microphone

我想写一个跨平台的应用程序,可以实时处理和回放麦克风数据。想象一下作为概念验证的聊天室,人们可以在其中相互交谈并对他们的声音应用过滤器。 OpenAL 是否适合于此?如果没有,有人可以提供替代方案吗?此外,如果有人可以提供或链接我到一个简单的“hello world”程序,该程序从麦克风中读取并将输出吐出,那就太棒了。

谢谢!

最佳答案

OpenAL 可能不适用于此目的。我建议使用 SDL(也许使用 SDL_Mixer)或 PortAudio。两者都是跨平台的,并且都相当容易使用。

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

编辑:我在以下位置发布了一些代码:OpenAL: How to create simple "Microphone Echo" programm?注释指出了处理的位置。

关于audio - 来自麦克风的 OpenAL 实时音频处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397025/

相关文章:

iphone - Mac Audio框架

ajax - 有了 websockets,AJAX 有没有位置?

real-time - 在线与实时

c - 用 C 语言实现的双二阶滤波器示例

python - 增加/减少 WAV 文件 Python 的播放速度

c# - 如何在C#中采样音频?

audio - 将分析仪连接到咆哮声

android - 连续播放更多声音时,声音有时会保持沉默,为什么?

c - 如何在实时 Linux 中进行进程间通信?

c# - C#FMOD实时播放流