0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用樹莓派Pico開發(fā)板制作實時音頻光譜圖可視化器

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-10-24 10:49 ? 次閱讀

本期教程將會通過使用一塊帶有外置數(shù)字麥克風(fēng)和 TFT LCD 顯示屏的樹莓派 Pico 開發(fā)板制作一個實時音頻光譜圖可視化器。有了它,你就可以將你周圍環(huán)境的實時聲音可視化表現(xiàn)出來!下圖是該工具運行時的預(yù)覽圖。


fdf85b1e-7214-11ee-939d-92fbcf53809c.gif
這里使用到了 Adafruit PDM MENS 擴展板(使用方法) 。我們還會使用一些常見的數(shù)字信號處理(DSP)技術(shù),直接在樹莓派 Pico 上處理數(shù)字音頻數(shù)據(jù)而不僅通過 USB 線將數(shù)字音頻數(shù)據(jù)傳輸?shù)?PC 端。通過使用 DSP 技術(shù),將轉(zhuǎn)換后的音頻信號在帶有 Micro SD 卡擴展板的 Adafruit 2.0 的 320×240 彩色 IPS TFT 顯示屏上實時顯示。

組件清單

樹莓派 Pico × 1
Adafruit PDM MEMS 麥克風(fēng)擴展板 × 1
帶有 micro SD 卡擴展板的 320×240 彩色 IPS TFT 顯示屏 × 1
全尺寸無焊面包板 × 1
公對公跳線 × 20
烙鐵 × 1
焊絲 × 若干

什么是音頻頻譜圖?

音頻頻譜圖被用于將由振幅表示的實時音頻信號可視化為實時音頻信號的頻率的格式。

在下圖中,左側(cè)顯示的是原始音頻信號,右側(cè)顯示的則是音頻信號的頻譜圖。

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

通過頻譜圖中的顏色強度,你可以看出音頻信號的振幅與其頻率之間是存在直接關(guān)聯(lián)性的。

有關(guān)用于創(chuàng)建音頻頻譜圖的 DSP 技術(shù)的更詳細概述,可查閱 Fixed-point DSP for Data Scientists 。

頻譜圖也用于基于機器學(xué)習(xí)(ML)的音頻系統(tǒng)中,將音頻信號轉(zhuǎn)換為一張頻譜圖,以便使用計算機視覺技術(shù)對音頻信號中的 2D“圖像表示”進行界定。這在現(xiàn)實生活中例子有音頻或語音識別、關(guān)鍵詞識別。

示意圖

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

代碼

代碼文件在這里可以下載
https://make.quwj.com/project/471

制作途徑

若想創(chuàng)建頻譜圖并將其實時在 LCD 屏幕上顯示,請按照下面的步驟操作。
1、使用數(shù)字麥克風(fēng)收集 N 個音頻樣本。
2、將漢寧窗 (Hanning window)應(yīng)用在收集到的音頻樣本中。
3、使用上一步的輸入運行快速傅里葉變換 (RFFT)。
4、計算 RFFT 的幅度。
5、將每個 RFFT 幅度映射一個顏色值以顯示在 LCD 顯示器上。
6、在 LCD 上顯示新行。
7、滾動到新行并重復(fù)。

如果我們選擇 256 的 RFFT 大小,我們將有 128 個可用的幅度輸出并顯示在屏幕上,因為這小于顯示器每行的 240像素,所以我們可以顯示每行兩次,以最大化這塊屏幕的視覺可視性。

為了實現(xiàn)更快的視覺響應(yīng),我們可以一次從麥克風(fēng)中采集 64 個新的音頻樣本(而不是等待那 256 個新音頻樣本),并將它們與先前最新的 192 個(256-64)樣本在每個循環(huán)中相結(jié)合。在 16 kHz的采樣率下,我們將有 64/16000秒來執(zhí)行所有計算并更新顯示。這樣一來,每一次迭代就只需4毫秒了。

