AliOS Things聲源定位應用演示

摘要: 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聲源定位應用演示

  1. 更多

參考AliOS Things手勢識別應用演示

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537766.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537766.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537766.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql 使用正則表達式

需求&#xff1a;匹配出姓名字段里非中文的 SELECT * FROM 表 WHERE REAL_NAME REGEXP ([\\u4e00-\\u9fa5]{1,20}|[a-zA-Z\\.\\s]{1,20}) ; 查詢結果如下

Android點擊返回鍵銷毀自己,Activity界面銷毀 軟鍵盤未收回

在項目開發過程中&#xff0c;界面包含EditText輸入框時&#xff0c;輸入內容時軟鍵盤彈起。但是此時我們調用界面中自定義的返回按鈕執行.finish()方法銷毀Activity后發現軟鍵盤并沒有跟隨關閉收回&#xff0c;參考了網上各種方法后&#xff0c;試驗總結出自己項目中可用的方案…

2、Collections操作(自定義類)的各種實現

2019獨角獸企業重金招聘Python工程師標準>>> 1、排序(sort) 要想實現排序&#xff0c;必須實現compare方法&#xff0c;這樣Collection才知道是怎樣的排序規則。普通的數據類型&#xff0c;比如&#xff1a;int 、String、long等都已經實現了Comparable接口&#xf…

Mysql sql語句積累

分組排序 #alter table zxfw_offline_qa add zx_number varchar(50) COMMENT 咨詢編號&#xff0c;提問日期提問順序 AFTER id;/* select (i : case when pre_consult_timeconsult_time then i 1 else 1 end ) rownum, qa.*,(pre_consult_time:consult_time) from zxfw_…

中綴表達式轉換成后綴表達式(只適用于加減乘除運算)

1 #include <iostream>2 #include <stack>3 #include <cctype>4 5 using namespace std;6 7 //獲取符號的優先級8 int getPriority(char c)9 { 10 int priority -1; 11 switch (c) { 12 case : 13 priority 1; 14 break; 15 …

android多接口請求參數,okhttp3 使用json參數post方式請求接口數據(android)

1. 谷歌自帶的json不支持像map一樣直接put字符串進去&#xff0c;所以先導入阿里的json包2. 創建json對象&#xff0c;并且放入所要請求的參數 //登錄 private void loginRequest() { String url Contents.url"login"; JSONObject json new JSONObject(); json.put…

由淺入深,一文掌握NGINX知識文集

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

MySQL not in查詢不出數據(MySQL not in 無效)

今天使用 MySQL 的 not in 進行查詢的時候&#xff0c;發現結果里面并沒有返回任何數據。SQL 語句沒有任何問題&#xff0c;但是結果集卻是空&#xff0c;實在無法理解。糾結了半天&#xff0c;最后使用 left join&#xff0c;兩表關聯&#xff0c;找到了目標數據。但是這樣的話…

Python語法特點如注釋規則、代碼縮進、編碼規范等

在Python中&#xff0c;通常包括3種類型的注釋&#xff0c;分別是單行注釋、多行注釋和中文編碼聲明注釋。單行注釋在Python中&#xff0c;使用“#”作為單行注釋的符號。從符號“#”開始直到換行為止&#xff0c;“#”后面所有的內容都作為注釋的內容&#xff0c;并被Python編…

修改android.jar教程,Android修改jar包文件

1、Android studio中新建java文件&#xff0c;取和將要修改的文件相同的文件名&#xff0c;把class文件中代碼復制過去&#xff0c;修改需要改動的代碼2、新建txt文件&#xff0c;將新建的Java文件按照依賴關系將路經添加到新建的txt文件中&#xff0c;被依賴的放在最前面(ps:此…

安卓市場上架總結

