91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

Raspberry Pi Pico 2 上實現(xiàn):實時機器學習(ML)音頻噪音抑制功能

上海晶珩電子科技有限公司 ? 2025-03-25 09:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Arm 公司的首席軟件工程師 Sandeep Mistry 為我們展示了一種全新的巧妙方法:在 Raspberry Pi Pico 2 上如何將音頻噪音抑制應用于麥克風輸入。機器學習(ML)技術(shù)徹底改變了許多軟件應用程序的開發(fā)方式。應用程序開發(fā)人員現(xiàn)在可以為所需系統(tǒng)整理包含大量輸入和輸出示例的數(shù)據(jù)集,然后使用這些數(shù)據(jù)集來訓練 ML 模型。在訓練過程中,ML 模型從輸入和輸出中學習模式。訓練好的模型會被部署到設備上,這些設備會對來自真實世界的輸入進行推理,并使用 ML 模型的預測輸出來執(zhí)行一個或多個操作??梢圆渴鸬交?a target="_blank">微控制器的設備(如新 Pico 2 板上使用的 Arm Cortex-M33 微控制器 RP2350)上的小型 ML 模型只需要幾千字節(jié)的內(nèi)存。將 ML 模型部署到微控制器上可以降低系統(tǒng)的延遲,因為數(shù)據(jù)是在靠近輸入數(shù)據(jù)源的設備上處理的。這篇博客將深入探討如何將基于現(xiàn)有 ML 的音頻噪音抑制算法部署到新 Pico 2 板上使用的 RP2350 微控制器。RP2350 的雙核 Arm Cortex-M33 CPU 使應用程序開發(fā)人員能夠部署更多計算密集型應用程序,這些應用的性能超過了原始 Raspberry Pi Pico 板中使用的 RP2040 微控制器。然后,該算法將被集成到我為原始 Pico 板開發(fā)的 USB 麥克風應用程序中。最初的應用程序從數(shù)字脈沖密度調(diào)制(PDM)麥克風捕獲數(shù)據(jù),并將其處理成與 USB 音頻標準兼容的格式,通過 USB 傳輸。

07c133f2-091b-11f0-9434-92fbcf53809c.png

Hackster.io上使用Raspberry Pi Pico指南創(chuàng)建USB麥克風的屏幕截圖

該算法背景介紹

2018年,Jean-Marc Valin 發(fā)表了一篇關(guān)于實時全帶語音增強的混合DSP/深度學習方法的論文。本文介紹了如何使用基于遞歸神經(jīng)網(wǎng)絡(RNN)的ML模型來抑制音頻源中的噪聲。如果您有興趣了解有關(guān)該算法的更多信息,請閱讀Jean-Marc的RNNoise:學習噪聲抑制頁面。該頁面涵蓋了算法的詳細信息,并包括交互式示例。該項目的源代碼可在RNNoise Git存儲庫中找到。

07f158d4-091b-11f0-9434-92fbcf53809c.png

RNNoise的屏幕截圖:學習噪聲抑制頁面在高層次上,該算法通過將信號分成 22 個頻段,從 10 毫秒的 48 kHz 音頻源中提取出 42 個特征。

08266d30-091b-11f0-9434-92fbcf53809c.png

屏幕截圖:RNNoise的“定義問題”部分:學習噪音抑制頁面然后,42 個特征被用作神經(jīng)網(wǎng)絡的輸入,神經(jīng)網(wǎng)絡會計算出 22 個頻段的增益。計算出的增益可應用于原始音頻信號,生成去噪版本。神經(jīng)網(wǎng)絡還會輸出 "語音活動檢測 "輸出,該輸出顯示輸入信號中存在語音的預測置信度,其值介于 0 和 1 之間。

08550082-091b-11f0-9434-92fbcf53809c.png

屏幕截圖:RNNoise的“深度架構(gòu)”部分:學習噪聲抑制頁面

移植和基準測試算法