我們將使用 Pico 專屬麥克風(fēng)庫 microphone-library-for-pico ,從數(shù)字麥克風(fēng)捕獲數(shù)據(jù)。
Arm 的 CMSIS-DSP 庫,將被用于實時處理音頻數(shù)據(jù)。

CMSIS-DSP 針對 Arm Cortex-M 處理器進行了優(yōu)化,包括基于 Raspberry Pi Pico 的RP2040 微控制器MCU)的 Arm Cortex-M0+。Pico 的 ST7789 庫將用于驅(qū)動 ST7789 TFT 顯示器的輸出。

硬件設(shè)置

將公頭焊接在你的樹莓派 Pico 板,Adafruit PDM MEMS 麥克風(fēng)擴展板和帶有 micro SD 卡擴展板的 2 英寸320×240 彩色 IPS TFT 顯示器上,以便將它們插入面包板中。有關(guān)將 GPIO 引腳焊接至樹莓派 Pico。

待兩者被焊接好后,請將它們放置在試驗板上,并按下圖所示設(shè)置接線。

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

布線設(shè)置的表格圖

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

完成后,你的面包板應(yīng)該是這樣的。

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

設(shè)置 Pico SDK 開發(fā)環(huán)境

首先需要使用 Raspberry Pi 的 Pico SDK 和所需的工具鏈設(shè)置你的電腦。參考:
https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf

本指南的第 2.1 節(jié)可以被用于所有的操作系統(tǒng)。下面是各系統(tǒng)的專屬操作章節(jié)。
Linux:2.2章節(jié)
– macOS:9.1章節(jié)
– Windows:9.2章節(jié)

獲取和編譯 Pico-audio-spectrogram 應(yīng)用

確保 PICO SDK 環(huán)境變量已設(shè)置。

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

創(chuàng)建生成目錄并將目錄更改為:

mkdir build
cd build

運行camake和make并進行編譯:

cmake .. -DPICO_BOARD=pico
make

按住主板上的 BOOTSEL 按鈕,同時使用 USB 電纜將主板插入你的電腦中。

將 audio_spectrogram.uf2 文件復(fù)制到已安裝的樹莓派 Pico 引導(dǎo)的 ROM 磁盤:

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

測試一下

你現(xiàn)在可以試著發(fā)出一些聲音,比如說幾個不同的單詞,并在頻譜圖上看看會顯示出什么。

以下是發(fā)出“yes”一詞在顯示屏上的顯示的樣式。

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

同樣的,這是發(fā)出“no”一詞在顯示屏上顯示的樣式

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

“ESC-50:環(huán)境聲音分類數(shù)據(jù)集”中的各種聲音示例如下圖所示:

總結(jié)