安卓上架截圖&#xff08;不要帶手機外觀&#xff09; 注意&#xff1a;截圖不能有二維碼小米 至少3張&#xff0c;480*854像素&#xff0c;JPG、PNG格式。騰訊應用寶 請上傳2-5張截圖&#xff08;尺寸保持一致&#xff09;&#xff0c;單張圖片不超過1M。截圖不能小于320*480像…

android 左右分欄聯動布局,Layout 布局(24 分欄)

基礎布局使用單一分欄創建基礎的柵格布局(:span“0~24”).el-row {margin-bottom: 20px;&:last-child {margin-bottom: 0;}}.el-col {border-radius: 4px;}.bg-purple-dark {background: #99a9bf;}.bg-purple {background: #d3dce6;}.bg-purple-light {background: #e5e9f2…

洛谷P4238 【模板】多項式求逆(NTT)

傳送門 學習了一下大佬的->這里 已知多項式$A(x)$&#xff0c;若存在$A(x)B(x)\equiv 1\pmod{x^n}$ 則稱$B(x)$為$A(x)$在模$x^n$下的逆元&#xff0c;記做$A^{-1}(x)$ 具體的來說的話&#xff0c;就是兩個多項式$A,B$相乘模$x^n$之后&#xff0c;所有次數大于等于$n$的項都…

win10安裝TortoiseGit

TortoiseGit 是Git的可視化工具。所以前提是已經安裝了Git&#xff0c;安裝很簡單一路next。 下載地址&#xff0c;百度搜“TortoiseGit”&#xff0c;一般是第一個。 目前地址是&#xff1a;https://tortoisegit.org/download/ 如果打不開&#xff0c;可以進入騰訊軟件中心…

CF1045G AI robots(動態開點線段樹)

題意 火星上有$N$個機器人排成一行&#xff0c;第$i$個機器人的位置為$x_{i}$&#xff0c;視野為$r_{i}$&#xff0c;智商為$q_{i}$。我們認為第$i$個機器人可以看到的位置是$[x_{i}-r_{i},x_{i}r_{i}]$。如果一對機器人相互可以看到&#xff0c;且它們的智商$q_{i}$的差距不大…

android qq登錄 獲取用戶信息嗎,免登錄 只需要一個QQ號就能獲取QQ頭像和QQ昵稱 獲取QQ用戶信息API...

[PHP] 純文本查看 復制代碼<?php // headerheader("Content-Type:application/json");error_reporting(E_ALL^E_NOTICE^E_WARNING);// 獲取QQ號$qq $_GET["qq"];// 過濾if (trim(empty($qq))) {echo json_encode(array(status > error,msg > 未…

Python3.8安裝 jupyter報錯 NotImplementedError

報錯如下&#xff1a; 原因&#xff1a; 是由于 python3.8 asyncio 在 windows 上默認使用 ProactorEventLoop 造成的&#xff0c;而不是之前的 SelectorEventLoop。jupyter 依賴 tornado&#xff0c;而 tornado 在 window 上需要使用 SelectorEventLoop&#xff0c;所以產生這…

淺析Nginx 正向代理與反向代理

1、正向代理和反向代理的概念 無論是正向代理&#xff0c;還是反向代理&#xff0c;說到底&#xff0c;就是代理模式的衍生版本罷了。我們都學習過代理設計模式&#xff0c;都知道代理模式中有代理角色和被代理角色&#xff0c;為什么這么說&#xff0c;因為這兩個角色對于我們…

pycharm 安裝 jupyter

jupyter可以像筆記一樣&#xff0c;在學習和整理思路時很好。 使用的python是3.7.5版本 windows安裝步驟&#xff1a; cmd 再修改下pip的源&#xff0c;選擇國內&#xff0c;這樣快。 國內pip源: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 廣東 豆瓣https://pypi…

android5.1 sdk version,java - Android SDK version 23.6 - Stack Overflow

Does it support java 8 yet?Eclipse is displaying this as a problem, surely it does support 8 by now? In the release notes for revision 23.6 it says java 7 or higher, does this mean java 8 is included or? Wish theyd be more specific about such details. A…