我是一名经验丰富的 Python 开发人员,但在电子领域却是个新手。
我有一个安装了 MicroPython 的 ESP32 板,并连接了一个麦克风。
我可以从麦克风中读取读数,如下所示:
MicroPython v1.9.4 on 2018-05-11; ESP32 module with ESP32
Type "help()" for more information.
>>> import machine
>>> a = machine.ADC(machine.Pin(32))
>>> a.read()
488
>>> a.read()
496
>>> a.read()
449
我的问题是:如何实际录制音频以便通过电子邮件发送?波形格式或任何其他格式。我想任何实现都只会在循环中对级别进行采样并构建一个数组,但是如果已经存在一个实现而不是我必须编写它,那就太好了。
一个基本想法是以 CD 质量采样 [1] 并编码 [2]:16 位,44100 Hz。
import machine, time
a = machine.ADC(machine.Pin(32))
while True:
sample = a.read() * 2**(16-10) # we want 16 bits, a.read() returns 10 bits
print(sample)
time.sleep(1/44100)
您应该能够运行此代码并查看控制台每个示例打印的值。当您对着麦克风讲话时,它应该上下移动。
它非常接近 PCM 音频格式 (WAV):以每秒 44100 次的频率以 16 位编码的值序列。
更多信息: