0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用树莓派Pico开发板制作实时音频光谱图可视化器

jf_zGNBEhbi 来源:趣无尽 2023-10-24 10:49 次阅读

本期教程将会通过使用一块带有外置数字麦克风和 TFT LCD 显示屏的树莓派 Pico 开发板制作一个实时音频光谱图可视化器。有了它,你就可以将你周围环境的实时声音可视化表现出来!下图是该工具运行时的预览图。


fdf85b1e-7214-11ee-939d-92fbcf53809c.gif
这里使用到了 Adafruit PDM MENS 扩展板(使用方法) 。我们还会使用一些常见的数字信号处理(DSP)技术,直接在树莓派 Pico 上处理数字音频数据而不仅通过 USB 线将数字音频数据传输到 PC 端。通过使用 DSP 技术,将转换后的音频信号在带有 Micro SD 卡扩展板的 Adafruit 2.0 的 320×240 彩色 IPS TFT 显示屏上实时显示。

组件清单

树莓派 Pico × 1
Adafruit PDM MEMS 麦克风扩展板 × 1
带有 micro SD 卡扩展板的 320×240 彩色 IPS TFT 显示屏 × 1
全尺寸无焊面包板 × 1
公对公跳线 × 20
烙铁 × 1
焊丝 × 若干

什么是音频频谱图?

音频频谱图被用于将由振幅表示的实时音频信号可视化为实时音频信号的频率的格式。

在下图中,左侧显示的是原始音频信号,右侧显示的则是音频信号的频谱图。

fe02ee9e-7214-11ee-939d-92fbcf53809c.gif

通过频谱图中的颜色强度,你可以看出音频信号的振幅与其频率之间是存在直接关联性的。

有关用于创建音频频谱图的 DSP 技术的更详细概述,可查阅 Fixed-point DSP for Data Scientists 。

频谱图也用于基于机器学习(ML)的音频系统中,将音频信号转换为一张频谱图,以便使用计算机视觉技术对音频信号中的 2D“图像表示”进行界定。这在现实生活中例子有音频或语音识别、关键词识别。

示意图

fe09ba94-7214-11ee-939d-92fbcf53809c.png

代码

代码文件在这里可以下载
https://make.quwj.com/project/471

制作途径

若想创建频谱图并将其实时在 LCD 屏幕上显示,请按照下面的步骤操作。
1、使用数字麦克风收集 N 个音频样本。
2、将汉宁窗 (Hanning window)应用在收集到的音频样本中。
3、使用上一步的输入运行快速傅里叶变换 (RFFT)。
4、计算 RFFT 的幅度。
5、将每个 RFFT 幅度映射一个颜色值以显示在 LCD 显示器上。
6、在 LCD 上显示新行。
7、滚动到新行并重复。

如果我们选择 256 的 RFFT 大小,我们将有 128 个可用的幅度输出并显示在屏幕上,因为这小于显示器每行的 240像素,所以我们可以显示每行两次,以最大化这块屏幕的视觉可视性。

为了实现更快的视觉响应,我们可以一次从麦克风中采集 64 个新的音频样本(而不是等待那 256 个新音频样本),并将它们与先前最新的 192 个(256-64)样本在每个循环中相结合。在 16 kHz的采样率下,我们将有 64/16000秒来执行所有计算并更新显示。这样一来,每一次迭代就只需4毫秒了。

我们将使用 Pico 专属麦克风库 microphone-library-for-pico ,从数字麦克风捕获数据。
Arm 的 CMSIS-DSP 库,将被用于实时处理音频数据。

CMSIS-DSP 针对 Arm Cortex-M 处理器进行了优化,包括基于 Raspberry Pi Pico 的RP2040 微控制器MCU)的 Arm Cortex-M0+。Pico 的 ST7789 库将用于驱动 ST7789 TFT 显示器的输出。

硬件设置

将公头焊接在你的树莓派 Pico 板,Adafruit PDM MEMS 麦克风扩展板和带有 micro SD 卡扩展板的 2 英寸320×240 彩色 IPS TFT 显示器上,以便将它们插入面包板中。有关将 GPIO 引脚焊接至树莓派 Pico。

待两者被焊接好后,请将它们放置在试验板上,并按下图所示设置接线。

fe1603e4-7214-11ee-939d-92fbcf53809c.jpg

布线设置的表格图

fe1a3f68-7214-11ee-939d-92fbcf53809c.png

完成后,你的面包板应该是这样的。

fe251244-7214-11ee-939d-92fbcf53809c.jpg

设置 Pico SDK 开发环境

首先需要使用 Raspberry Pi 的 Pico SDK 和所需的工具链设置你的电脑。参考:
https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf

本指南的第 2.1 节可以被用于所有的操作系统。下面是各系统的专属操作章节。
Linux:2.2章节
– macOS:9.1章节
– Windows:9.2章节

获取和编译 Pico-audio-spectrogram 应用

确保 PICO SDK 环境变量已设置。

export PICO_SDK_PATH=/path/to/pico-sdk

在终端窗口中克隆git存储库并更改目录

cd ~/ 
git clone --recurse-submodules https://github.com/ArmDeveloperEcosystem/audio-spectrogram-example-for-pico.git
cd audio-spectrogram-example-for-pico

