【问题标题】:Access to raw signal from microphone plug从麦克风插头获取原始信号
【发布时间】:2015-10-11 21:08:21
【问题描述】:

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

我正在使用 Linux - Ubuntu 14.04。

【问题讨论】:

  • 从平台入手:Windows? Linux? freestanding 程序?
  • 您需要多“原始”的访问权限?您只是想要以指定的采样率从麦克风中获取未经过滤的 PCM 样本,还是还有更多?
  • @FUZxxl 理想情况下,我会以给定速率采样电流读数 - 可行吗?
  • @data:当然有可能,但有点奇怪。您能否详细说明您要达到的目标以及为什么要测量电流而不是传统上采样的电压?
  • 你可以使用PortAudio

标签: c signal-processing hardware


【解决方案1】:

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

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

你必须意识到一些事情:

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

我常用的段落: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),您可能希望坚持使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2019-05-20
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多