1. 程式人生 > >AliOS Things 聲源定位應用演示

AliOS Things 聲源定位應用演示

調試 sensor dev display res 開發 分支 cat 並且

摘要: 1. 概述 利用麥克風陣列進行聲源定位在智能降噪、語音增強、語音識別等領域有廣泛應用和研究前景。本文介紹基於AliOS Things + STM32F413H Discovery開發板實現聲源定位算法集成和功能演示。

  1. 概述
    利用麥克風陣列進行聲源定位在智能降噪、語音增強、語音識別等領域有廣泛應用和研究前景。本文介紹基於AliOS Things + STM32F413H Discovery開發板實現聲源定位算法集成和功能演示。

聲源定位算法
本案例集成了STMicroelectronics的Acoustic_SL聲源定位算法。Acoustic_SL是STMicroelectronics開發的聲源定位算法,支持XCORR、GCC-PHAT、BMPH三種不同算法類型。本案例使用GCC-PHAT算法類型,算法基於到達時間差(TDOA)原理實現,通過測量聲音信號達到不同麥克風的時間差計算聲源方向。GCC-PHAT算法作為應用最為廣泛的聲位算法,數據計算量和資源消耗較小,並且具有一定的抗噪和抗混響能力。

  1. 環境搭建
    開發板:STM32F413H Discovery(附帶麥克風陣列板)
    手勢傳感器:Seeed Grove PAJ7620
    溫濕度傳感器:HTS221
    LED數碼管:Seeed Grove LED Bar

硬件說明:
使用STM32F413H作為主控芯片,提供音頻輸入接口、I2C接口、GPIO控制接口、顯示控制接口等。
STM32F413H內置的DFSDM模塊可以支持最多同時5路PDM數字麥克數據錄入,並經過硬件濾波將PDM數據轉換成PCM數據,降低了音頻軟件的復雜度和資源消耗。

硬件連接:

技術分享圖片

  1. 軟件編譯
    軟件:AliOS Things
    下載AliOS Things後,切換到developer分支。

執行如下命令編譯Application:
aos make sensordemo@stm32f413h-discovery

編譯成功後,使用下面命令燒錄鏡像:
aos upload sensordemo@stm32f413h-discovery

  1. 軟件介紹
    AliOS Things
    AliOS Things是面向IOT領域的輕量級物聯網嵌入式操作系統。AliOS Things啟動過程中,依次完成內核初始化、硬件資源初始化、功能組件初始化、外設驅動初始化。系統就緒後,通過用戶定義的application_start()函數進入應用程序。

創建聲位和音量顯示界面
在application_start()函數中調用display_init()創建LCD刷新任務、顯存刷新任務、定義顯示界面。

聲位顯示界面:
技術分享圖片

切換到該界面時,聲位識別算法開始運行,屏幕上指示當前聲音方位。測試時建議距離mic陣列水平距離30cm,高度和mic陣列盡量接近,可以獲得最佳效果。

音量顯示界面:
技術分享圖片

切換到該界面時,計算mic信號的大小並轉換成音量在屏上顯示音量指示條,即提供聲音強度檢測功能。

運行聲位算法
<1> 在application_start()函數中創建聲源定位task,在該task中繼續調用acoustic_sl_start()執行聲源定位功能。

<2> 在acoustic_sl_start()函數中調用DFSDM_Init()和HAL_DFSDM_FilterRegularStart_DMA()初始化並啟動DFSDM錄音程序。打開4路DFSDM濾波通道,獲取4個麥克風的PDM數據,經過內部處理轉換成PCM後通過DMA傳輸到緩存中。

<3> 調用acoustic_sl_init()庫函數初始化Acoustic_SL算法。這一步需要設置算法參數,例如配置算法類型、channel number、麥克風陣列間距以及識別角度最小單位、聲音檢測門限。

<4> DFSDM錄音程序每次分別從4個mic錄入512個采樣點的PDM數據數據,經過內部處理轉換成PCM後通過DMA傳輸到緩存中。

<5> 緩存數據到達後,對PCM數據進行簡單的High Pass濾波算法處理,然後調用AcousticSL_Data_Input()以每次16samples的大小送入算法後,觸發外部中斷,在中斷函數中再調用AcousticSL_Process()進行算法處理和聲位計算,得到代表聲音方位的角度信息。

<6> 根據角度的範圍可以確定麥克的位置,然後在顯示任務fb_refresh_task中根據麥克位置更新顯示界面。

麥克陣列采用2x2矩陣形式,通過這種布局方式可以實現360度聲音方位的識別。

另外,AcousticSL算法提供聲音檢測門限和識別角度最小單位兩個調試參數。可以根據需要修改參數,適應不同的環境條件和應用需求。

音量計算
通過手勢切換到該界面後,首先對DFSDM輸出的512個采樣點的pcm數據先計算均值,再進行對數計算,得到對應pcm數據的音量信息,同時根據音量信息在顯示任務fb_refresh_task刷新界面音量進度條。

  1. 應用演示
    視頻觀看:AliOS-Things聲源定位應用演示

  2. 更多
    參考AliOS Things手勢識別應用演示

原文鏈接

本文為雲棲社區原創內容,未經允許不得轉載。

AliOS Things 聲源定位應用演示