色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

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

上海晶珩電子科技有限公司 ? 2025-03-25 09:46 ? 次閱讀

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

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

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

該算法背景介紹

2018年,Jean-Marc Valin 發表了一篇關于實時全帶語音增強的混合DSP/深度學習方法的論文。本文介紹了如何使用基于遞歸神經網絡(RNN)的ML模型來抑制音頻源中的噪聲。如果您有興趣了解有關該算法的更多信息,請閱讀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 個特征被用作神經網絡的輸入,神經網絡會計算出 22 個頻段的增益。計算出的增益可應用于原始音頻信號,生成去噪版本。神經網絡還會輸出 "語音活動檢測 "輸出,該輸出顯示輸入信號中存在語音的預測置信度,其值介于 0 和 1 之間。

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

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

移植和基準測試算法

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 文件創建了一個新的 CMake 目標庫。對 denoise.c 稍作修改,以便在 biquad 函數中使用單精度浮點計算,并使用 log10f(...) 和 sqrtf(...) 代替 log10(...) 和 sqrt(...) 函數。然后,可以將該庫集成到一個基準測試應用程序中,調用 rrnoise_create(...)函數初始化模型,然后再測量 rnnoise_process_frame(...) 函數處理 480 個樣本所需的時間。要將此基準測試應用程序部署到 Raspberry Pi Pico 1 或 Pico 2 板上,首先要遵循 "Raspberry Pi Pico 入門 "C/C++ SDK 指南的第 2 節和第 9 節,然后運行以下命令來構建 .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 板上的基準測試結果:

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 毫秒內完成 rnnoise_process_frame(...)函數。Pico 2 的基準結果需要 22.1 毫秒,對于 48 kHz 音頻來說還不夠快,但對于處理采樣率為 16 kHz 的音頻來說已經足夠快了,要求在 30 毫秒內完成音頻處理。denoise.c 中的 eband5ms 變量可以輕松修改,以調整處理 16 kHz 數據的算法。該變量控制 22 個頻段的起始范圍。調整的方法是將原始值乘以 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 連續循環接收 480 個 16 位音頻樣本,使用去噪算法對其進行處理,然后通過 USB 傳輸經過去噪處理的樣本。在個人電腦上,可以使用 serial_denoise.py Python 腳本從文件中發送 16 位、16 千赫的原始音頻,并將去噪音頻保存到文件中。這些原始值可導入 Audacity 等應用程序,用于可視化和回放。下面是一個例子:第一軌是原始音頻(噪音),下面的第二軌是在 Pico 2 上去噪后的版本。

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

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

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

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

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

硬件

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

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

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

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

項目接線圖

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

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

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

軟件

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

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

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

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

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

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

記錄 Pico 2 電路板使用 RNNoise VAD 輸出通過 PWM 控制內置 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作為記錄設備

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

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

錄音軌道截圖。

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

下一步工作

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

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

    關注

    66

    文章

    8478

    瀏覽量

    133803
  • Raspberry Pi
    +關注

    關注

    2

    文章

    615

    瀏覽量

    22723
