麦克风阵列入门

文章引注:

http://t.csdnimg.cn/QP7uC

一、麦克风阵列的定义

所谓麦克风阵列其实就是一个声音采集的系统,该系统使用多个麦克风采集来自于不同空间方向的声音。麦克风按照指定要求排列后,加上相应的算法(排列+算法)就可以解决很多房间声学问题,比如声源定位、去混响、语音增强、盲源分离等。

二、麦克风指向性

麦克风的方向性是指麦克风可以接收到语音的方向。声音可以从不同的方向传达到麦克风,麦克风的前面/后面/侧面,麦克风将会根据自身的指向性来获取声音。一个麦克风可以以很高的灵敏度接收来自于前方的声音,而不管后方和侧面的声音,另一个麦克风还可以接收来自于前面和后面的声音,而不管侧面的,有很多种组合。

所谓指向性麦克风是指麦克风要么接收来自于指定方向的声音,要么接收所有角度传来的声音,这取决于麦克风的自身指向属性。

常用的指向性麦克风:
在这里插入图片描述

(1)全向麦克风

有些麦克风接收来自于任何方向的声音,这种麦克风叫做全向麦克风( omnidirectional microphones)。不管说话的人在哪里对着麦克风说话,前后左右,从0°到360°,所有的这些声音都会以相同的灵敏度被拾取。

(2)心形麦克风

心型指向:心型指向对于来自麦克风前方的声音有最佳的收音效果,而来自其他方向的声音则会被衰减。
超心型指向:相比于心型指向,超心型指向抵消了更多来自麦克风侧面方向的声音。比较多用在室内乐的多轨录音中,减少来自附近其他乐器的声音。

(3)枪型麦克风

枪型指向:枪型指向麦克风是一类极限最求单一方向指向的麦克风。其最佳收音角度为正前方的小范围锥形区域,主要用于户外收音,如户外新闻采访和影视外景拍摄的收音。其较好的指向性使得麦克风能比较有效的减少周边环境噪音的收入。

(4)双指向麦克风

双指向式(或者8字型):双指向式可接受来自麦克风前方和后方的声音,抵消了大部分来自90度侧面的声音。由于双指向式麦克风侧面的灵敏度极低,在室内多轨录音中使用也能够有效减少来自附近其他乐器的声音。

三、麦克风的排列及原理

(1)简介

麦克风不同的排列对应不同的算法,那么最简单的排列就是线性排列了,也就是麦克风排列成一排。在远场(指说话人距离麦克风很远)的情况下,我们一般认为人说话的波形是平面波,如下:
在这里插入图片描述
那么每个麦克风接收到的信号在同一时刻都不会相同,因为有时延,你可能会问什么是时延,那么下面给出具体的统一线性麦克风阵列模型图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)原理

麦克风阵列,是一组位于空间不同位置的全向麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的一种装置,采集到的信号包含了其空间位置信息。根据声源和麦克风阵列之间距离的远近,可将阵列分为近场模型和远场模型。根据麦克风阵列的拓扑结构,则可分为线性阵列、平面阵列、体阵列等。

(1) 近场模型和远场模型

声波是纵波,即媒质中质点沿传播方向运动的波。声波是一种振动波,声源发声振动后,声源四周的媒质跟着振动,声波随着媒质向四周扩散,所以是球面波。

根据声源和麦克风阵列距离的远近,可将声场模型分为两种:近场模型和远场模型。近场模型将声波看成球面波,它考虑麦克风阵元接收信号间的幅度差;远场模型则将声波看成平面波,它忽略各阵元接收信号间的幅度差,近似认为各接收信号之间是简单的时延关系。显然远场模型是对实际模型的简化,极大地简化了处理难度。一般语音增强方法就是基于远场模型。

