麦克风阵列声源定位实现[通俗易懂]

麦克风阵列声源定位实现[通俗易懂]麥克風陣列音源定位系統是利用麥克風陣列接收音訊,然後經由適當的演算法估算出音源入射麥克風陣列的方向角,即判斷出音源的位置方向。本專題著重於此演算法的程式撰寫,並實際測試二維及三維空間中單一音源入射的方向角,期望於演算速度及準確度上能有最好的效果。此系統完成後可搭配攝影機應用於視訊會議,隨時定位出發言者;也可應用於監視系統、玩具等。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

麥克風陣列音源定位系統是利用麥克風陣列接收音訊,然後經由適當的演算法估算出音源入射麥克風陣列的方向角,即判斷出音源的位置方向。本專題著重於此演算法的程式撰寫,並實際測試二維及三維空間中單一音源入射的方向角,期望於演算速度及準確度上能有最好的效果。此系統完成後可搭配攝影機應用於視訊會議,隨時定位出發言者;也可應用於監視系統、玩具等。 
麥克風陣列音源定位系統主要是利用同一音源到麥克風陣列中每支麥克風的距離不全相同,因此同一音源的訊號傳遞到每支麥克風會有時間差TDOA ( Time Difference of Arrival ),利用求得的TDOA,代入推論出的方向角公式即可得到音源入射的方向角。而本專題著重於估算TDOA及方向角公式的演算法上,我們使用兩種演算法實作測試,其中一種演算法只適用於二維空間,而另一種適用於二維或三維空間的音源定位。

有許多相關的論文是以頻域的方法分析,但若要將此系統實作在微處理器上,運算較簡單時域分析方法會有較好的效用,且對初學訊號分析的我們來說也較容易實現,所以我們主要以時域的方法來建立演算法。

此系統主要的實作流程為:「語料取樣」、「訊號前處理」、「估算TDOA」、「計算方向角」。下圖1-1為麥克風陣列音源定位系統流程圖,詳細說明如下:
  1. 由兩支以上麥克風組成麥克風陣列接收音訊。

  2. 麥克風接收的訊號經過一放大器後,再經由四輸入USB動態訊號擷取模組,依設定的取樣頻率取樣訊號,輸入電腦分析。

  3. 將每支麥克風接收的訊號音量標準化,並切割成多個音框(frame)。

  4. 設定音量門檻值,去除音量小的部份。(算出一段訊號中所有音框的音量,取其中音框音量最小值的k倍為門檻值,k值由經驗得到。)

  5. 以Cross Correlation的方法估算TDOA。

  6. 將求得的TDOA代入方向角公式,即可得到音源入射的方向角。
    这里写图片描述
    TDOA的計算方法:

TDOA (Time Difference of Arrival) 是指同一音源的訊號傳遞到兩支麥克風的時間差由麥克風所取樣的訊號來估算。而時域上常見的計算方法有四種:AMDF(Average Magnitude Difference Function)、ratio AMDF、最小平方法、Cross Correlation。我们採用最常見且穩定性高的Cross Correlation。

Cross Correlation

x1及x2為兩支麥克風所取樣到的兩段訊號,經由下式可算出所對應λ值的cross correlation值。
这里写图片描述(1)

这里写图片描述

最大合理平移範圍當音源與兩支麥克風的中心成90度時(音源與兩支麥克風距離相等),音源傳遞到兩支麥克風的時間差為0;當音源與兩支麥克風三者成一直線時,音源傳遞到兩支麥克風的時間差最大。 

这里写图片描述

假設聲速為v,兩支麥克風距離為m,取樣頻率為 fS,則最大合理平移範圍為:( m / v ) × fS單位為取樣點數(sample)。                                             
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ThinkPHP中_after_update、_before_update等的用法

    ThinkPHP中_after_update、_before_update等的用法

    2021年10月28日
    36
  • 2021最新java详细学习路线及路线图(超详细)「建议收藏」

    2021最新java详细学习路线及路线图(超详细)「建议收藏」本文将告诉你学习Java的一些步骤,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。文末给大家准备了惊喜,希望大家都能够坚持看完哦~一、Java基础二、Java学习七大阶段[阶段1、JavaSE基础][阶段2、WEB前端][阶段3、数据库][阶段4、JavaWeb][阶段5、JavaWeb项目][阶段…

    2022年6月16日
    22
  • NFV介绍_NFV技术

    NFV介绍_NFV技术转发自:https://zhuanlan.zhihu.com/p/26259440NFV全称是NetworkFunctionVirtualization。这又是一个与网络相关的故事。先来看看NFV的前世今生吧。在NFV之前,NF(NetworkFunction)是一直存在的,网络中,NF可以看成一个个独立的网元,实现着各自的功能。NF以固定的方式连接起来,统一提供的网络功能和服务。随便在网…

    2022年9月10日
    4
  • JSP简明教程「建议收藏」

    1、jsp是什么?1)jsp:javaserverpages2)jsp运行在服务器3)jsp的基础是servlet,相当于对servlet进行一个包装4)jsp无需配置,直接使用,如果修改了jsp文件,不需要重新reloadweb应用5)jsp访问方法:http://ip:8080/web应用名/jsp路径6)jsp是一种动态网页技术2、JSP=html+java片段+JSP标签(语法)+j

    2022年4月16日
    53
  • 基于SQL的日志分析工具myselect

    基于SQL的日志分析工具myselect

    2021年11月29日
    38
  • Android NDK开发:打包so库及jar包供他人使用

    Android NDK开发:打包so库及jar包供他人使用Android的NDK开发相信各位已经精通各种姿势了。不过基本上都是那种native代码和java代码都在同一个工程中,因为应用从头到脚都是我们自己的,也不需要分离。但有时候可能需要我们自己把某些库打包起来供别人使用,或者使用别人提供给我们的库。本篇文章及下篇文章就讲讲so库如何打包。一、目标及方式这篇文章会讲第一种方式来打包so库,这种方式是基于jni层的,需要我们同时提供接口的jar包…

    2022年6月22日
    147

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号