如何捕获麦克风缓冲区原始数据?

时间:2017-04-26 10:28:00

标签: python c++ c linux signal-processing

我需要捕获麦克风提供的原始数据(每几毫秒)。对于Python的偏好,但它也可以在C / C ++中。我正在使用Linux / macOS。

如何捕获音频波(麦克风输入)以及它将是什么类型的数据?纯字节?包含一些数据的数组?

我想进行实时大脑分析和(如果幅度达到确定值)麦克风信号的实时fft,但我不知道麦克风为我提供了什么数据和数据的概念。

我看到很多代码设置为捕获44.1kHz的音频,但它是否捕获了所有这些数据?采集的数据部分取决于编程方式?

1 个答案:

答案 0 :(得分:1)

“我需要捕获麦克风提供的原始数据(每隔几毫秒)”

不,你没有。那不行。即使您每毫秒捕获一次数据,恰好是1000微秒(没有抖动)的倍数,您的音频质量也会非常糟糕。采样频率为1000 Hz(每毫秒一次)将奈奎斯特频率限制为500 Hz。那非常低。

“我想进行实时的大力分析”。那么,你忽略了500 Hz以上的分量,这大约是可听频率的98%。

“实时fft” - 同样的问题,也会错过98%。

您无法处理原始音频。您必须依靠声卡来完成繁重的工作才能获得计时权利。它可以每21微秒采样声音,精确度为微秒。您可以使用ALSA或PulseAudio或其他一些选项(在Linux上为您发声)与音频卡通信。但那里的建议将是偏离主题的。