收藏 0人收藏

    評論

    相關推薦

    基于Raspberry Pi 5的情感機器人設計

    Raspberry Pi 5相較于上一代搭載了更強的處理器和硬件性能,為情感機器人的開發提供了前所未有的可能性。其支持多任務處理和實時計算,為語音交互和情感判斷提供了堅實的基礎。此外配
    的頭像 發表于 02-26 14:28 ?877次閱讀
    基于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5的情感<b class='flag-5'>機器</b>人設計

    開源項目!基于樹莓派制作一個番茄鐘機器人!

    在當今快節奏的世界中,保持高效同時維持專注是一項挑戰。遇見Pomodoro Bot,這款基于桌面設計、旨在革新您工作方式的伙伴。它利用Viam多功能機器人平臺構建,并由Raspberry P
    發表于 02-14 11:32

    使用適用于 Raspberry Pi Pico 的 Kitronik 迷你控制器控制您的 XRP 機器

    篇關于將此控制器與他們的 Pico 自主機器人平臺一起使用的精彩文章,該平臺也是一個基于 Raspberry Pi Pico
    的頭像 發表于 01-26 17:37 ?339次閱讀
    使用適用于 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> 的 Kitronik 迷你控制器控制您的 XRP <b class='flag-5'>機器</b>人

    Raspberry Pi樹莓派新手指南

    電子發燒友網站提供《Raspberry Pi樹莓派新手指南.pdf》資料免費下載
    發表于 12-23 17:05 ?2次下載

    如何在低功耗MCU實現人工智能和機器學習

    人工智能 (AI) 和機器學習 (ML) 的技術不僅正在快速發展,還逐漸被創新性地應用于低功耗的微控制器 (MCU) 中,從而實現邊緣AI/ML
    的頭像 發表于 12-17 16:06 ?679次閱讀

    Banana Pi BPI-CanMV-K230D-Zero :AIoT 應用的 Kendryte K230D RISC-V

    處理單元 (KPU) 用于 AI 計算。它采用 Raspberry Pi Zero或Raspberry Pi Zero 2W板的外形尺寸,面
    發表于 12-05 09:19

    Raspberry Pi Pico 2 W 發布

    樹莓派官方今日宣布推出支持無線連接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售價 7 美元, 較此前的有線版本高出
    的頭像 發表于 11-25 18:25 ?854次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> <b class='flag-5'>2</b> W 發布

    Raspberry Pi Pico 2

    、可選的RISC?V內核、增強的安全特性,以及升級的接口功能。該器件由RP235x微控制器平臺提供支持,此平臺也由Raspberry Pi設計。Pico
    的頭像 發表于 11-25 15:10 ?1015次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> <b class='flag-5'>2</b>

    Banana Pi M5 與 Raspberry Pi 4 – 基準測試

    Banana Pi M5 基準測試已成為我的網站上最受歡迎的作品之一,而且似乎人們真正想看到的是它與其 Raspberry 口味的表親之間的直接比較,所以這里就是 Banana Pi M5 與
    的頭像 發表于 10-28 10:28 ?726次閱讀
    Banana <b class='flag-5'>Pi</b> M5 與 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4 – 基準測試

    AI深度噪音抑制技術

    AI深度噪音抑制技術通過深度學習算法實現了對音頻中噪聲的智能消除,它在音頻清晰度提升、環境適應性
    的頭像 發表于 10-17 10:45 ?1246次閱讀
    AI深度<b class='flag-5'>噪音</b><b class='flag-5'>抑制</b>技術

    e絡盟開售Raspberry Pi新款產品

    安富利旗下全球電子與工業系統設計、維護和維修產品及技術分銷商 e絡盟 現為客戶供應小巧、快速、多功能Raspberry Pi Pico 2
    的頭像 發表于 10-12 16:57 ?893次閱讀

    使用串行連接通過 Raspberry Pi 增強您的 XRP 項目

    2024-08-21 |作者:Shruti Garg [機器人套件] XRP 是一款出色的機器人,具有許多不同的功能,使其成為所有用戶的絕佳學習工具。對于需要更多 I/O 或計算機能力
    的頭像 發表于 10-02 15:28 ?426次閱讀
    使用串行連接通過 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 增強您的 XRP 項目

    e絡盟發售功能強大的入門級 Raspberry Pi 5 2GB

    安富利旗下全球電子元器件產品與解決方案分銷商e絡盟日前開售極具性價比的全新 Raspberry Pi 5 2GB。
    的頭像 發表于 09-02 10:39 ?488次閱讀
    e絡盟發售<b class='flag-5'>功能</b>強大的入門級 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 <b class='flag-5'>2</b>GB

    名單公布!樹莓派5(Raspberry Pi 5)開發板免費試用!!!

    1.2 的 VideoCore VII GPU,散熱效果也更好。攝像頭、顯示屏和 USB 接口也有很大改進。Raspberry Pi 5 使用的電源管理集成電路集成了實時時鐘和紐扣
    發表于 06-27 15:40

    開源項目!設計一款智能手語翻譯眼鏡

    學習功能,使得設備能夠識別手語并將其轉換為語音輸出。項目還包括了音頻放大模塊和3D打印的眼鏡框架,整體裝配簡潔高效。 未來,項目將致力于提升設備的解釋能力,包括更復雜的手勢和方向識別,以
    發表于 05-20 15:59
    主站蜘蛛池模板: 日本熟妇乱妇熟色在线电影 | 久草精品视频 | 各种场合肉H校园1V1 | 久久亚洲人成国产精品 | 色青青草原桃花久久综合 | 总攻催眠受的高h巨肉np | 乱辈通奷XXXXXHD猛交 | 欧美黑白配性xxxxx | 亚洲国产在线综合018 | 色宅男看片午夜大片免费看 | 国内2018年午夜福利5678 | 久久综合给合久久狠狠狠… | 成年免费三级视频 | 国产亚洲精品AV片在线观看播放 | 国产最新地址 | 色综合伊人色综合网站中国 | 人与畜禽CROPROATION免费 人淫阁 | 又粗又大又爽又黄的免费视频 | 色哟哟网站入口在线观看视频 | 国产精品久久欧美一区 | 51精品国产AV无码久久久密桃 | 97国产在线观看 | 日产精品久久久久久久蜜殿 | 暖暖日本大全免费观看 | 国产精品美女久久久久AV超清 | 午夜国产福利 | xxx性欧美在线观看 xxx性欧美在线 | 一边亲着一面膜下的免费过程 | 97资源总站(中文字幕) | 一本一本之道高清在线观看 | 国产精品A久久久久久久久 国产精品A久久777777 | 在线观看亚洲AV无码每日更新 | 91avcom| 国产成人无码一区AV在线观看 | 不良网站进入窗口软件下载免费 | 经典WC女厕所里TV | 国产精品香蕉视频在线 | 午夜福利试看120秒体验区 | 女警被黑人20厘米强交 | 果冻传媒视频在线播放 免费观看 | 婷婷久久综合九色综合伊人色 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品