精华内容
下载资源
问答
  • 之前找了很久才找到了,传上来更大家...阵列信号处理及matlab实现,关于音频处理,语音算法等学习很好的资料,高清无水印版。我传的书籍都是高清无水印的,欢迎大家下载哈,我的下载页也有很多不错的书籍,欢迎下载!
  • 麦克风阵列信号处理

    2018-09-05 12:00:14
    在matlab下进行麦克风阵列信号的仿真系统,适用于近场
  • 01—什么是麦克风阵列麦克风阵列是由一定数目的...02—麦克风阵列的作用麦克风阵列一般用于:声源定位,包括角度和距离的测量抑制背景噪声、干扰、混响、回声信号提取信号分离03—声源定位技术利用麦克风阵列计...

    e778b646f5dd8cf744e5b577cbb361b3.png

    01

    什么是麦克风阵列

    麦克风阵列是由一定数目的麦克风组成,对声场的空间特性进行采样并滤波的系统。

    04cb9328bc89f8173224d363dd572b4e.png

    目前常用的麦克风阵列可以按布局形状分为:线性阵列,平面阵列,以及立体阵列。其几何构型是按设计已知,所有麦克风的频率响应一致,麦克风的采样时钟也是同步的。

    02

    麦克风阵列的作用

    麦克风阵列一般用于:

    • 声源定位,包括角度和距离的测量
    • 抑制背景噪声、干扰、混响、回声
    • 信号提取
    • 信号分离

    fb7e44ef58615809585f41e9c0aa54a9.png

    03

    声源定位技术

    • 利用麦克风阵列计算声源距离阵列的角度和距离,实现对目标声源的跟踪。
    • 基于TDOA(Time Difference Of Arrival,到达时间差)的声源定位技术。估计信号到达两两麦克风之间的时间差,从而得到声源位置坐标的方程组。然后求解方程组即可得到声源的精确方位坐标。

    04

    信号的提取与分离

    通过波束形成技术,在期望方向上有效地形成一个波束,仅拾取波束内的信号,从而达到同时提取声源和抑制噪声的目的。

    66afb2981a3bec517ea4f63f32cb6ee4.png

    05

    语音去混响

    混响(Reverberation)是指声波在室内传播时,被墙壁、天花板、地板等障碍物形成反射声,并和直达声形成叠加的现象。

    f960d272dbe2833255269eeda8d9db6e.png

    混响的作用

    • 混响是声学中最重要的现象之一
      • 合适的混响会使得声音圆润动听、富有感染力。
      • 混响时间太长会使得声音含糊不清,听不清楚。
    • 混响是建筑声学中要重点考虑的问题
      • 演讲厅要短一些的混响时间,比如北京学术报告厅混响时间为1s
      • 交响乐则需要长一些的混响时间,比如上海音乐厅混响时间为1.5s,维也纳音乐厅为2.05s
    • 过大的混响会带来音素的交叠掩蔽现象,严重影响语音识别效果,尤其是远距离语音识别。

    目前主流采用麦克风阵列+深度学习的方式来进行去混响。

    ec986cd92ec062cd97b04f008a05b25f.png

    06

    线性麦克风阵列

    • 加性麦克风阵列( Additive Microphone Array)
      • 阵列的输出是各阵元的加权和
      • 最优波束方向可调
      • 结构简单、方便布局
      • 适用于车载、家电等场合

    f44ca312d44dcdf8f69979404ce79a0a.png

    712d1a372af0824f9baac5f13eabd55f.png
    • 差分麦克风阵列( Differential Microphone Array )
      • 阵列的输出是两两麦克风之间的加权相减
      • 最优波束方向只能在末端方向
      • 适用于耳机通话等场合

    915a6499b2414051fcace0bf3f93fa77.png

    6dc560de20752d89c67f16483948f02e.png

    c8b0207f86469cd1ea85526c8360a10a.png

    07

    平面麦克风阵列

    平面麦克风阵列(Planar Microphone Array )

    • 实现平面360度等效拾音
    • 麦克风个数越多,空间划分越精细,语音增强和降噪效果越好
    • 广泛用于智能音箱和交互机器人上

    0db48d0a0102c42cd899fba9479a1863.png

    d3b24377dac5aed75b38034e4d962001.png

    08

    立体麦克风阵列

    立体阵列麦克风(3-D Microphone Array )

    • 真正实现全空间360度无损拾音
    • 解决了平面阵高俯仰角信号响应差的问题

    3dd3b0ff210b647ade283a16054718fc.png

    b958a54aa22acf74cbe0d8c03e339a58.png

    09

    麦克风阵列发展趋势

    • 多传感器的融合。声学麦克风,光学麦克风,骨传导麦克风的多模态降噪。提高信噪比,以及适应不同的环境。
    • 分布式麦克风阵列。客厅,卧室,厨房,餐厅,手持各类麦克风的数据实时融合处理。在更大范围内实现真正的全方位拾音。
    • 基于深度学习的麦克风阵列。用多麦克风+神经网络,来取代双耳结构+大脑信号处理机制。
    • 最终目标:达到人类听力水平;用两个麦克风让机器能听清10米-20米的声音;实现鸡尾酒会效应。
    • 本地和云端识别紧耦合,配合使用也是一个大的趋势。
    展开全文
  • 阵列信号处理综述

    万次阅读 多人点赞 2018-01-03 14:14:51
    阵列信号处理作为信号处理的一个重要分支,在通信、雷达、声纳、地震勘探和射电天文等领域内获得了广泛应用和迅速发展。阵列信号处理将一组传感器按一定方式布置在空间不同位置上,形成传感器阵列。用传感器阵列...
    研究背景

    ​ 阵列信号处理作为信号处理的一个重要分支,在通信、雷达、声纳、地震勘探和射电天文等领域内获得了广泛应用和迅速发展。阵列信号处理将一组传感器按一定方式布置在空间不同位置上,形成传感器阵列。用传感器阵列来接收空间信号,相当于对空间分布的场信号采样,得到信号源的空间离散观测数据。其目的主要是对阵列接收到的信号进行处理,增强所需要的有用信号,抑制无用的干扰和噪声,并提取有用的信号特征以及信号所包含的信息。其主要应用包含以下五个方面

    • 波束形成技术:使阵列天线方向图的主瓣指向所需的方向

    • 零点形成技术:使天线的零点对准干扰方向。

    • 空间谱估计:对空间信号波达方向进行超分辨率估计,主要是因为空间谱估计技术具有超高的空间信号的分辨能力,能突破并进一步改善一个波束宽度内空间不同来自信号的分辨能力。

    • 信号源估计:确定阵列到信源的仰角和方位角,甚至频率、时延和距离等

    • 信源分离:确定各个信源发出的信号波形,各个信源从不同方向到达阵列,使得这些信号可以分离,即便在时域和频域是叠加的,也可以进行分离。

      接下来主要介绍空间谱估计。

      空间谱估计方法

      ​ 阵列信号处理的另一个基本问题是空间信号到达方向估计问题,也是雷达、声纳等许多领域的重要任务。DOA估计的基本问题就是确定同时处于空间某一区域内多个感兴趣的信号的空间位置(即各个信号到达阵列参考阵元的方向角,简称波达方向)。空间谱估计的基本理论离不开阵列信号处理的基本原理,即通过空间阵列接收数据的相位差来确定一个或者几个待估计的参数,如方位角、俯仰角和信号源数。

      ​ 估计的分辨率取决于阵列长度,阵列长度确定后,其分辨率也被确定。称为瑞丽限。超瑞利限的方法称为超分辨率方法,最早的超分辨率方法主要有MUSICESPRIT 算法。它们同属特征结构的子空间方法。该方法建立在这样一个基本观察上,若传感器个数比信源个数多,则阵列数据的信号分量一定位于一个低秩的子空间,在一定条件下,这个子空间将唯一确定信号的波达方向,并且可以使用数值稳定的奇异值分解精确的确定波达方向。

      空间谱估计数学模型

      ​ 空间谱估计就是利用空间阵列实现空间信号的参数估计,整个空间谱估计系统由三部分组成:空间信号入射、空间阵列接收、参数估计。相应的可分为三个空间,目标空间、观察空间和估计空间。

      • 目标空间:由信号源的参数与复杂环境参数张成的空间,对于空间谱系统就是利用特定的一些方法从这个复杂的目标空间中估计出信号的未知参数。

      • 观察空间:利用空间按照一定方式排列的阵元来接收目标空间的辐射信号

      • 估计空间:利用空间谱估计技从复杂的观察数据中提取信号的特征参数。

      ​ 考虑N 个远程的窄带信号入射到某空间阵列上,其中阵列天线由M个阵元组成 。(假设阵元数等于通道数),也就是说处理来自M个通道的数据。在信号源是窄带的前提下,信号可以表示如下:

    si(t)=ui(t)ej(w0t+ψ(t))si(tτ)=ui(tτ)ej(w0(tτ)+ψ(tτ))

    ui(t) 是接收信号的幅度, ψ(t) 是接收信号的相位, w0 是接收信号的频率。在窄带远场信号源的假设下,有如下式子成立

    ui(tτ)ui(t)ψ(tτ)ψ(t)

    那么有如下式子成立
    si(tτ)si(t)ejw0τi=0,1,,N

    那么可以得到第 l 个阵元的接收信号为
    xi(t)=i=1Nglisi(tτli)+ni(t)i=0,1,,M

    式子中 gli 为第 l 个阵元对第i个信号的增益, nl(t) 表示第 l 个阵元在t时刻的噪声, τli 表示第 i 个信号到达第l个阵元时相对于参考阵元的时延。利用矩阵表示如下
    x1(t)x2(t)xM(t)=g11ejw0τ11g21ejw0τ21gM1ejw0τM1g12ejw0τ12g22ejw0τ22gM2ejw0τM2g1Nejw0τ1Ng2Nejw0τ2NgMNejw0τMNs1(t)s2(t)sN(t)+n1(t)n2(t)nM(t)

    理想情况下,假设阵列中各阵元是各向同性的且不存在通道不一致、互耦等因素的影响,那么上式中的增益可以忽略,可以简化为
    x1(t)x2(t)xM(t)=ejw0τ11ejw0τ21ejw0τM1ejw0τ12ejw0τ22ejw0τM2ejw0τ1Nejw0τ2Nejw0τMNs1(t)s2(t)sN(t)+n1(t)n2(t)nM(t)

    写成矢量形式为
    X(t)=AS(t)+N(t)

    在上式中, X(t) 为阵列的 M×1 维快拍数据矢量, N(t) 为阵列的 M×1 维噪声数据矢量, S(t) 维空间信号的 N×1 维矢量, A 为空间阵列的M×N维流型矩阵(导向矩阵)。上述模型在阵列信号处理中十分有用。

    展开全文
  • 音频信号处理中,麦克风是最基本的信号接收设备之一。将麦克风组成阵列的主要目的是通过多个麦克风的信息,可以解决很多实际问题:回声、噪声的抑制;视频会议;虚拟现实技术;场景分析等。在声源定位中,阵列几何...

    2585be4ab452115878227afde3962489.png
    音频信号处理中,麦克风是最基本的信号接收设备之一。将麦克风组成阵列的主要目的是通过多个麦克风的信息,可以解决很多实际问题:回声、噪声的抑制;视频会议;虚拟现实技术;场景分析等。在声源定位中,阵列几何必须是事先已知的,而且某些规则几何形状的应用可以有效地减少运算量。因此,针对麦克风的设计,提出了一种等距离分布方法,即球面上任意麦克风与相邻麦克风的距离均相等。------ 《基于球傅里叶变换的声源三维空间定位》

    问题背景

    要设计球形麦克风阵列(SMA),并保证麦克风在球面等距离分布(可以理解为,球面上任一麦克风与相邻麦克风的距离相等),需要给出每个麦克风的具体坐标位置。

    麦克风坐标计算

    球面上的麦克风最终组成一个规则的凸包多面体(参见Platonic solid),麦克风坐标数值解法其实是一个Thomson problem。

    e6ba73bf42747058c11477db987ef70a.png

    此类问题有多种求解思路(可参考cofludy的博客),其中一种是基于力学原理,大致思路如下:

    1)首先建立单位球体,然后将待分布的N个麦克风作为带电粒子,随机分布在该单位球体的表面;

    2) 计算每个带电粒子在各个方向上受到的合力大小,然后计算出合力在对应带电粒子上的切线分量;

    3) 根据切线分量计算对应带电粒子沿切向运动飞出该单位球体表面的坐标,然后对每一带电粒子的坐标沿径向进行归一化,使所有带电粒子再次回到该单位球体的表面;

    4) 步骤2)、3)循环若干次,当各带电粒子所受合力均小于一设定值时,得到各带电粒子的球面均勾分布,即为N个麦克风在该球形的阵列分布。

    详细的算法步骤可参考专利描述:一种3D录音系统球面麦克风阵列分布方法【北京大学】

    幸运的是,网上有一段现成的MATLAB代码,可通过链接查看,源代码如下:

    function []=main()
    N=12; %点数量
    a=rand(N,1)*2*pi;%根据随机求面均匀分布,先生成一个初始状态
    b=asin(rand(N,1)*2-1);
    r0=[cos(a).*cos(b),sin(a).*cos(b),sin(b)];
    v0=zeros(size(r0));
    G=1e-2;%斥力常数,试验这个值比较不错
    for ii=1:200%模拟200步,一般已经收敛,其实可以在之下退出
        [rn,vn]=countnext(r0,v0,G);%更新状态
        r0=rn;v0=vn;
    end
    plot3(rn(:,1),rn(:,2),rn(:,3),'.');hold on;%画结果
    [xx,yy,zz]=sphere(50);
    h2=surf(xx,yy,zz); %画一个单位球做参考
    set(h2,'edgecolor','none','facecolor','r','facealpha',0.7);
    axis equal;
    axis([-1 1 -1 1 -1 1]);
    hold off;
    end
    
    function [rn vn]=countnext(r,v,G) %更新状态的函数
    %r存放每点的x,y,z数据,v存放每点的速度数据
    num=size(r,1);
    dd=zeros(3,num,num); %各点间的矢量差
    for m=1:num-1
        for n=m+1:num
            dd(:,m,n)=(r(m,:)-r(n,:))';
            dd(:,n,m)=-dd(:,m,n);
        end
    end
    L=sqrt(sum(dd.^2,1));%各点间的距离
    L(L<1e-2)=1e-2; %距离过小限定
    F=sum(dd./repmat(L.^3,[3 1 1]),3)';%计算合力
    
    Fr=r.*repmat(dot(F,r,2),[1 3]); %计算合力径向分量
    Fv=F-Fr; %切向分量
    
    rn=r+v;  %更新坐标
    rn=rn./repmat(sqrt(sum(rn.^2,2)),[1 3]);
    vn=v+G*Fv;%跟新速度
    end

    一开始因为计算机没有安装MATLAB只有Python,代码看着也不多,也有那么一点点Python使用经验,想着用Python重写一遍好了。

    结果,困难程度远远超出预期(请原谅我这只菜鸟~)。一边查MATLAB中函数的用法,一边查Numpy中函数的用法,折腾几天还是没能完成。不得已,安装MATLAB后,一步一步确认Python代码的输出结果,又折腾几天最终完成。

    Numpy虽然说很多函数和MATLAB非常相似,但有几个地方需要注意:

    • MATLAB下标索引从1开始,Numpy下标索引从0开始;
    • MATLAB中多维数组下标依次表示维度 行:列:页,而Numpy中多维数组下标依次表示维度 页:行:列

    计算得到球面麦克风点的坐标后,可利用Scipy.spatial中的ConvexHull函数绘制3D凸包,参考以下链接,源代码如下

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    from scipy.spatial import ConvexHull
    
    # 8 points defining the cube corners
    pts = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0],
                    [0, 0, 1], [1, 0, 1], [1, 1, 1], [0, 1, 1], ])
    
    hull = ConvexHull(pts)
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection="3d")
    
    # Plot defining corner points
    ax.plot(pts.T[0], pts.T[1], pts.T[2], "ko")
    
    # 12 = 2 * 6 faces are the simplices (2 simplices per square face)
    for s in hull.simplices:
        s = np.append(s, s[0])  # Here we cycle back to the first coordinate
        ax.plot(pts[s, 0], pts[s, 1], pts[s, 2], "r-")
    
    # Make axis label
    for i in ["x", "y", "z"]:
        eval("ax.set_{:s}label('{:s}')".format(i, i))
    
    plt.show()

    计算结果

    好了,让我们一起来看看最终的实现效果吧~

    56b0ee22010a787ae6895aa172d90a5f.gif
    球面均匀分布4点

    1bbfa8c5a3826b3a6ccf0edce44bfae4.gif
    球面均匀分布36点
    展开全文
  • 阵列信号处理--基础概念

    千次阅读 2020-04-20 14:28:00
    假设一平面波传播方向为\(\mathbf{a}\),频率为\(w\),那么经过空间中的麦克风阵列系统处理后,可以得到该麦克风阵列对平面波的响应为 \[y(t,\mathbf{k})=\mathbf{H}^T\mathbf{v}_{k}(\mathbf{k})e^{jwt} \]其中\(\...

    假设一平面波传播方向为\(\mathbf{a}\),频率为\(w\),那么经过空间中的麦克风阵列系统处理后,可以得到该麦克风阵列对平面波的响应为

    \[y(t,\mathbf{k})=\mathbf{H}^T\mathbf{v}_{k}(\mathbf{k})e^{jwt} \]

    其中\(\mathbf{H}\)表示的是滤波器冲激响应的傅里叶变换,\(\mathbf{k}\)表示波数,其幅度最大值为\(\lvert\mathbf{k}\rvert=\frac{2\pi}{\lambda}\)\(\mathbf{v}_{k}\)表示阵列波形矢量,可以表示成

    \[\mathbf{v}_{k}(\mathbf{k})=\left[\begin{matrix} e^{-\mathbf{k^Tp_{0}}}\\e^{-\mathbf{k^Tp_{1}}}\\\vdots\\e^{-\mathbf{k^Tp_{N-1}}} \end{matrix} \right] \]

    然后对\(y(t,\mathbf{k})\)进行傅里叶变换,可以得到

    \[\mathbf{Y}(w,\mathbf{k})=\mathbf{H}^{T}(w)\mathbf{v}_{k}(\mathbf{k}) \]

    将后面这一项定义为\(\Upsilon(w,\mathbf{k})\),即阵列的频率-波数响应函数,描述了一个阵列对于波数 \(\mathbf{k}\),时频频率\(w\)的输入平面波的复增益。

    \[\Upsilon(w,\mathbf{k})=\mathbf{H}^T(w)\mathbf{v}_{k}(\mathbf{k}) \]

    波束方向图是用入射方向表示的频率-波数响应函数,可以将其表示成

    \[B(w;\theta,\phi)=\Upsilon(w,\mathbf{k})\rvert_{\mathbf{k}=\frac{2\pi}{\lambda}\mathbf{a}(\theta,\phi)} \]

    定义一个复数加权矢量为

    \[\mathbf{w}^{H}[w_{0}^{*},\cdots,w_{N-1}^{*}] \]

    那么\(y(t,\mathbf{k})\)可以表示成

    \[y(t,\mathbf{k})=\mathbf{w}^{H}\mathbf{v}_{k}(\mathbf{k})e^{jwt} \]

    此时

    \[\Upsilon(w,\mathbf{k})=\mathbf{w}^T(w)\mathbf{v}_{k}(\mathbf{k}) \]

    对于均匀线阵而言

    format,png

    \(\mathbf{v}_{k}(\mathbf{k})\)可以表示成

    \[\mathbf{v}_{k}(k)=[e^{j\frac{N-1}{2}\mathbf{k}_{z}d},e^{j(\frac{N-1}{2}-1)\mathbf{k}_{z}d},\cdots,e^{-j\frac{N-1}{2}\mathbf{k}_{z}d}]^T \]

    其中\(\mathbf{k}_z=-\frac{2\pi}{\lambda}cos\theta\),那么此时的\(\Upsilon(w,k_z)\)可以表示成

    \[\Upsilon(w,k_z)=\mathbf{w}^H\mathbf{v}_{k}(k)\\=\sum_{n=1}^{N-1}w_{n}^{*}e^{-j(n-\frac{N-1}2)k_zd} \]

    \(\psi=-k_zd=\frac{2\pi}{\lambda}dcos\theta=\frac{2\pi}{\lambda}du_z\),进而可以将\(\Upsilon(w,k_z)\)表示成

    \[\Upsilon(w,k_z)=e^{-j\frac{N-1}{2}\psi}\sum_{n=1}^{N-1}w_{n}^{*}e^{jn\psi} \]

    波数方向图可以表示为

    \[B(\psi)=e^{-j\frac{N-1}{2}\psi}\sum_{n=1}^{N-1}w_{n}^{*}e^{jn\psi} \]

    对于均匀加权线阵而言,此时\(w_n=\frac{1}{N}\),那么\(\Upsilon(w,k_z)\)\(B(\psi)\)可以表示成

    \[\Upsilon(\psi)=\frac{1}{N}\frac{sin(N\frac{\psi}{2})}{sin(\psi/2)}\\B(u)=\frac{1}{N}\frac{sin(\frac{\pi Nd}{\lambda}u)}{sin(\frac{\pi d}{\lambda}u)} -1\le u\le1 \]

    可以得出\(\Upsilon(\psi)\)是一个周期函数,当N是奇数的时候,其周期为\(2\pi\),当N是偶数的时候,其周期为\(4\pi\),对于任意的N值,其周期为\(2\pi\),下图给出了当\(N=11\)的时候,\(\Upsilon(\psi)\)的变化趋势。

    format,png

    下面分析波束方向图的几个重要参数

    • 3dB带宽(HPBW)
    • 到第一零点的距离
    • 到第一个旁瓣的距离
    • 第一旁瓣的高度
    • 其余零点的位置旁瓣衰减的速率
    • 栅瓣

    对于波束方向图

    \[B(u)=\frac{1}{N}\frac{sin(\frac{\pi Nd}{\lambda}u)}{sin(\frac{\pi d}{\lambda}u)} -1\le u\le1 \]

    (1)3dB带宽:定义为使\(\lvert B(\psi)\rvert^2=0.5\)的点。

    format,png

    (2)第一零点:方向图的零点出现在\(B(\psi)\)的分子为0而分母不为0的时候,则零点的出现满足下面的两个条件

    \[\frac{\pi Nd}{\lambda}u=m\pi,m=1,2,\cdots.\\ \Rightarrow u=m\frac{\lambda}{Nd}\\u \neq \frac{\lambda}{d} \]

    那么第一个零点出现的位置就是\(u=\frac{\lambda}{Nd}\),那么定义\(\Delta u_2=2\frac{\lambda}{Nd}\)为零点-零点波束宽度(BWNN),该值的一半(0.5BWNN)是到第一零点的距离,这个值衡量了阵列分辨两个不同平面波的能力,即瑞利限。如果第二个波束方向图的峰值在第一个波束方向图的第一零点之外,那么就称这个平面波是可以被分辨的。

    (3)旁瓣位置:旁瓣极大值出现的位置在当分子出现极大值的时候,即

    \[sin(\frac{\pi Nd}{\lambda}u)=1 \]

    可以得到解

    \[u=\pm \frac{2m+1}{N}\frac{\lambda}{2d} \]

    (4)栅瓣:栅瓣就是和主瓣波束一样高的波瓣。栅瓣出现分子和分母均为0的时候,栅瓣出现的间隔为

    \[u=m.\frac{\lambda}{d} \]

    如果阵列的间距大于\(\lambda\),那么栅瓣的峰值出现在信号传播区域内,即\(\lvert u \rvert \le1\)的区域。此时就会出现峰值响应模糊的问题。另外标准线阵指\(d=\lambda/2\)的均匀线阵。

    format,png

    上面三幅图分别对应着\(d=\lambda/4;d=\lambda/2;d=\lambda\),可以看到当\(d=\lambda\)的时候波束方向图出现了明显的栅瓣。

    上面三幅图对应的代码依次如下

    clc
    % 阵元个数 
    N = 11;
    psi = (-5 : 1/ 400 : 5) * pi;
    beam = zeros(1, length(psi(:)));
    y = sin(.5 * psi);
    i = find( abs(y) > 1e-12);
    j = 1 : length(psi(:));
    j(i) = [];
    beam(i) = sin((N/2)*psi(i))./(N*y(i));
    beam(j) = sign(cos(psi(j) * ((N+1)/2)));
    
    plot(psi / pi, beam);
    grid on;
    xlabel('{\it \psi}/\pi', 'Fontsize', 9)
    ylabel('频率波数响应函数','Fontsize', 9);
    axis([-5 5 -0.4 1])
    
    clc;
    N = 10;                                % Elements in array
    d = 0.5;                               % spacing wrt wavelength
    beamwidth = 2/(N*d);                   % null-to-null (LL BW is half this)
    D=d*[-(N-1)/2:1:(N-1)/2];              % element locations
    u   = [-0.45:0.01:0.45]; 
    AS  = exp(-j*2*pi*D'*0);               % BP points to 0
    Au  = exp(-j*2*pi*D'*u);
    B   = real(AS'*Au)/N;                          % BP
    
    h=plot(u,B,'-');
    set(h,'LineWidth',1.5)
    hold on
    % HPBW
    I=find(B>=0.707);
    plot([u(min(I)-1) u(max(I)+1)],[B(min(I)-1) B(max(I)+1)],'-')
    plot(u(min(I)-1)*[1 1],B(min(I)-1)*[1 1]+0.03*[-1 1],'-')
    plot(u(max(I)+1)*[1 1],B(max(I)+1)*[1 1]+0.03*[-1 1],'-')
    plot([0.03 0.13],[0.72 0.845],'-')
    h=text(0.155,0.84,'D');
    set(h,'FontName','Symbol')
    text(0.17,0.84,'{\itu}   = HPBW')
    h=text(0.185,0.82,'1');
    set(h,'Fontsize',10)
    text(0.12, 0.7,'0.707')
    % BW-NN
    plot([-0.2 0.2],[-0.3 -0.3],'-')
    plot(-0.2*[1 1],-0.3*[1 1]+0.03*[-1 1],'-')
    plot(0.2*[1 1],-0.3*[1 1]+0.03*[-1 1],'-')
    h=text(-0.05,-0.35,'D');
    set(h,'FontName','Symbol')
    text(-0.035,-0.35,'{\itu   = BWNN}')
    % h=text(-0.02,-0.37,'2');
    % set(h,'Fontsize',10)
    % h=text(0.04,-0.37,'\itNN');
    % set(h,'Fontsize',10)
    % axes
    plot([-1 1 ],[0 0],'-')
    plot([0 0],[-0 1.1],'-')
    % tick marks
    plot(-0.4*[1 1],0.03*[-1 1])
    plot(-0.2*[1 1],0.03*[-1 1])
    plot(0.2*[1 1],0.03*[-1 1])
    plot(0.4*[1 1],0.03*[-1 1])
    text(-0.005,-0.05,'0')
    %tick labels
    xx=0.2;
    yy=-0.1;
    h=text(xx-0.01,yy+0.02,'l');
    set(h,'FontName','Symbol')
    plot([xx-0.02 xx+0.01],[yy-0.01 yy-0.01],'-')
    h=text(xx-0.02,yy-0.05,'\itNd');
    
    xx=-0.18;
    yy=-0.1;
    h=text(xx-0.01,yy+0.02,'l');
    set(h,'FontName','Symbol')
    plot([xx-0.02 xx+0.01],[yy-0.01 yy-0.01],'-')
    h=text(xx-0.02,yy-0.05,'\itNd');
    text(xx-0.04, yy-0.005,'-')
    
    xx=0.41;
    yy=-0.1;
    h=text(xx-0.01,yy+0.02,'l');
    plot([xx-0.02 xx+0.01],[yy-0.01 yy-0.01],'-')
    h=text(xx-0.02,yy-0.05,'\itNd');
    text(xx-0.035, yy-0.005,'2')
    
    xx=-0.4;
    yy=-0.1;
    h=text(xx-0.01,yy+0.02,'l');
    plot([xx-0.02 xx+0.01],[yy-0.01 yy-0.01],'-')
    h=text(xx-0.02,yy-0.05,'\itNd');
    text(xx-0.05, yy-0.005,'-2')
    
    text(0.05,1.1,'\itB(u)')
    hold off
    axis([-0.42 0.42 -0.4 1.2])
    
    %set(gca,'Box','off')
    set(gca,'Visible','off')
    
    
    clc;
    N = 10;
    n = (-(N-1)/2:(N-1)/2).';
    psi = pi * (-3 : 0.001 : 3);
    w = 1/N * [ones(N,1)];
    d = [1/4 1/2 1];
    figure
    for k = 1 : length(d)
        vv = exp(1j * 2 * d(k) * n * psi);
        B(k,:) = 20 * log10(abs(w'*vv));
        subplot(3, 1, k);
        plot(psi / pi, B(k, :));
        hold on
        plot([-1 -1],[-25 0],'--');
        plot([1 1],[-25 0],'--');
        axis([-3 3 -25 5])
        set(gca,'YTick',[-25 -20 -15 -10 -5 0])
        grid on
        xlabel('\itu')
        if k == 1
            plot([-1 1],[2.5 2.5])
            plot([-1 -0.9],[2.5 0.5])
            plot([-1 -0.9],[2.5 4.5])
            plot([0.9 1],[0.5 2.5])
            plot([0.9 1],[4.5 2.5])
            text(-0.4,7,'Visible region')
        end
        hold off
    end
    
    展开全文
  • 一、阵列接收信号模型 1、复信号的表示 实际信号不存在复信号,只存在实信号,那为什么要提出复信号的概念? 载波:在通信技术上,载波(carrier wave, carrier signal或carrier)是由振荡器产生并在通讯信道上传输的...
  • 此工具箱(仍在开发中)是Matlab函数的集合,可用于模拟和处理音频阵列系统收集的数据。这些课程是在肯塔基大学的音频系统实验室开发的。工具箱中程序的贡献者包括: Phil Townsend,ArulKumaran Muthukumarasamy,...
  • DBT虽然是针对雷达的建模...网上已经有解决编译问题的指导帖子:《关于DBT阵列信号处理工具箱在新版Matlab中的移植》 协方差矩阵R的计算方法 % = 'ml': ML-estimate (default). See below. % = 'forback': Forward-...
  • 语音专题第一讲,麦克风阵列的语音信号处理技术

    万次阅读 多人点赞 2016-08-31 21:31:25
    2011年11月毕业于英国爱丁堡大学通信与信号处理专业,曾任诺基亚,联想,微软高级音频工程师。现在Horizon-Robotics负责语音相关硬件系统设计,涉及远场高灵敏度麦克风阵列设计,高精度音频硬件编解码器评估验证,...
  • 语音信号处理入门入籍和课程推荐

    千次阅读 2020-11-29 10:39:50
    欢迎关注我的公众号,微信搜一搜...作为刚刚入门音频信号处理(语音信号处理包括但不限于语音合成、语音识别、语音情感分析、车辆声音信号处理、麦克风阵列信号处理等)的小懵懂们总是会问以下问题(以下问题均摘自
  • 最近在arXiv上看到一篇关于深度学习在音频信号处理中的进展的文章,感觉写的不错,所以根据自己的理解和大家分享一下。如果有些地方博主理解的不对,或者解释不清,可以在下面评论,博主会一一回复。 论文链接:...
  • 麦克风阵列技术名词解释背景介绍远场拾音声源定位麦克风及音频信号什么是麦克风麦克风的分类麦克风的对比选型麦克风阵列简介语音交互的优势人机交互痛点近场语音和远场语音麦克风阵列的功能麦克风阵列构型 ...
  • 使用python写了一个测试麦克风阵列传递函数的demo,有需要的自取。该代码使用了第三方库ThinkDSP。 1. 传递函数 首先解释下什么是传递函数: 把具有线性特性的对象的输入与输出间...在音频信号中,传递函数通常指频...
  • 阵列信号基础

    千次阅读 2018-01-06 14:30:17
    阵列信号处理中,矩阵代数扮演着至关重要的角色。 特征值和特征向量 如果设A∈Cn×n,e∈Cn\mathbf A \in \mathbf C^{n \times n},\mathrm e \in \mathbf C^{n} ,如果标量λ\lambda 和非零矢量ee满足方程 Ae=λe...
  • 1.前言 自动语音识别、语音模式识别和说话人识别及确认等应用对噪声十分敏感,信源定位识别是音频和语音信号捕捉处理应用的一个关键的预处理功能。特别是基于微机电系统(MEMS) 的麦克风阵列出现后,麦克风阵列音频...
  • 1. 创建一个正弦波在这个...因此,我们需要一个模数转换器将模拟信号转换为数字信号。有关转换器如何工作的详细信息超出了本书的范围。关键是采样率,即转换器每秒采样模拟信号的次数。现在,采样率对我们来说并不重...
  • 信号处理和深度学习的结合 2.1 处理的依据是“规则+学习” 1)客观物理模型 2)语音信号的特性:时域特性、频域和空域特性 3)海量音频数据先验信息 即保留了声音传播的物理规律和信号本身的特性,又引入了先验数据...
  • python求MIC阵列相位差 以下主要讲如何使用python求麦克风阵列信号间的相位差。以两个信号为例,假设该两个信号为两路麦克风信号获得的数据。 2.1 实现思路 录音音频中的信号为时域信号,需要通过傅立叶变换变成...
  • MATLAB语音信号处理系统GUI

    千次阅读 2021-08-25 11:53:46
    基于MATLAB的语音信号处理【摘 要】 Matlab语音信号处理是指利用matlab软件对音频信号进行读取,并对音频信号进行采样分析及离散傅里叶变换,以方便对其在频域上进行调制滤波等相关的操作。本次实验在提取音频信号...
  • 数字阵列麦克风处理技术概述

    千次阅读 2017-12-04 15:44:48
    2011年11月毕业于英国爱丁堡大学通信与信号处理专业,曾任诺基亚,联想,微软高级音频工程师。现在Horizon-Robotics负责语音相关硬件系统设计,涉及远场高灵敏度麦克风阵列设计,高精度音频硬件编解码器评估验证,...
  • 详细内容见群文件,欢迎大家加入音频/识别/合成算法群(696554058)交流学习,谢谢! 本内容原创,转载和使用请注明出处,谢谢配合; Zheng-Hua Tan 的主页: http://kom.aau.dk/~zt/index....
  • 数字信号处理——绪论总结

    千次阅读 多人点赞 2020-09-13 16:50:59
    数字信号处理绪论总结,包括介绍背景;信号处理、数字信号处理;数字信号处理学科概览;数字信号处理的特点;数字信号处理的局限性;数字信号处理的应用。
  • 使用SystemVerilog为DE0-Nano-SoC实现的实时FPGA音频处理通道条。 由John Matson和Igor Gasovic-Varga为BCIT的ELEX 7660开发,由Robert Trost教授。 用法 这是一个硬件描述项目,专为DE0-Nano-SoC中的FPGA设计。 该...
  • 数字音频分析和处理系统

    万次阅读 2018-01-04 22:47:15
    设计一个基于MATLAB的数字音频分析与处理系统,能够实现对数字音频的测试分析与处理。要求: 1) 输入语音信号源为实际环境采集语音; 2)至少实现1种音效测试分析功能(频率响应,瀑布频谱图,相位响应曲线,抗...
  • 目录麦克风阵列的原理麦克风阵列的功能麦克风阵列解决噪声干扰存在的干扰算法1.多通道降混响算法(室内)2.多通道点干扰抑制算法(室外)3.多通道目标说话人提取算法(声纹,不适用)麦克风阵列常用技术1.自动增益...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,204
精华内容 1,281
关键字:

音频阵列信号处理