RNNoise 項目的原始 C 代碼可以集成到使用 Raspberry Pi Pico SDK 的 CMake 項目中。移植的所有源代碼都可以在 GitHub 上的 rnnoise-examples-for-pico-2 代碼庫中找到。我們使用 RNNoise 項目 v0.1.1 中的 celt_lpc.c、denoise.c、kiss_fft.c、pitch.c、rnn.c 和 rnn_data.c 文件創(chuàng)建了一個新的 CMake 目標庫。對 denoise.c 稍作修改,以便在 biquad 函數(shù)中使用單精度浮點計算,并使用 log10f(...) 和 sqrtf(...) 代替 log10(...) 和 sqrt(...) 函數(shù)。然后,可以將該庫集成到一個基準測試應用程序中,調(diào)用 rrnoise_create(...)函數(shù)初始化模型,然后再測量 rnnoise_process_frame(...) 函數(shù)處理 480 個樣本所需的時間。要將此基準測試應用程序部署到 Raspberry Pi Pico 1 或 Pico 2 板上,首先要遵循 "Raspberry Pi Pico 入門 "C/C++ SDK 指南的第 2 節(jié)和第 9 節(jié),然后運行以下命令來構(gòu)建 .uf2 應用程序并部署到板上:

git clone --recurse-submodules \ https://github.com/ArmDeveloperEcosystem/rnnoise-examples-for-pico-2.gitcd rnnoise-examples-for-pico-2mkdir buildcmake ... -DPICO_BOARD=pico2make rnnoise-benchmark

編譯完成后,可以通過按住電路板上的白色 BOOTSEL 按鈕將 examples/benchmark/rnnoise-benchmark.uf2 文件部署到電路板上,同時將 USB 電纜插入計算機并將 .uf2 文件復制到 Pico 的 USB 磁盤上。
以下是 Pico 1 和 Pico 2 板上的基準測試結(jié)果:

Pico (RP2040) Cortex-M0+ @ 125 MHzPico 2 (RP2350) Cortex-M33 @ 150 MHz
rnnnoise_process_frame(...)372,644微秒22,093微秒

原始的 Pico 1大約需要372.6毫秒,而新的 Pico 2 需要22.1毫秒:這是電路板之間的16.87倍速度。

針對 16 kHz 音頻修改算法

電路板要以 48 kHz 的采樣率處理 480 個音頻樣本,就必須在 0.01 秒(480 / 48,000)或 10 毫秒內(nèi)完成 rnnoise_process_frame(...)函數(shù)。Pico 2 的基準結(jié)果需要 22.1 毫秒,對于 48 kHz 音頻來說還不夠快,但對于處理采樣率為 16 kHz 的音頻來說已經(jīng)足夠快了,要求在 30 毫秒內(nèi)完成音頻處理。denoise.c 中的 eband5ms 變量可以輕松修改,以調(diào)整處理 16 kHz 數(shù)據(jù)的算法。該變量控制 22 個頻段的起始范圍。調(diào)整的方法是將原始值乘以 3(因為 16 kHz 音頻采集樣本的時間是 48 kHz 音頻的 3 倍),并將最大起始位置設為 120。以下是原始值:static const opus_int16 eband5ms[] = {
/*0 200 400 600 800 1k 1.2 1.4 1.6 2k 2.4 2.8 3.2 4k 4.8 5.6 6.8 8k 9.6 12k 15.6 20k*/
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
};以及用于16 kHz音頻的修改值:static const opus_int16 eband5ms[] = {
/*0 200 400 600 800 1k 1.2 1.4 1.6 2k 2.4 2.8 3.2 4k 4.8 5.6 6.8 8k 9.6 12k 15.6 20k*/
0, 3, 6, 9, 12, 15, 18, 21, 24, 60, 36, 42, 48, 60, 72, 84, 102, 120, 120, 120, 120, 120
};串行示例可編譯并部署到電路板上,以測試修改后的算法。該示例通過 USB 連續(xù)循環(huán)接收 480 個 16 位音頻樣本,使用去噪算法對其進行處理,然后通過 USB 傳輸經(jīng)過去噪處理的樣本。在個人電腦上,可以使用 serial_denoise.py Python 腳本從文件中發(fā)送 16 位、16 千赫的原始音頻,并將去噪音頻保存到文件中。這些原始值可導入 Audacity 等應用程序,用于可視化和回放。下面是一個例子:第一軌是原始音頻(噪音),下面的第二軌是在 Pico 2 上去噪后的版本。

0897d7b8-091b-11f0-9434-92fbcf53809c.png

在Audacity應用程序的兩個音軌的屏幕截圖。

頂部:原始音頻。底部:音頻的去音版本。

我選擇了一個噪聲明顯降低的區(qū)域。到目前為止一切順利;該算法已通過驗證,可在電路板上通過 USB 從個人電腦串流 16 kHz 音源!

