如何使用 MicroPython 实时捕获音频
PSOC™ Edge E84 AI 开发套件可直接在硬件上轻松实现边缘人工智能和嵌入式应用的原型开发。探索其功能最简单的方法之一,是使用内置的PDM麦克风结合 MicroPython 进行开发。
在本专业技巧中,我们将演示如何使用 MicroPython 快速访问电路板上的麦克风,并实时读取音频电平。
硬件
对于此示例,唯一需要的硬件是 PSOC™ Edge E84 AI 套件。
该电路板集成了两个数字PDM麦克风,分别位于开发套件的两侧。这些麦克风可捕捉环境声音,并通过PDM接口将其传输至微控制器。
内置硬件可让您无需额外的外部组件,立即进行音频感应实验。
软件
MicroPython
要遵循这个技巧,你需要:
•PSOC™ Edge E84 AI 开发套件
•板上已安装 MicroPython 固件
•像 Thonny 这样的 MicroPython 交互式开发环境
如果尚未在板子上安装 MicroPython,可以按照此处的设置指南进行!
一旦 MicroPython 在设备上运行,我们就可以通过 PDM_PCM 接口开始与麦克风交互。
从麦克风读取音频数据
以下代码初始化了板载PDM麦克风接口,将音频样本读入缓冲区,并计算一个简单的声级值。
1. 导入所需库
2. 创建音频缓冲区
H型表示16位有符号整数,与麦克风的输出格式相匹配。
3. 配置麦克风接口
在此处配置PDM麦克风驱动程序。
关键参数:
•sck → PDM 时钟信号
•数据 → 麦克风数据流
•采样率 = 16000 → 常见音频采样率
•位数 = 16 → 16位音频样本
•MONO 格式 → 单声道音频
4. 播放音频样本
此命令将缓冲区填充为从麦克风捕获的新音频样本。
这计算了捕获音频样本的平均绝对幅度。
结果以图表中的方式简单地展示了声强。
升级:从水平仪到音频录制
所以,我们的音频信号已经能在屏幕上显示出来。但如果我们能真正捕捉到这些声音,岂不是更酷?想象一下,打造一个语音控制开关、为花园设置声音记录器,或者只是快速录制一条备忘录。有了PSOC™ Edge E84 AI套件,从读取数据到存储数据变得异常简单。
我们将用简单的电平表升级成一个功能完整的音频记录器。通过编写脚本,直接将音频录制到电路板的内部存储器中,保存为文件,并让你可以在电脑上下载和播放。让我们把这些声波变成数据吧!
录音稿
我们的新脚本不仅打印数字,还会初始化PDM麦克风,捕获一段音频样本流并持续一段时间,然后将数据写入名为audio.raw的文件中。
工作原理
让我们来拆解一下内部发生的情况:
•配置:我们通过一个简单的字典来定义音频设置,采用16,000赫兹(适合语音)、16位分辨率和立体声格式,以充分利用内置麦克风。
•录音函数:record_audio() 以二进制写入模式("wb")打开一个文件。它创建一个小缓冲区(rx_buf),并进入一个循环,该循环将持续运行直到指定时间到达为止。
•捕获并保存:在循环内部,pdm_pcm.readinto(rx_buf) 会将新鲜的音频样本填充到缓冲区中。随后,脚本使用 f.write(rx_buf[:num_read]) 将新捕获的字节写入文件。
•设置与清理:我们通过配置参数在引脚 P8_5(时钟)和 P8_6(数据)上初始化 PDM 接口。录制完成后,pdm_pcm.deinit() 会干净地释放硬件资源。
让我们开始录音吧!
准备好录制声音了吗?请按照以下步骤操作:
•连接与配置:请确保您的 PSOC™ Edge E84 AI 套件已连接到笔记本电脑。在 Thonny 中,确认右下角选择了正确的串行端口。
•运行脚本:将上述代码粘贴到您的IDE中,保存(例如保存为record.py),然后点击运行按钮。
•大声说出来!贝壳将开始录音……现在是你的展示时间:说说话、吹口哨或拍手,持续5秒钟。快点吧,我们正在倾听!
•完成:时间到后,你将在 Shell 中看到——音频录制成功!
获取和播放您的音频
音频现在已安全存储在板上,但我们该如何听到它呢?它以原始PCM文件的形式保存,标准的媒体播放器可能难以处理。以下是聆听你创作的最佳方法:
•查看文件:在 Thonny 中,转到“视图”>“文件”。你应该能在列表中看到一个名为 audio.raw 的文件。
•下载:右键点击 audio.raw,选择“下载到本地主机”,然后保存到桌面。
•使用 Audacityacityacity 播放回放:为了获得最佳体验,我们建议使用免费的音频编辑器 Audacity:
•打开 Audacity。
•转到“文件”>“导入”>“原始数据”。
•请选择您下载的 audio.raw 文件。
在导入对话框中,请确保设置与我们的脚本一致:
•编码:有符号16位PCM
•字节序:小端序
•声道:立体声
•采样率:16000 Hz
•点击导入并播放!
提示:如果音频听起来像松鼠或慢动作怪物,请再次确认 Audacity 中的采样率是否与脚本中使用的 16,000 Hz Hz 相符!
就是这样!我们已经通过 MicroPython 介绍了 PSOC™ Edge E84 AI 开发套件中的音频感知基础知识,内容涵盖实时音量可视化,以及完整音频的录制、存储和回放。现在你已具备坚实的基础,可以构建更智能、基于事件的音频项目,无论是触发阈值的噪音记录器、语音控制开关,还是迈向设备端人工智能的跳板。
本文编译自hackster.io





