<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    16064

    瀏覽量

    344194
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4289

    瀏覽量

    164466
  • 顯示屏
    +關注

    關注

    28

    文章

    4260

    瀏覽量

    72800
  • TFT
    TFT
    +關注

    關注

    10

    文章

    375

    瀏覽量

    109890
  • 樹莓派
    +關注

    關注

    113

    文章

    1646

    瀏覽量

    104815

原文標題:樹莓派 Pico 實時聲音可視化顯示屏

文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【米爾-瑞米兼容樹莓擴展模塊-試用體驗】初始開發板_米爾-瑞米兼容樹莓擴展模塊

    兼容樹莓擴展模塊也有豐富的軟件支持: 為了讓大家對米爾-瑞米兼容樹莓擴展模塊有更多的了解
    發表于 04-29 11:42

    【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

    樹莓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次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>