將算法集成到USB麥克風應用程序中最初為 Pico 1 開發(fā)的 USB 麥克風應用程序現(xiàn)在可以通過板載去噪功能得到增強。

硬件

此應用程序需要以下硬件:

  • Raspberry Pi Pico 2 主板
  • Adafruit PDM MEMS 麥克風接口
  • 半尺寸試驗板
  • 跳線
  • 滑動開關(guān)(可選)
  • 觸覺按鈕(可選)

可選的滑動開關(guān)將用作切換開關(guān),以便在運行時禁用或啟用噪聲抑制處理,而可選的輕觸開關(guān)則為重置電路板提供了方便。連接硬件如下:

08c4d6a0-091b-11f0-9434-92fbcf53809c.png

項目接線圖

Raspberry Pi Pico 2PDM MEMS 麥克風接口滑動開關(guān)(可選)觸覺按鈕(可選)
3V3(輸出)3V
GNDGNDSEL中間針底部針
RUN頂部針
GPIO21DAT
GPIO22CLK
GPIO17底部針

接線完成后,你的試驗板將看起來像這樣:

08f6d06a-091b-11f0-9434-92fbcf53809c.jpg

軟件

應用程序?qū)⑹褂?microphone-library-for-pico 從采樣率為 16 kHz 的 PDM 麥克風采集 480 個 16 位采樣。該庫將 RP2350 的可編程 I/O (PIO) 和直接內(nèi)存訪問 (DMA) 功能與 OpenPDM2PCM 庫相結(jié)合,將原始 PDM 數(shù)據(jù)轉(zhuǎn)換為脈沖編碼調(diào)制 (PCM) 格式。16 位 PCM 數(shù)據(jù)被轉(zhuǎn)換為 32 位浮點,并使用 RNNoise 算法進行去噪。然后,將去噪幀轉(zhuǎn)換為 16 位整數(shù),并使用 TinyUSB 庫通過 USB 發(fā)送。USB 傳輸每 1 毫秒發(fā)送 16 個去噪采樣。

091d0190-091b-11f0-9434-92fbcf53809c.png

帶去噪功能的 USB 麥克風框圖

RP2350 上兩個 Cortex-M33 內(nèi)核都用于此應用。內(nèi)核 1 從 PDM 麥克風捕獲原始數(shù)據(jù),對其進行過濾和去噪處理。內(nèi)核 0 利用 TinyUSB 庫和 RP2350 的 USB 接口通過 USB 傳輸去噪數(shù)據(jù)。

RNNoise 模型的語音活動檢測輸出將通過脈寬調(diào)制 (PWM) 顯示在 Pico 2 的內(nèi)置 LED 上。當 VAD 輸出接近 1.0 時,LED 將變亮;當接近 0.0 時,LED 將熄滅。

093c9a6e-091b-11f0-9434-92fbcf53809c.gif

記錄 Pico 2 電路板使用 RNNoise VAD 輸出通過 PWM 控制內(nèi)置 LED 亮度的情況應用程序的源代碼可在 rnnoise-examples-for-pico-2 GitHub 代碼庫的 examples/usb_pdm_microphone 文件夾中找到。該應用程序的編譯方式與基準測試程序類似,使用以下 make 命令:make rnnoise_usb_pdm_microphone編譯完成后,按住 BOOTSEL 按鈕并重置電路板后,即可將 examples/usb_pdm_microphone/rnnoise_usb_pdm_microphone.uf2 文件復制到 Pico 2 的 USB 磁盤中。

測試

應用程序加載到電路板后,可以使用 Audacity 測試音頻錄制,方法是首先單擊音頻設置按鈕 -> 重新掃描音頻設備,然后單擊音頻設置按鈕 -> 錄音設備 -> MicNode,再單擊錄音按鈕。

09577e7e-091b-11f0-9434-92fbcf53809c.png

在Audacity中選擇MicNode作為記錄設備

如果連接了可選的滑動開關(guān),則可以通過將開關(guān)滑向 Pico 2 的 USB 接口,來禁用噪聲抑制功能,然后通過將開關(guān)滑離 USB 接口來重新啟用噪聲抑制功能。

下面錄制的演示視頻將 Pico 2 用作 USB 麥克風,首先關(guān)閉噪聲抑制功能,然后啟用噪聲抑制功能后使用相同的輸入。請觀看并聆聽噪聲抑制算法的結(jié)果!
禁用去噪后的語音和風噪錄音
已啟用去噪功能的語音和風噪錄音099648fc-091b-11f0-9434-92fbcf53809c.png