近场模型和远场模型的划分没有绝对的标准,一般认为声源离麦克风阵列中心参考点的距离远大于信号波长时为远场;反之,则为近场。设均匀线性阵列相邻阵元之间的距离(又称阵列孔径)为d,声源最高频率语音的波长(即声源的最小波长)为λmin,如果声源到阵列中心的距离大于2d2/λmin,则为远场模型,否则为近场模型,如图1所示。
在这里插入图片描述

(2) 麦克风阵列拓扑结构

按麦克风阵列的维数,可分为一维、二维和三维麦克风阵列。这里只讨论有一定形状规则的麦克风阵列。

一维麦克风阵列,即线性麦克风阵列,其阵元中心位于同一条直线上。根据相邻阵元间距是否相同,又可分为均匀线性阵列(Uniform Linear Array,ULA)和嵌套线性阵列,如图2所示。均匀线性阵列是最简单的阵列拓扑结构,其阵元之间距离相等、相位及灵敏度一直。嵌套线性阵列则可看成几组均匀线性阵列的叠加,是一类特殊的非均匀阵。线性阵列只能得到信号的水平方向角信息。

在这里插入图片描述
图2 线性阵列拓扑结构

二维麦克风阵列,即平面麦克风阵列,其阵元中心分布在一个平面上。根据阵列的几何形状可分为等边三角形阵、T型阵、均匀圆阵、均匀方阵、同轴圆阵、圆形或矩形面阵等,如图3所示。平面阵列可以得到信号的水平方位角和垂直方位角信息。
在这里插入图片描述
图3 平面阵列拓扑结构

三维麦克风阵列,即立体麦克风阵列,其阵元中心分布在立体空间中。根据阵列的立体形状可分为四面体阵、正方体阵、长方体阵、球型阵等,如图4所示。立体阵列可以得到信号的水平方位角、垂直方位角和声源与麦克风阵列参考点距离这三维信息。
在这里插入图片描述
图4 立体阵列拓扑结构

(3)波束形成

在这里插入图片描述

(4)时延补偿

在这里插入图片描述

四、麦克风阵列语音增强

1. 时域GSC自适应波束形成算法(Griffiths-Jim)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)语音干扰情况

在这里插入图片描述

(2)点噪声源干扰情况

在这里插入图片描述

(3)散漫噪声源干扰情况

在这里插入图片描述

2.概况

语音增强,英文名:Speech Enhancement,其本质就是语音降噪,换句话说,日常生活中,麦克风采集的语音通常是带有不同噪声的“污染”语音,语音增强的主要目的就是从这些被“污染”的带噪语音中恢复出我们想要的干净语音。

语音增强涉及的应用领域十分广泛,包括语音通话、电话会议、场景录音、军事窃听、助听器设备和语音识别设备等,并成为许多语音编码和识别系统的预处理模块。举几个简单的例子,在手机的语音助手中,例如苹果的Siri、微软的小娜属于这其中的佼佼者,他们在近距离(一般工作距离小于1米)、无噪声的环境中进行语音识别,有着较高的语音识别准确率,但是如果我们的声学场景变得更加复杂,比如展会,街道等场景中,噪声的影响会大大降低他们的语音识别准确率,因此进行语音识别的前端降噪显得十分重要。此外,在一些助听器设备中,语音增强技术也有其应用。通常的助听器,只是实现一个语音的基本放大,复杂一些的会进行声压级压缩以实现对患者听觉范围的补偿,但是如果听觉场景比较复杂,患者听到的语音中不仅包含了放大后的语音也包含了很多噪声,时间一长势必会对患者的听觉系统造成二次损害,因此高端的数字助听器设备中,语音降噪也成为了他们不容忽视的一个重要方面。

