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

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

我正在使用Linux – Ubuntu 14.04.

最佳答案

Ideally I would have readings of electric current sampled on a given rate

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

你必须意识到一些事情:

>采样任何信号时,必须限制信号的带宽; Nyquist’s theorem在数学上描述了这一点.在您的实际采样情况下,该限制是采样率的一半.因此,大多数声卡只有一个模拟低通滤波器,可滤除高于可听率的任何信号.不要指望输入在高于ca. 11KHZ.
>声卡设计为交流耦合输入;这意味着麦克风插头和模数转换器(ADC)之间有一个电容器.这意味着只有频率明显高于0Hz的信号(多少取决于声卡,真的)到达ADC,DC不会.

>你可以获得便宜的USB声音“卡”,你可以在那里桥接那个电容器.但我实际上已经联系了声卡IC的制造商,关于这个话题,他们无法保证DC精度或串扰.

>您必须意识到,如果您的信号与重采样率的上述“半采样率”标准相匹配,那么重采样器中使用的数字滤波器不应该真正扭曲它.因此,最简单的方法是将音频信号输入您的应用程序.

我常用的段落:Ceterum censeo GNU Radium esse proliferandem.因此,看看GNU Radio的“音频源”可以为您做些什么. GNU Radio是一个完整的框架,用于构建具有许多有用处理块的信号处理flow graphs.瞥一眼Guided Tutorials,特别是introduction,它给出了上面的要点.也许你可以看出它是否适合你的问题.如果您想轻松尝试,请使用GNU Radio Live DVD/USB image.

除此之外,在Linux下,通常的系统声音API被称为“ALSA”,如果您之前使用过类似的C API,那么实际上并非不可能合作 – 也就是说,它并不美观.如果您已经使用具有多媒体功能的框架(例如SDL),您可能希望坚持使用它.

点赞