从音频脉冲获取二进制数据

6 投票
1 回答
10704 浏览
提问于 2025-04-16 08:59

我有一个红外传感器,它有一个TRS接口,我可以把遥控器的信号录制成音频。现在我想用电视遥控器来控制我的电脑,但我不知道怎么把音频输入和预先录制的音频进行比较。不过我意识到这些音频波形其实只包含一些数据(就是二进制),所以我可以把它们转换成二进制或十六进制,这样比较起来就简单多了。

波形看起来像这样: wave 1

还有这样: wave 2

这些是“确定”按钮的录音,有时候右声道也会有一些脉冲,我不知道为什么,可能是传感器的连接有问题。不过这不重要,反正。

我需要一个Python程序来读取这些脉冲,并实时将它们从音频输入(麦克风)转换成二进制。 我知道这听起来像是“帮我做这件事,我就可以轻松过日子”,但我对声音的转换和读取没有经验……我一直在找Python的示例来录音和读取音频,但都没有成功。

1 个回答

5

如果你不需要实时处理,这个事情其实很简单:只要把数据保存为 .wav 文件,然后用 Python 的 wave 模块 来读取它。

下面是一个如何在 Python 中读取 wav 文件的例子:

import wave

w = wave.open("myfile.wav", "rb")
binary_data = w.readframes(w.getnframes())
w.close()

当然,也可以做到实时处理,但这就稍微复杂一点,不过也不是特别难。对于实时处理,我使用 PyAudio,一个好的开始是看看它的示例演示。在这些示例中,你基本上是打开一个流,然后一次读取小块数据。如果你想要一些互动功能,就需要在一个线程中进行处理。

另外要注意的是,声卡会过滤你的音频输入,所以你看到的并不一定是真正的输入信号。特别是,我觉得遥控器通常有一个大约 40KHz 的载波频率,这个频率是人耳听不到的,所以我怀疑声卡在这个范围内的表现会不好,不过这也要看你想做什么,可能还是够用的。

撰写回答