语音增强作为数字信号处理的一个分支,已经有了50多年的历史。虽然语音增强技术看似只是一个简单的纯净语音恢复过程,但是其中涉及的知识和算法是广泛而又多样的。在学术界,该领域的研究可以说是“百花齐放,百家争鸣”,既有传统的数字信号处理的方法,又有近几年刚刚兴起的深度学习的方法。经过几十年的发展,学术界也涌现出来了不少大牛,像Rainer Martin、Yariv Ephraim、Israel Cohen、Phillip Loizou以及Sharon Gannot等,这几位前辈在数字信号处理领域的语音增强方法中,起到的十分重要的推动作用。然而,在语音增强的另一个新兴领域:深度学习语音增强,虽然是后起之秀,但是伴随着硬件技术的升级,该技术在工程界得以落地,也使其在语音增强领域站住了脚跟。当然,该技术的发展与“深度学习之父”​Geoffrey Hinton在神经网络结构上取得的重大成果是分不开的。在当今学术界,如果说在该领域,真正占有一席之地的,我个人认为,当属俄亥俄州立大学的汪德亮教授,他的实验室和学生,对深度学习语音增强这一方法的发展起到了十分重要的推动作用。

3.分类

在这里插入图片描述
对于语音增强方法的分类,可以按照其运用方法的不同进行分类,于是便可以分成如下两大类:数字信号处理的语音增强方法和基于机器学习的语音增强方法。 其中,数字信号处理的语音增强方法是主流方法,历史悠久,且拥有很深的技术奠基,是目前工程界进行语音降噪的主要思路。而在传统的数字信号处理的方法中,按照其通道数目的不同,又可以进一步划分为:单通道语音增强方法和麦克风阵列的语音增强方法。

在传统的单通道语音增强方法中,对数字信号处理的知识运用较多,时域和频域的方法都有,以频域处理为主,其中基于短时谱估计的语音增强方法是目前应用最为广泛的语音增强方法,具体的算法可以分为以下三大类:谱减法、维纳滤波法和基于统计模型的方法。除了上述提到的短时谱方法,在单通道的语音增强领域还有一种自适应滤波的方法,但是其需要事先知道噪声或者纯净语音,然后利用随机梯度下降的方式进行最优解的逼近,而在大多数情况下,噪声或者纯净语音等先验知识是无法获得的,因此大大限制了自适应滤波方法的应用,但是该方法在手机通话中的降噪应用比较广泛,通常手机中都会专门用一个降噪麦克风来收取环境中的噪音,以此作为参考输入来实现降噪。此外,在单通道的方法之中,还有一种基于子空间的方法也备受关注,但由于其运算度相对较高,所以在工程中的应用并不算广泛。近些年以来,小波变换的方法发展迅猛,它克服了短时傅里叶变换固定分辨率的缺点,可以获得信号在不同分别率上的信息,在近几年里得到了广泛的应用。

而在麦克风阵列的语音增强方法中,由于利用了更多的麦克风,考虑了信号的空间信息,因此在抑制特定方向的干扰、进行语音分离等方面,比单通道的语音增强更有优势。麦克风阵列的语音增强方法目前在智能音箱、机器人等领域应用较多,利用其多麦克风的优势,这类产品可以实现在远场和更复杂的声学环境中进行语音增强。主流的麦克风阵列方法有:固定波束形成的方法和自适应波束形成的方法。固定波束形成的应用环境十分受限,但运算复杂度较低,所以一般应用于声学场景固定不变的环境中;而自适应波束形成的方法则表现出更好的鲁棒性,当然这也是以牺牲运算复杂度为代价,目前自适应波束形成方法主要有两大阵营:LCMV结构和GSC结构,如今的麦克风阵列语音增强算法基本上都是基于这两种结构进行地改进和优化。