创建生成目录并将目录更改为:

mkdir build
cd build

运行camake和make并进行编译:

cmake .. -DPICO_BOARD=pico
make

按住主板上的 BOOTSEL 按钮,同时使用 USB 电缆将主板插入你的电脑中。

将 audio_spectrogram.uf2 文件复制到已安装的树莓派 Pico 引导的 ROM 磁盘:

cp -a audio_spectrogram.uf2 /Volumes/RPI-RP2/.

测试一下

你现在可以试着发出一些声音,比如说几个不同的单词,并在频谱图上看看会显示出什么。

以下是发出“yes”一词在显示屏上的显示的样式。

fe302cba-7214-11ee-939d-92fbcf53809c.jpg

同样的,这是发出“no”一词在显示屏上显示的样式

fe3ffff0-7214-11ee-939d-92fbcf53809c.jpg

“ESC-50:环境声音分类数据集”中的各种声音示例如下图所示:

总结

本指南介绍了如何使用一个带有外部数字麦克风和带 TFT LCD 的 Raspberry Pi Pico 板制作实时音频频谱图可视化工具。开始时,本项目使用了 Pico 专属麦克风库使麦克风一次捕获64个音频样本,之后又使用 Arm 的 CMSIS-DSP 库将音频样本转换为频谱图。

最后使用 Pico 的 ST7789 库一次一行的显示在 TFT LCD显示屏上。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343620
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164097
  • 显示屏
    +关注

    关注

    28

    文章

    4228

    浏览量

    72670
  • TFT
    TFT
    +关注

    关注

    10

    文章

    374

    浏览量

    109779
  • 树莓派
    +关注

    关注

    113

    文章

    1639

    浏览量

    104741

原文标题:树莓派 Pico 实时声音可视化显示屏

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【NanoPi2申请】可视化智能小车

    申请理由:想使用开发板提高职能小车的可视化程度项目描述:通过开发板实时小时智能小车的工作进程
    发表于 11-11 11:00

    用于树莓应用程序开发的IDE软件集成开发环境Pi Studio

    ,使您写代码如行云流水。Pi Studio采用HTML5作为用户界面设计技术。 采用C++作为程序设计语言。Pi Studio标准版内置可视化HTML界面设计,可以设计精美的HTML用户界面;Pi
    发表于 01-03 09:37

    【YOXIOS X3开发板(基于Linux的GUI)试用连载】基于YOXIOS X3开发板和8266模块的演讲PPT可视化画板

    产品,区别于传统的单片机串口屏,YOXIOS X3开发板的主控是微处理,可以实现系统级复杂度,APP层面的开发,我能想到的一个非常使用的用途就是与8266模块结合,做一个演讲PPT的可视化
    发表于 07-27 15:07

    树莓pico入门学习笔记(一)相关资料推荐

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropyth
    发表于 07-01 09:28

    balenaFin:兼容树莓计算模块的开发板

    balenaFin:兼容树莓计算模块的开发板,balenaFin 是一款兼容树莓计算模块的底板,给
    发表于 07-26 07:36

    树莓Pico迷你开发板及所使用的RP2040 MCU芯片有哪些特性

    Raspberry Pi Pico是什么?树莓Pico迷你开发板及所使用的RP2040 MCU芯片有哪些特性?
    发表于 09-14 06:50

    树莓pico如何入门?

    树莓pico如何入门?
    发表于 10-13 08:11

    微控制开发板Raspberry Pi Pico

    树莓基金会最新发布一款低成本、高性能的微控制开发板Raspberry Pi Pico,新产品相比普通
    发表于 10-29 07:33

    树莓Pico的相关资料分享

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布一款低成本、高性能的微控制开发板Raspberry Pi Pico,新产品相
    发表于 11-03 08:44

    使用树莓Pico开发板的一些思考与应用实践资料分享

    本博文根据树莓基金会2021年1月21日公开的两部最新官方英文技术文献[1]、[2]以及博主最近使用树莓Pico
    发表于 11-12 06:07

    树莓Pico的相关资料推荐

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制开发板Raspberry Pi Pico,新产品相比普通
    发表于 02-07 07:37

    【合宙Air551G双频定位开发板试用体验】树莓Pico与Air551G双剑合璧

    Air551G双频定位开发板试用体验】入门使用及基础知识普及,了解Air551G双频定位开发板的基本试用,确保已经能够正常获取定位信息:然后,就是我们的主角了:分别为Air551G双频定位开发板模块,
    发表于 03-31 14:38

    树莓PICO:使用rt-thread micropython软件包联网获取天气

    1、在树莓PICO上实现http请求demo  项目描述  本项目使用树莓PICO
    发表于 11-14 16:19

    【BPI-Pico-RP2040 开发板】+MicroPython初体验

    等等。开发环境搭建通过了解,可以通过很多IDE进行MicroPython开发,本次使用树莓推荐的Thonny IDE。将开发板断电,按下B
    发表于 03-18 18:42

    基于树莓派的音频频谱图可视化设备

    方案介绍使用 Raspberry Pi Pico、数字麦克风和 LCD 显示器创建实时音频频谱图可视化器。本项目将介绍如何使用带有外部数字麦克风和 TFT LCD 显示屏的Raspbe
    发表于 12-23 10:51 3次下载