錄音軌道截圖。

上軌:禁用去噪功能;下軌:啟用去噪功能

下一步工作

本博客演示了如何利用 Raspberry Pi Pico 2 的 Arm Cortex-M33 CPU 的額外計算能力,使用 ML 模型對從 PDM 麥克風捕獲的 16 kHz 的 16 位實時音頻數(shù)據(jù)進行去噪處理。去噪算法利用了 Cortex-M33 的浮點運算單元 (FPU),運行速度比原始 Pico 板上的 Cortex-M0+ 快 16.87 倍。該應用利用一個 CPU 捕捉、過濾和去噪數(shù)據(jù),另一個 CPU 通過 USB 將音頻數(shù)據(jù)傳輸?shù)?PC。下一步,您可以修改應用程序,在通過 USB 向個人電腦發(fā)送降噪數(shù)據(jù)之前添加自動增益控制 (AGC)。另外,去噪數(shù)據(jù)也可以直接在電路板上使用,作為另一種數(shù)字信號處理 (DSP) 算法或 ML 模型的輸入,在核心 0 上運行,而不是 USB 棧。

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

    關(guān)注

    66

    文章

    8553

    瀏覽量

    136940
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    2

    文章

    622

    瀏覽量

    24018
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Banana Pi BPI-CM6 計算模塊將 8 核 RISC-V 處理器帶入 CM4 外形尺寸

    富的 I/O 解決方案完美結(jié)合,在一個小型封裝中提供了以往需要多個開發(fā)板才能實現(xiàn)功能。此外,由于它兼容現(xiàn)有的 CM4 和 CM5 載板,因此對于已經(jīng)身處 Raspberry Pi
    發(fā)表于 12-20 09:01

    探索RISC-V在機器人領(lǐng)域的潛力

    通信,listener終端能實時打印出talker發(fā)布的消息。這證明MUSE Pi Pro的ROS 2核心通信機制(如DDS)運行正常。 3. 實際應用嘗試:
    發(fā)表于 12-03 14:40

    Banana Pi BPI-CM6 – 一款與 Raspberry Pi CM4/CM5 載板兼容的 SpacemiT K1 RISC-V 系統(tǒng)模塊

    本的鏡像。 RISC-V 模塊的目標應用包括 NAS 系統(tǒng)、筆記本電腦、智能機器人、工業(yè)控制、AI 邊緣計算和自動化。雖然我們已經(jīng)見過許多基于 Arm 架構(gòu)、配備兼容 B2B 連接器的 Raspberry
    發(fā)表于 11-28 16:59

    語音芯片白噪音支持功能詳解:打造舒適音頻體驗的關(guān)鍵技術(shù) | 廣州唯創(chuàng)電子語音IC廠家

    前言:探索語音芯片的白噪音技術(shù)世界在現(xiàn)代電子設備日益普及的今天,語音芯片的功能創(chuàng)新正在不斷豐富著我們的日常生活體驗。作為專業(yè)的語音IC廠家,廣州唯創(chuàng)電子始終致力于音頻技術(shù)的創(chuàng)新研發(fā),其中白噪音
    的頭像 發(fā)表于 11-06 08:56 ?497次閱讀
    語音芯片白<b class='flag-5'>噪音</b>支持<b class='flag-5'>功能</b>詳解:打造舒適<b class='flag-5'>音頻</b>體驗的關(guān)鍵技術(shù) | 廣州唯創(chuàng)電子語音IC廠家

    Banana Pi BPI-R4 Lite:新型單板計算機比 Raspberry Pi 5 更具優(yōu)勢

    Banana Pi BPI-R4 Lite 現(xiàn)已上市。具體來說,這款單板計算機在 Youyeetoo 的售價約為 86 美元,但客戶在下單前請務必查看運輸條款和費用。這是一款單板計算機,有望成為
    的頭像 發(fā)表于 08-26 16:46 ?1425次閱讀
    Banana <b class='flag-5'>Pi</b> BPI-R4 Lite:新型單板計算機比 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 更具優(yōu)勢

    超小型Neuton機器學習模型, 在任何系統(tǒng)級芯片(SoC)上解鎖邊緣人工智能應用.

    nRF54L15)運行,其效率之高,也完全符合nRF52805 等空間最 有限的SoC 的限制,只占用幾千字節(jié)的非易失性存儲器(NVM)。這樣就可以在以前認為不可能的應用中增加 機器學習ML
    發(fā)表于 07-31 11:38

    邊緣計算中的機器學習:基于 Linux 系統(tǒng)的實時推理模型部署與工業(yè)集成!

    你好,旅行者!歡迎來到Medium的這一角落。在本文中,我們將把一個機器學習模型(神經(jīng)網(wǎng)絡)部署到邊緣設備,利用從ModbusTCP寄存器獲取的實時數(shù)據(jù)來預測一臺復古
    的頭像 發(fā)表于 06-11 17:22 ?995次閱讀
    邊緣計算中的<b class='flag-5'>機器</b><b class='flag-5'>學習</b>:基于 Linux 系統(tǒng)的<b class='flag-5'>實時</b>推理模型部署與工業(yè)集成!

    貿(mào)澤開售Raspberry Pi用于嵌入式和IIoT應用的RP2350微控制器

    RP2350 微控制器。RP2350建立在Raspberry PI RP2040的成功基礎(chǔ),旨在以實惠的價格提供更高的性能和安全性,非常適合嵌入式計算和工業(yè)物聯(lián)網(wǎng)應用。 ? Raspberr
    發(fā)表于 05-27 14:50 ?1506次閱讀

    如何在Raspberry Pi OS安裝SDK?

    Raspberry Pi OS 安裝 SDK
    發(fā)表于 04-30 06:45

    Made with KiCad(九十八):USB-C 的 Raspberry PiCo 2

    “ ?project-piCo,用 Type-C 替代 Micro USB 的 Pico 2。 ” KiCon Asia 2024 將于 2024 年 11 月 15~16 日在深圳舉行,報名已開啟
    的頭像 發(fā)表于 04-28 18:27 ?1127次閱讀
    Made with KiCad(九十八):USB-C 的 <b class='flag-5'>Raspberry</b> <b class='flag-5'>PiCo</b> <b class='flag-5'>2</b>

    NanoEdge AI Studio 面向STM32開發(fā)人員機器學習ML)技術(shù)

    NanoEdge? AI Studio*(NanoEdgeAIStudio)是一種新型機器學習ML)技術(shù),可以讓終端用戶輕松享有真正的創(chuàng)新成果。只需幾步,開發(fā)人員便可基于最少量的數(shù)據(jù)為其項目創(chuàng)建
    的頭像 發(fā)表于 04-22 11:09 ?1342次閱讀
    NanoEdge AI Studio 面向STM32開發(fā)人員<b class='flag-5'>機器</b><b class='flag-5'>學習</b>(<b class='flag-5'>ML</b>)技術(shù)

    如何在 Raspberry Pi 5 設置 Raspberry Pi AI Kit

    本指南將幫助您在RaspberryPi5安裝RaspberryPiAIKit。這將使您能夠使用HailoAI神經(jīng)網(wǎng)絡加速器運行rpicam-apps攝像頭演示。如果您在開始安裝人工智能套件之前需要幫助,本指南提供了安裝過程的分步圖片。
    的頭像 發(fā)表于 03-25 09:44 ?778次閱讀
    如何在 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 <b class='flag-5'>上</b>設置 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> AI Kit

    貿(mào)澤開售適用于AI和嵌入式應用的 全新Raspberry Pi Compute Module 5

    醫(yī)療監(jiān)控和其他嵌入式應用的功能。 ? Raspberry Pi CM5搭載了BCM2712四核Cortex? -A76 (Arm? v8) 64位片系統(tǒng) (SoC) 和VideoCo
    發(fā)表于 03-24 15:09 ?534次閱讀

    Raspberry Pi使用IR v11及OpenVINO? 2021.3后不兼容怎么辦?

    PYTHONPATH=\"$PWD\" && python export.py --weights--img 512 --include openvino 轉(zhuǎn)換后的 IR v11 模型與 Raspberry Pi
    發(fā)表于 03-06 07:14

    Raspberry Pi從源代碼構(gòu)建OpenVINO? ARM插件失敗了,怎么解決?

    Raspberry Pi* 從源代碼構(gòu)建OpenVINO? ARM 插件。 cmake -DCMAKE_BUILD_TYPE=Release -DOPENVINO_EXTRA_MODULES
    發(fā)表于 03-06 06:19