基于机器学习的语音增强方法算是奇巧之技,不同于传统的数字信号处理方法,它借鉴机器学习的思路,通过有监督的训练实现语音增强。该领域的算法算是刚刚起步,满打满算也没有二十年的历史,但是“存在即合理”,它之所以能够在语音增强领域占有一席之地,也有其优势所在,例如,在数字信号处理领域的一些比较棘手的问题,比如瞬时噪声的消除,这类方法另辟蹊径,可以较容易地将其解决,因此,这类算法也许会成为未来人工智能时代的语音增强主流方向。如今,运用机器学习的语音增强方法不多,大致梳理一下,可以分成以下几类:基于隐马尔科夫模型的语音增强、基于非负矩阵分解的语音增强、基于浅层神经网络的语音增强和基于深层神经网络的语音增强。其中,基于深度神经网络的语音增强方法,也就是深度学习语音增强,利用深度神经网络结构强大的非线性映射能力,通过大量数据的训练,训练出一个非线性模型进行语音增强,取得了十分不错的效果。

4.语音增强入门

语音增强的方向较多,各方向领域的大牛不同,涉及的知识也不太一样,因此分别给出了不同的语音增强研究方向的大牛和书籍。

传统单通道的语音增强方法:
Yariv Ephraim 主页:http://ece.gmu.edu/~yephraim/
Rainer Martin 主页:http://www.ruhr-uni-bochum.de/ika/mitarbeiter/martin_publik.htm#2017
Isreal Cohen 主页:http://webee.technion.ac.il/people/IsraelCohen/
Philip Loizou 主页:http://ecs.utdallas.edu/loizou/
推荐书籍:《语音增强理论与实践》(Loizou)

麦克风阵列的语音增强方法:
Sharon Gannot 主页:http://www.eng.biu.ac.il/gannot/
Jacob Benesty 主页:http://externe.emt.inrs.ca/users/benesty/
推荐书籍:《Wideband Beamforming Concepts and Techniques》(Wei Liu)

基于深度学习的语音增强方法:
汪德亮主页:http://web.cse.ohio-state.edu/~wang.77/index.html
推荐学习:吴恩达深度学习在线课程:http://mooc.study.163.com/smartSpec/detail/1001319001.htm
博士论文:《基于深层神经网络的语音增强方法研究》(徐勇 2015)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/165232.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32串口重定向/实现不定长数据接收

STM32串口重定向/实现不定长数据接收 重定向MicroLIB 不定长数据接收 这是一期STM32内容代码分享,关于STM32重定向的代码和一些出现的问题吗,以及串口接收不定长数据思路 重定向 重定向的功能:能够在STM32中使用printf函数通过串口发送数据 …

常见树种(贵州省):001松类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、华山松…

【评估分级方法】自然断点法(Python实现全代码)

自然断点法 自然断点法有两个称呼,一个就是直接英文名称,叫做“Natural Breaks”,这就不解释了,还有一个称呼就是ArcGIS里面用的,叫做“Jenks”,主要是来源于它的创造者:乔治弗雷德里克詹克斯&…

中间件安全: Apache 远程代码执行 (CVE-2021-42013)

中间件安全: Apache 远程代码执行 (CVE-2021-42013) Apache HTTP Server是美国阿帕奇(Apache)基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单的API进行扩充的特点,发现 Apache HTTP Ser…

ComText让机器人有了情节记忆

为了让人类与机器人更好地交流,MIT 计算机科学与人工智能实验室的研究员开发了一个名为 ComText 的程序。这款程序给机器人增加了情节记忆,让它们能够接受更加复杂的命令。目前,他们已经在机器人 Baxter 上测试了程序。 机器人没有情景化的记…

Java,集合框架,关于Map接口与Collections工具类

目录 Map接口 Map及其实现类的对比: HashMap中元素的特点: 相关方法: 添加、修改操作: 删除操作: 元素查询的操作: 元视图操作的方法: TreeMap的使用: Properties类: Collections工具…

2023上海初中生古诗文大会复赛12月2日举行,关键事项为您划重点

今天中午12点,古诗文大会官微发布消息:2023上海中学生古诗文大会(初中组)复选将于12月2日举行。 具体安排和注意事项、常见问题,六分成长为您整理如下。 一、2023年初中生古诗文大会复赛日期和时间 12月2日&#xff…

前端调试只会console.log()?

