从麦克风插头访问原始信号

时间:2015-10-11 21:08:22

标签: c signal-processing hardware

我需要从笔记本电脑中的麦克风插头访问原始信号流。由于我编写代码以直接与硬件交互的经验几乎没有,我欢迎任何可能的参考开始。

我正在使用Linux - Ubuntu 14.04。

1 个答案:

答案 0 :(得分:1)

  

理想情况下,我会读取以给定速率采样的电流

恭喜,声卡的作用(通常,它们采样电压,但具有固定电阻,相当于电流)。

你必须意识到一些事情:

  • 对任何信号进行采样时,必须限制信号的带宽; Nyquist's theorem在数学上描述了这一点。在您的实际采样情况下,该限制是采样率的一半。因此,大多数声卡只有一个模拟低通滤波器,可滤除高于可听率的任何信号。不要期望输入在高于ca. 11KHZ。
  • 声卡设计为交流耦合输入;这意味着麦克风插头和模数转换器(ADC)之间有一个电容器。这意味着只有频率明显高于0Hz的信号(多少取决于声卡,真的)到达ADC,DC不会。
    • 你可以得到便宜的USB声音"卡"你可以在那里桥接那个电容器。但我实际上已经联系了声卡IC制造商关于这个话题,他们无法保证DC精度或串扰。
  • 你必须意识到,如果你的信号符合"半采样率"对于重采样率,上面提到的标准也是如此,那么重采样器中使用的数字滤波器不应该真正扭曲它。因此,最简单的方法是将音频信号输入您的应用程序。

我的常用段落:Ceterum censeo GNU Radium esse proliferandem。因此,看看GNU Radio" Audio Source"可以为你做。 GNU Radio是一个完整的框架,用于构建具有许多有用处理块的信号处理flow graphs。瞥一眼Guided Tutorials,特别是introduction,它可以更详细地说明上面的要点。也许你可以看出它是否适合你的问题。如果您想轻松尝试,请使用GNU Radio Live DVD/USB image

除此之外,在Linux下,通常的系统声音API被称为" ALSA",如果您之前使用过类似的C API,那么它们真的不可能使用 - - 说到这里,它并不美丽。如果您已经使用具有多媒体功能的框架(例如SDL),您可能希望坚持使用它。