【问题标题】:Python read microphone without PyAudio没有 PyAudio 的 Python 读取麦克风
【发布时间】:2015-06-01 21:57:15
【问题描述】:

我正在尝试使用麦克风从盖革计数器收集数据并使用 Python 进行处理。但是,我使用的是大学计算机,因此不允许我安装似乎对这项工作 (Python read microphone) 必要的PyAudio 模块。 numpymatplotlibscipy中是否有等价的功能?

【问题讨论】:

  • 我当然希望不会。这些软件包用于数学和绘图。与音频输入无关。
  • 你在什么平台上?
  • 得到一个树莓派并在上面安装任何你想要的东西?
  • 您可以使用 ctypes 和 windll 来访问 Windows 录制 API。如果您在 Google 上搜索“windll.kernel32 记录器”,则有许多命中看起来像是这种方法的合理轮廓。
  • 作为一种解决方法,您可以将数据记录为 WAV 文件并使用scipy.io.wavfile.read()。我知道这不是一个好的解决方案,但您可以完成一些工作,直到您可以说服某人为您安装 pyaudio。

标签: python numpy matplotlib pyaudio


【解决方案1】:

以下是我认为可行的方法的概述:

其中最困难的部分是从麦克风获取数据,您需要为此构建的工具。由于您使用的是 Windows,因此您可以寻找一个预构建的工具来执行此操作。您可以尝试将某些东西作为子进程运行,但可能更好的是使用 ctypeswindll.kernel32 调用 Windows 录制 API。谷歌搜索“windll.kernel32 录制”会产生一些合理的点击,例如this

如果您确实走子流程路线,您可能最终会调用一些首先将输出写入 .wav 文件的东西。如果是这种情况,您可以使用Python wave modulescipy.io.wavefile.read 读取文件。 (注意波形文件可能比这些模块可以读取的更复杂,所以当你设置参数时,不要发疯。)

最后,通过记录设备中的音频将数据输入计算机的想法是非常有问题的,并且会导致问题,因为需要对外部音频噪音进行分类。最好找到一种方法将数据输入计算机而无需音频干预。

【讨论】:

    【解决方案2】:

    我知道该问题已得到解答并被接受,但我想提供 2 个其他选项:

    • python virtualenv 可以解决“不允许在计算机上安装任何东西”的问题,我猜这更多是由本地 IT 部门强加的,而不是部门政策

    • 在包装器中使用 ffmpeg。将静态编译的可执行文件放在已知且可接受的位置。使用子进程通过适当的命令行开关启动它,以将捕获的音频输出到标准输出(在 python 端读取为类似文件的对象)

    这两个选项都是免费的,就像免费啤酒一样,并添加了简单的跨平台支持。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多