前言 相信大家在日常开发中调试代码是必不可少的步骤,毕竟谁也不能保证代码不出问题,总得debug一下,输出信息看看数据有没有问题。是不是习惯性console.log(‘XXX’)或者debugger呢。而JavaScript中的console对象提供了丰富的方法用于更灵活…

学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 前言 JetBrains全家桶介绍 申请过程: 获取学…

AIGC ChatGPT4 读取接口文件并进行可视化分析

数据分析的过程中,对数据文件进行可视化分析是每个数据分析师必备的技能。如下图数据源。 现在需要对各地区的销量进行汇总,使用Python来进行分析。 但是又不想写代码,或者不会Python代码,可以用ChatGPT4来帮我们完成代码的编写。 完整的Python代码: import pandas as p…

【装机】第一次装机记录

本篇文章记录第一次装机的过程。 配置 部件型号CPUAMD 锐龙 R5 7500F主板华硕 TUF GAMING A620M-PLUS显卡耕升 RTX4070 踏雪内存金百达 黑刃 DDR5 16G/32G 6000硬盘铠侠 2TB EXCERIA Pro SE10 极至超速系列电源微星 MAG A650BN散热利民 AX120 R SE AGHP逆重力热管支持LGA1700…

微服务实战系列之Gateway

前言 人类世界自工业革命以来,无论从金融、货币、制度,还是科技、资源、社会各个方面,都发生了翻天覆地的变化。物质极大丰富,从而也推动了科技的极速发展。当计算机问世也仅仅不到80年,而如今我们的生活处处有它的影子…

【Python从入门到进阶】42、使用requests的Cookie登录古诗文网站

接上篇《41、有关requests代理的使用》 上一篇我们介绍了requests代理的基本使用,本篇我们来学习如何利用requests的Cookie登录古诗文网。 一、登录网站及目的介绍 我们需要Cookie模拟登录的网站为:https://www.gushiwen.cn/(古诗文网&…

关于2023年编程语言使用排行我的看法

一、2022、2023年编程语言使用排行榜 从这个表格中,我们可以看到Python在两次调查中都排第一。对这件事情,很多人有了不同的看法。一个小粉丝问我,凭什么、又是为什么。下面,我展开我的理解。 二、Python为什么排第一&#xff1f…

Jmeter——循环控制器中实现Counter计数器的次数重置

近期在使用Jmeter编写个辅助测试的脚本,用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值,使用循环实现;但第三个可变值的数量次数,是基于第二次循环中得到的结果才能确认最终次数,每次的结果…

【碰碰球】弹珠游戏-微信小程序项目开发流程详解

还记得小时候玩过的弹珠撞击游戏不,这里把它的实现原理通俗易懂地讲一下,看看怎样实现一个碰碰球(弹珠)小游戏,除了个人玩法,也可以双人玩哦,与打乒乓球一样的,可练习临场反应。 创建项目 打开微信开发者…

自动驾驶学习笔记(九)——车辆控制

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 控制器设计 比例积分微分控制 线性…

[C/C++] 数据结构 LeetCode:用队列实现栈

题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元…

Vulhub靶场-KIOPTRIX: LEVEL 1.1

目录 环境配置 端口扫描 漏送发现 漏送利用 提权(内核漏洞提权) 环境配置 环境配置的过程同主页该专栏第一个靶场,不在赘述。 端口扫描 首先通过arp-scan并根据靶机的mac地址确定靶机的IP地址 然后对靶机进行一个扫描 首先扫描到OpenS…

Python大数据之linux学习总结——day10_hive调优

hive调优 hive调优hive命令和参数配置1.hive数据压缩压缩对比开启压缩 2.hive数据存储[练习]行列存储原理存储压缩比拓展dfs -du -h 3. fetch抓取4. 本地模式5. join的优化操作6. 列裁剪7. 分区裁剪8. group by 操作9. count(distinct)10. 笛卡尔积11. 动态分区[练习]12. 如何调…
最新文章