本指南介紹了如何使用一個帶有外部數(shù)字麥克風(fēng)和帶 TFT LCD 的 Raspberry Pi Pico 板制作實時音頻頻譜圖可視化工具。開始時,本項目使用了 Pico 專屬麥克風(fēng)庫使麥克風(fēng)一次捕獲64個音頻樣本,之后又使用 Arm 的 CMSIS-DSP 庫將音頻樣本轉(zhuǎn)換為頻譜圖。

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349914
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4405

    瀏覽量

    166930
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4436

    瀏覽量

    74051
  • TFT
    TFT
    +關(guān)注

    關(guān)注

    10

    文章

    381

    瀏覽量

    110880
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1688

    瀏覽量

    105456

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    樹莓Pico迷你開發(fā)板及所使用的RP2040 MCU芯片有哪些特性

    Raspberry Pi Pico是什么?樹莓Pico迷你開發(fā)板及所使用的RP2040 MCU芯片有哪些特性?
    發(fā)表于 09-14 06:50

    微控制開發(fā)板Raspberry Pi Pico

    樹莓基金會最新發(fā)布一款低成本、高性能的微控制開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通
    發(fā)表于 10-29 07:33

    樹莓Pico的相關(guān)資料分享

    關(guān)注、星標公眾號,直達精彩內(nèi)容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制開發(fā)板Raspberry Pi Pico,新產(chǎn)品相
    發(fā)表于 11-03 08:44

    使用樹莓Pico開發(fā)板的一些思考與應(yīng)用實踐資料分享

    本博文根據(jù)樹莓基金會2021年1月21日公開的兩部最新官方英文技術(shù)文獻[1]、[2]以及博主最近使用樹莓Pico
    發(fā)表于 11-12 06:07

    樹莓Pico的相關(guān)資料推薦

    1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通
    發(fā)表于 02-07 07:37

    樹莓也出MCU了?樹莓Pico來了!

    關(guān)注、星標公眾號,直達精彩內(nèi)容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制開發(fā)板Raspberry Pi Pico,新產(chǎn)品相
    發(fā)表于 10-28 10:36 ?11次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>也出MCU了?<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>來了!

    樹莓Pico開發(fā)板硬件擴展接口及電源模塊解析

    本博文根據(jù)樹莓基金會2021年1月21日公開的兩部最新官方英文技術(shù)文獻[1]、[2]以及博主最近使用樹莓Pico
    發(fā)表于 11-07 09:06 ?15次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>開發(fā)板</b>硬件擴展接口及電源模塊解析

    樹莓Pico:僅4美元的MCU

    1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通
    發(fā)表于 12-04 13:06 ?13次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:僅4美元的MCU

    基于樹莓音頻頻譜可視化設(shè)備

    Pico創(chuàng)建實時音頻頻譜可視化。它將讓您看到
    發(fā)表于 12-23 10:51 ?3次下載

    樹莓Pico開發(fā)板擴展ESP01S無線WiFi模塊通信實踐

    介紹樹莓Pico開發(fā)板擴展ESP01S無線模塊建立WiFi連接,并采用AT命令和MicroPython語言實現(xiàn)樹莓
    發(fā)表于 05-31 15:59 ?1次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>開發(fā)板</b>擴展ESP01S無線WiFi模塊通信實踐

    9.9元包郵!合宙RP2040開發(fā)板,兼容樹莓PICO

    體驗? ? 9.9元合宙RP2040開發(fā)板 CORE-RP2040 ——合宙推出的9.9家族又一款新品,采用樹莓RP2040芯片作為核心,引腳定義兼容官方PICO
    的頭像 發(fā)表于 08-07 12:05 ?3847次閱讀

    合宙RP2040開發(fā)板,兼容樹莓PICO

    體驗?9.9元合宙RP2040開發(fā)板CORE-RP2040——合宙推出的9.9家族又一款新品,采用樹莓RP2040芯片作為核心,引腳定義兼容官方PICO
    的頭像 發(fā)表于 08-08 08:05 ?3067次閱讀
    合宙RP2040<b class='flag-5'>開發(fā)板</b>,兼容<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>PICO</b>

    linux開發(fā)板樹莓的區(qū)別

    定義和用途 Linux開發(fā)板:Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式開發(fā)板,通常用于工業(yè)自動、物聯(lián)網(wǎng)、智能家居等領(lǐng)域。 樹莓
    的頭像 發(fā)表于 08-30 15:34 ?632次閱讀

    樹莓和arm開發(fā)板的區(qū)別

    樹莓(Raspberry Pi)和ARM開發(fā)板都是基于ARM架構(gòu)的微型計算機,但它們之間存在一些關(guān)鍵區(qū)別。 一、歷史背景 樹莓(Rasp
    的頭像 發(fā)表于 08-30 15:36 ?695次閱讀

    ARM開發(fā)板樹莓的比較

    處理 ARM開發(fā)板通常采用不同的ARM處理,如Cortex-A系列、Cortex-M系列等,而樹莓則主要使用博通的ARM處理
    的頭像 發(fā)表于 11-05 11:11 ?129次閱讀