麦克风阵列 订阅
麦克风阵列(Microphone Array),从字面上,指的是麦克风的排列。也就是说由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。早在20世纪70、80年代,麦克风阵列已经被应用于语音信号处理的研究中,进入90年代以来,基于麦克风阵列的语音信号处理算法逐渐成为一个新的研究热点。而到了“声控时代”,这项技术的重要性显得尤为突出。 展开全文
麦克风阵列(Microphone Array),从字面上,指的是麦克风的排列。也就是说由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。早在20世纪70、80年代,麦克风阵列已经被应用于语音信号处理的研究中,进入90年代以来,基于麦克风阵列的语音信号处理算法逐渐成为一个新的研究热点。而到了“声控时代”,这项技术的重要性显得尤为突出。
信息
应    用
语音信号处理
外文名
The microphone array
位    置
接收区域
中文名
麦克风阵列
实    质
信号耦合
开始时间
20世纪70、80年代起
麦克风阵列介绍
在频率响应中也可以根据时域中波束形成与空间滤波器相仿的应用,分析出接收到语音信号音源的方向以及其变化。而这些分析都可以由极坐标图以波束形式来显示语音信号的强度与角度。通常在手机(如苹果iPhone、三星Galaxy系列等)和电脑(如联想小Y系列等)中常采用。采用该技术,能利用两个麦克风接收到声波的相位之间的差异对声波进行过滤,能最大限度将环境背景声音清除掉,只剩下需要的声波。对于在嘈杂的环境下采用这种配置的设备,无杂音。麦克风阵列与天线阵列不同的
收起全文
精华内容
下载资源
问答
  • 麦克风阵列

    2014-04-18 11:33:25
    麦克风阵列信号处理的书,详细讲解了麦克风阵列的原理及其应用。
  • 麦克风阵列资料.zip

    2020-09-06 09:17:27
    MAX4468麦克风阵列资料,MAX4468麦克风阵列资料,MAX4468麦克风阵列资料,MAX4468麦克风阵列资料,MAX4468麦克风阵列资料,MAX4468麦克风阵列资料
  • 麦克风阵列技术名词解释背景介绍远场拾音声源定位麦克风及音频信号什么是麦克风麦克风的分类麦克风的对比选型麦克风阵列简介语音交互的优势人机交互痛点近场语音和远场语音麦克风阵列的功能麦克风阵列构型 ...

    名词解释

    缩略语 全名称 简单释义
    API Application Programming Interface 应用程序编程接口
    DES Data Encryption Standard 数据加密标准
    3DES Triple DES, Triple Data Encryption Algorithm 三重数据加密算法块密码的通称
    JSON JavaScript Object Notation JavaScript对象标记
    SaaS Software as a Service 软件即服务
    SDK Software Development Kit 软件开发工具包
    XML eXtensible Markup Language 可扩展标记语言
    ECM Electret Condenser Micphone 驻极体电容麦克风
    HCI Human Computer Interaction 人机交互
    HMI Human Machine Interaction 人机交互
    HCSI Human Computer Speech Interaction 人机语音交互
    AI Artificial Intelligence 人工智能
    ANN Artificial Neural Networks 人工神经网络
    BP Back Propagation 反向传播
    HMM Hidden Markov Model 隐马尔可夫模型
    ASR Automatic Speech Recognition 自动语音识别
    NLP Natural Language Processing 自然语言处理
    OCR Optical Character Recognition 光学字符识别
    TTS Text To Speech 语音合成
    AEC Acoustic Echo Canceller 自动回声消除
    AGC Automatic Gain Control 自动增益控制
    ANS Automatic Noise Suppression 自动噪声抑制
    BSS Blind Source Separation 盲源分离
    DBF Digital Beam Forming 数字波束形成
    DOA Direction Of Arrival 波达方向
    DSP Digital Signal Processing 数字信号处理
    NS Noise Suppression 噪声抑制
    SDB Super Directive Beamforming 超指向波束形成
    VAD Voice Activity Detection 语音活动检测
    VQE Voice Quality Enhancement 语音质量增强
    SIRI Speech Interpretation & Recognition Interface 语音识别接口
    WWDC World Wide Developers Conference 苹果全球开发者大会

    背景介绍

    麦克风阵列是由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。

    远场拾音

    指运用远场识别和降噪技术,使拾音距离达到5米。

    声源定位

    利用麦克风阵列,实现180°/360°语音信号采集,并能通过声源定位来确定目标说话人的方向。

    麦克风及音频信号

    什么是麦克风
    • 麦克风是英文Microphone的音译名称,是业界的一种通俗叫法,有时候也简单称作话筒,香港和台湾地区也会称作微音器、拾音器。

    • 麦克风的正式中文学术名称是传声器,是一种将声音信号转换为电子信号的换能器,即把声信号转成电信号。

    • 消费级市场的麦克风基本都是标量麦克风,也就说只能采集单一的物理量信息——声压。

    ①声压是指声波通过媒质时,由振动所产生的压强改变量,也可以理解为声音的幅度或者强度。声压常用字母"p"表示,单位是帕斯卡(符号Pa)。声压的帕斯卡单位并不方便人们识记,一般就以对数形式来衡量有效声压相对于一个基准值的大小来表示,即声压级,其单位是分贝(符号dB)。
    ②人类对于1KHz的声音的听阈为20 x10-6Pa,通常以此作为声压级的基准值。这样讲可能晦涩难懂,我们来简单的类比一下:人类的呼吸声压是60x10-6Pa左右,声压级大约10dB,火箭发射的声压是4000Pa左右,声压级大约165dB,闪光弹的声压超过1万Pa,声压级大约175dB。

    • 为了描述麦克风的性能,有几个性能指标是非常关键的,这包括了灵敏度、指向性、频率响应、阻抗、动态范围、信噪比、最大声压级(或AOP,声学过载点)、一致性等。这几个指标其实都好理解,决定了麦克风的性能,而且每个指标都非常关键,缺一不可。当然这些指标相对于喇叭的T-S参数来说,真的是简单的了许多。

    • 麦克风是典型的传感器产业,但是其技术迭代非常迅速,近年来外观尺寸也发生了很大变化,集成到电路板中后一般人很难快速找出。

    麦克风的分类

    制作麦克风硬件最常用的两种技术是MEMS微机电和ECM驻极体电容技术。这两种技术工作原理类似,在实际应用场景中可以根据具体需要在二者之中进行选择。

    一、 MEMS微机电麦克风
    微机电麦克风也称麦克风芯片或硅麦克风,硅麦一般都集成了前置放大器,甚至有些硅麦会集成模拟数字转换器,直接输出数字信号,成为数字麦克风。

    1. MEMS传声器采用置于印刷电路板(PCB)并以机盖防护的MEMS(微机电系统)组件构建而成。在外壳上制作小孔,便于声音进入传声器,孔位于顶盖的叫作顶部端口型号,而孔位于PCB内部的叫作底部端口型号。MEMS组件设计通常会在半导体晶圆上构造机械振膜和安装结构。
    2. MEMS振膜形成一个电容器,而声压波则会引起振膜的运动。MEMS传声器通常含有另一个半导体晶圆,用作音频前置放大器,将MEMS的变化电容转换为电信号。如果用户需要模拟输出信号,可为其提供音频前置放大器的输出。如果用户需要数字输出信号,就在与音频前置放大器所处的同一晶圆上加入模数转换器(ADC)。
    3. MEMS传声器中数字编码采用的通用格式是脉冲密度调制(PDM),可以只和一个时钟和一条单独的数据线通信。数据采用单比特编码,从而简化了接收器中数字信号的解码。

    二、ECM柱极体麦克风

    1. 驻极体振膜(具有固定表面电荷的材料)靠近导电板隔开放置,并且和MEMS传声器相似,也会形成一个电容器,以气隙作为电介质。通过电容器的电压随着电容值的变化而变化,而电容的变化是由移动驻极体振膜的声压波引起的,ΔV= Q /ΔC。电容器电压变化由传声器外壳包覆的JFET进行放大和缓冲。JFET通常采用共源配置,而外部应用电路则采用外部负载电阻和隔直电容。
    2. 简单理解:MIC内部设计为一个电容,电容的一端是固定的,另一端是可动的,两端之间的距离和声音输入有关系,声音的大小、频率导致金属片震动产生幅度和频率的变化,在驻极体电容这边就转换为电容电荷量大小与充电快慢,在MIC输出端就表示为一个幅度和频率有随着声音输入变化而变化的电信号。
    麦克风的对比选型
    MEMS微机电麦克风 ECM柱极体电容麦克风
    优点 体积小,可SMT、产品稳定性好 技术成熟、价格便宜
    缺点 价格偏高 体积大,不方便SMT、引线长,造成信号衰减、生产工序多,一致性差、灵敏度不稳定

    麦克风阵列简介

    语音交互的优势

    相比于传统的键盘输入,语音输入方式在速度及准确率方面更具优势。正常来说语音输入的速度是传统输入方式的三倍以上,而随着深度学习技术的发展,当前语音的识别率可以达到97%。

    人机交互痛点

    1)识别距离近:语音交互受限距离不能进行远场的识别
    2)对话不智能:不能持续进行多轮对话不能打断
    3)嘈杂环境:在嘈杂环境下识别率低饱受噪声干扰
    4)响应时间慢:不能即时快速响应交互不流畅导致体验下降

    近场语音和远场语音

    一、 近场语音
    大家应该都体验过有屏手持设备的语音交互,如Siri以及各种语音助手App,我们把这种采用单颗麦克风进行拾音及识别的场景叫做近场语音识别。
    近场语音存在一些先天性的缺陷:
    1)近距离讲话:1米以内交互效果较好,超出1米后很难识别;
    2)对环境有要求:尽量安静,周围不能有噪声干扰;
    3)标准人声发音:字正腔圆普通话,其它的很难支持;
    4)无法自动多轮交互:需由用户触发一次交互的开始及结束;
    5)不支持打断功能:机器发声结束后才可以进行下一轮对话。

    二、远场语音
    1)提供麦克阵列前端算法,解决人机交互中,距离较远带来的识别率较低的问题,让人机对话更加方便
    2)通过远场语音识别技术,可以让用户,即使在三至五米的距离,也可对智能家居进行语音操作

    麦克风阵列的功能

    人机之间的语音交互(这里主要指智能硬件、机器人等),区别于传统的有屏手持设备,涉及到复杂的环境和远距离拾音的问题。通过麦克风阵列使语音交互距离大大增加,使人机交互更加自然,更趋向于人人交互。
    在这里插入图片描述

    • 人机交互过程中的噪声可以分为以下几类:回声,混响,干扰和背景噪声;
    • 麦克风阵列具备的功能:自动增益控制;回声控制、回声消除、回声抑制;去混响;声源定位、波束形成、语音增强、盲源分离、干扰抑制;噪声控制、主动噪声控制、降噪等。
    麦克风阵列构型

    在这里插入图片描述

    1. 六麦环形阵列:六麦环形阵列适用于应用场景较为复杂(例如商场、办公室),对角度定位要求比较高,回声消除和识别率要求较高的机器人和家居产品解决方案。
    2. 四麦线性阵列:四麦线性阵列适用于车载,空调,电视,应用型机器人等智能装备,支持0~180°角度定位,回声消除和连续唤醒等功能。
    3. 两麦线性阵列:两麦线性阵列对芯片性能要求较低,适用于低成本的智能装备解决方案,支持回声消除和噪声抑制等功能。

    以六麦阵列为例,其具备以下功能特性:
    1)波束形成(波束形状是阵列对不同频率及方向的信号的响应,它与阵列麦克风数目、几何形状、源信号位置以及频率有关。);
    2)回声消支持信噪比-30dB左右;
    3)平稳噪声滤波;
    4)方向性非平稳噪声抑制;
    5)语音增强和去混响;
    6)声源定位精度±10°。

    展开全文
  • 麦克风阵列信号处理

    2018-11-22 15:38:44
    麦克风阵列信号处理
  • 麦克风阵列技术麦克风阵列技术详解声源定位延时估计角度计算波束形成波束形成模型波束形成基本理论去混响麦克风阵列结构设计声学结构确认流程 紧接上一个博客文章,此为第三部分。上一部分见:麦克风阵列技术 二 ...

    紧接上一个博客文章,此为第三部分。上一部分见:麦克风阵列技术 二 (自动增益控制 自动噪声抑制 回声消除 语音活动检测)

    麦克风阵列技术详解

    声源定位

    麦克风阵列可以自动检测声源位置,跟踪说话人,声源定位信息既可以用于智能交互,也可以用于后续的空域滤波,对目标方向进行语音增强。

    利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estimation),DOA估计的其中一种方法是计算到达不同阵元间的时间差,另外一种可以看这里,这篇主要介绍经典的GCC-PHAT方法
    简单说明问题背景,信号模型如下图,远场平面波,二元阵列

    要计算得到θθ,其实就是要求两个阵元接收到的信号时间差,现在问题变成到达时间差估计(Time-Difference-of-Arrival Estimation),因此,基于延时估计的DOA方法,其实也可以看做是分两步进行的,第一步是估计延时,第二步是计算角度,与之相对应的基于空间谱估计的DOA方法就是一步完成的。下面就分两步进行介绍

    延时估计

    一、 互相关函数(cross-correlation function)

    计算y1(k)y1(k)与y2(k)y2(k)的时间差,可以计算两个信号的互相关函数,找到使互相关函数最大的值即是这两个信号的时间差
    离散信号的互相关函数

    R(τ)=E[x1(m)x2(m+τ)]R(τ)=E[x1(m)x2(m+τ)]

    求时间差就是找到互相关函数最大时的点

    D=argmaxR(n)D=argmaxR(n)
    MATLAB代码如下:

    %%
    % Load the chirp signal.
    load chirp;
    c = 340.0;
    Fs = 44100;
    %%
    d = 0.25;
    N = 2;
    mic = phased.OmnidirectionalMicrophoneElement;
    % array = phased.URA([N,N],[0.0724,0.0418],'Element',mic);
    array = phased.ULA(N,d,'Element',mic);
     
    %%
    % Simulate the incoming signal using the |WidebandCollector| System
    % object(TM).
    arrivalAng = 42;
    collector = phased.WidebandCollector('Sensor',array,'PropagationSpeed',c,...
        'SampleRate',Fs,'ModulatedInput',false);
    signal = collector(y,arrivalAng);
     
    x1 = signal(:,1);
    x2 = signal(:,2);
     
    N =length(x2);
    xc = xcorr(x1,x2,'biased');
    [k,ind] = max(xc);
    an = acos((ind-N)/Fs*340/d)*180/pi
     
    xc12 = zeros(2*N-1,1);
    m = 0;
    for i = -(N-1):N-1
        m = m+1;
        for t = 1:N
            if 0<(i+t)&&(i+t)<=N
                xc12(m) = xc12(m) + x2(t)*x1(t+i);
            end 
        end
    end
    xc12 = xc12/N;
    

    以上程序中的循环就是上面的定义公式,运行程序可以看到循环部分计算的互相关与直接调用matlab的xcorr结果相同(注意matlab中互相关默认没做归一化),找到互相关函数的最大值就可以得到时间差 。

    二、广义互相关(generalized cross-correlation)

    理论上使用上面个介绍的CCF方法就可以得到时间差,但是实际的信号会有噪声,低信噪比会导致互相关函数的峰值不够明显,这会在找极值的时候造成误差。
    为了得到具有更陡峭极值的互相关函数,一般在频域使用一个加权函数来白化输入信号,这就是经典的广义互相关方法。
    由维纳-辛钦定理可知,随机信号的自相关函数和功率谱密度函数服从一对傅里叶变换的关系,即x1、x2x1、x2的互功率谱可由下式计算

    P(ω)=∫+∞?∞R(τ)e?jωτdτP(ω)=∫?∞+∞R(τ)e?jωτdτ

    R(τ)=∫+∞?∞P(ω)ejωτdωR(τ)=∫?∞+∞P(ω)ejωτdω

    这一步是把互相关函数变换到了频域,哦对,上面说到是想白化互相关函数,那就把上面第二式添加一个系数

    R(τ)=∫+∞?∞A(ω)P(ω)ejωτdωR(τ)=∫?∞+∞A(ω)P(ω)ejωτdω

    设计不同的频域系数A(ω)A(ω)对应着不同方法,这里只介绍 PHAT(phase transform)方法,即取系数如下:

    A(ω)=1|P(ω)|A(ω)=1|P(ω)|

    基本思想就是求时间差只需要相位信息,舍弃不相关的幅度信息以提高健壮性,可以看到当A(ω)=1A(ω)=1的情况下就是经典互相关
    P(ω)P(ω)为复数,可以表示为|P(ω)| * e - jωp|P(ω)| * e - jωp,去掉幅度信息后,就只剩相位信息e - jωpe - jωp了,要得到相位信息,可以用P(ω)abs(P(ω))P(ω)abs(P(ω))计算,也可以直接用matlab中的angle函数计算,即angle(P(ω))angle(P(ω)),
    在这里插入图片描述
    几行代码验证下:

    x1 = [1,2,3,7,9,8,3,7]';
    x2 = [4,5,6,5,4,3,8,2]';
     
    [tau,R,lag] = gccphat(x1,x2) 
     
    N = length(x1)+length(x2)-1;
    NFFT = 32;
    P = (fft(x1,NFFT).*conj(fft(x2,NFFT)));
    A = 1./abs(P);
    R_est1 = fftshift(ifft(A.*P));
    range = NFFT/2+1-(N-1)/2:NFFT/2+1+(N-1)/2;
    R_est1 = R_est1(range);
     
    R_est2 = fftshift(ifft(exp(1i*angle(P))));
    R_est2 = R_est2(range);
    

    可以看到,三种不同写法得到的R_est1 、R_est2 与matlab自带函数gccphat计算得到的R相等。

    那上面例子中的宽带语音信号,用GCC-PHAT方法得到具有陡峭峰值互相关函数,找到互相关最大时的点,结合采样频率Fs与与麦克风间距dFs与与麦克风间距d,就可以得到方向信息。

    角度计算

    上面的内容计算了两个麦克风的延时,实际中假设阵列中麦克风个数为NN,则所有麦克风间两两组合共有N(N-1)/2N(N-1)/2对,记第kk个麦克风坐标为(xk,yk,zk)(xk,yk,zk),声源单位平面波传播向量u? =(u,v,w)u→=(u,v,w),如果麦克风k,jk,j之间的延时为τkjτkj,则根据向量关系有下式,其中c为声速,
    C * τkj = -(xk→-xj→)?u? c?Τkj = -(xk→-xj→) * u→

    这样看起来不够直观,那就代入坐标写成标量形式如下:
    Cτkj=u(xk-xj)+v*(yk-yj)+w*(zk-zj)cτkj=u(xk-xj)+v*(yk-yj)+w*(zk-zj)

    当有多个麦克风时,每两个麦克风就可以得到一组上式,N个麦克风就会有N*(N-1)/2个等式N个麦克风就会有N*(N-1)/2个等式,声源单位传播向量u? =(u,v,w)u→=(u,v,w)有三个未知数,因此最少只需要三组等式,也就是三个麦克风就可以计算出声源方向,这里就先假定N=3N=3,可以得到方程组如下:
    在这里插入图片描述
    写成矩阵形式
    在这里插入图片描述
    求出u? =(u,v,w)u→=(u,v,w)后,由正余弦关系就有了角度值了
    θ=acos(1w)θ=acos(1w)
    α=acos(usin(acos(1w)))α=acos(usin(acos(1w)))

    当麦克风数量N>3N>3时,其实所有组合信息对于角度值的计算是有冗余的,这个时候可以求出所有组合的角度值,然后利用最小二乘求出最优解,这样可以利用到所有的麦克风的信息来提高角度估计的稳定性。

    波束形成

    DBF是Digital Beam Forming的缩写,译为数字波束形成 或数字波束合成。数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域。
    专业:电子、通信与自动控制技术阵列信号处理最主要的研究内容包括DOA估计和波束形成。较早的DOA估计方法又称为波束形成方法,而该波束形成方法利用了空域维纳滤波的匹配概念,由阵列流形在信号空间中的投影大小判定信号方向,后来随着研究的深入,高分辨谱估计技术的发展,才把DOA估计和波束形成加以区分,DOA估计是为了确定信号的方位,从接收数据中测出信号方向,不管信号是有用信号还是干扰信号,在DOA估计方向图中都表现为峰值,而此峰值并不是实际阵列输出功率;波束形成是传统滤波的空域拓展,其根本目的是有效提取有用信号并抑制噪声和干扰,在方向图中表现为有用信号方向形成峰值、干扰方向形成零陷,可以认为DOA估计为波束形成的前端处理,确定期望信号和干扰方向后,阵列对期望信号方向形成波束并在干扰方向形成零陷。

    DBF体现的是声源信号的空域选择性,许多传统波束形成方法具有线性处理结构;波束形成需要考虑三个方面:
    1)麦克风阵列个数;
    2)性能;
    3)鲁棒性。

    在麦克风较少时,波束形成的空域选择性差,当麦克风数量较多时,其波束3dB带宽较为窄,如果估计的目标声源方向有稍有偏差,带来的影响也更大,鲁棒性不好。通常鲁棒性和性能是对矛盾体,需要均衡来看。

    WebRTC使用了如下几个点以提高鲁棒性和性能(其算法性能优先):
    1.可以使用多个后置滤波器而非一个,2.每个后置滤波使用新的结构。

    每个后置滤波器为每个声学场景的时频域bin在均方误意义上提供了最优实增益。在WebRTC中后置滤波器根据声源的空域协方差矩阵,干扰源协方差矩阵,绕射场(零阶贝塞尔函数计算)以及临近麦克风的时频信号信息求得。

    这样的话就可以为每个声源和干扰场景计算出不同的最优后置滤波器,也可以使用级联的方式灵活使用多个不同选择性的后置滤波器。
    当前现存的波束形成算法的鲁棒性成为它们使用的一道门槛,如MVDR和多通道维纳滤波。

    WebRTC为了增强鲁棒性,在求最优矩阵时,对声源信号添加了限制条件,使用Gabor frame将声源变成时频bin的系数,对这些bin按照目标声源和干扰声源附加了条件,如果满足条件,则门操作让目标声源通过,而让干扰源乘以零以实现选择最优目标信号。

    在WebRTC中这些增益系数称为自适应标量(上面的实)乘法增益,均方误差准则被用来做为计算的准则。由于阵列方向响应随频率是变换的,而语音信号又是宽带信号,所以WebRTC中使用了gabor变换来表示声音信号。增益源于目标信号和干扰的比例。

    波束形成模型

    以均匀线阵为例:
    在这里插入图片描述
    按窄带模型分析:
    在这里插入图片描述
    可以写成矩阵形式:
    在这里插入图片描述
    其中a(θ)为方向矢量或导向矢量(Steering Vector),波束形成主要是针对各个接收信号X进行权重相加。

    波束形成基本理论
    1. A-波束形成
      权重相加:在这里插入图片描述
      不同的波束形成,就是不同的权重W。

    2. B-瑞利限
      以均匀直角窗为例:
      在这里插入图片描述
      得出方向图:
      在这里插入图片描述
      主瓣宽度正比于孔径宽度的倒数:
      在这里插入图片描述
      因为孔径的限制,造成波束宽度存在限制(不会无限制小),近而落在主瓣波束内部的两个信号便会混在一起而分不清,这就存在瑞利限的问题。

      直角窗主瓣宽度为:
      在这里插入图片描述
      其中λ为入射波长,theta1为入射角,Md为阵列孔径。

    3. C-常见窗函数

      对于空间不同的阵列信号,类似采样分析(空域采样),自然可以加窗进行处理,不加窗可以认为是直角窗,另外也可以选择汉明窗、hanning窗等等。

      加窗可以改变波束宽度以及主瓣、副瓣等特性,可以借助MATLAB 的wvtool观察不同窗函数特性。

    N = 192;
    w = window(@blackmanharris,N);
    wvtool(w)
    

    在这里插入图片描述

    1. D-DFT实现
      阵列的采样间隔是相位信息:
      在这里插入图片描述
      这就类似于频域变换,只不过这里的相位信息:对应的不是频率,而是不同位置,可以看作空域的变换。

      分别对阵列信号进行直接加权、加窗、DFT实现:

    clc;clear all;close all
    M = 32;
    DOA = [-30 30];
    SNR = 10;
    theta = -90:.1:90;
    len = length(theta);
    SignalMode = 'Independent';
    fc = 1e9;
    c = 3e8;
    lambda = c/fc;
    d = lambda/2;
    N = 100;%snap points
    x = StatSigGenerate(M,N,DOA,SNR,SignalMode,lambda,d);
    R_hat = 1/N*x*x';
    output = zeros(3,len);
    for i = 1:len
        a = exp(1j*2*pi*[0:M-1]'*sind(theta(i))*d/lambda);
        W = (inv(R_hat)*a)*(1./(a'*inv(R_hat)*a));
        output(1,i) = mean(abs(W'*x),2);
        output(2,i) = 1./(a'*inv(R_hat)*a);
        output(3,i) = a'*x*ones(N,1);
    end
    output = abs(output);
    output = output - repmat(mean(output.')',1,size(output,2));
    output = output./repmat(max(output.')',1,size(output,2));
    %plot
    plot(theta,output(1,:),'k',theta,output(2,:),'r--',theta,output(3,:),'b');
    legend('MVDR 波束','MVDR 谱','固定权重 波束');
    

    在这里插入图片描述

    1. E-自适应波束形成
      直接相加也好、加窗也好,都是固定的权重系数,没有考虑到信号本身的特性,所以如果结合信号本身去考虑就形成了一系列算法:自适应波束形成。

      这类步骤通常是:
      1)给定准则函数;
      2)对准则函数进行求解。

      准则常用的有:信噪比(snr)最大准则、均方误差最小准则(MSE)、线性约束最小方差准则(LCMV)、最大似然准则(ML)等等;

      求解的思路大体分两类:1)直接求解,例如MVDR中的求解;2)也可以利用梯度下降的思想,如随机梯度下降、批量梯度下降、Newton-raphson等方法,不再详细说明。

      以MVDR举例:
      在这里插入图片描述
      这里采用直接求解的思路:
      在这里插入图片描述
      将求解的W带入
      在这里插入图片描述
      即可得到波束形成。

    2. F-栅瓣现象
      栅瓣是一类现象,对应干涉仪就是相位模糊(相位超过2*pi),对应到Beamforming就是栅瓣问题,具体不再论述,给出现象(同样的波束,在不同的位置分别出现):
      在这里插入图片描述

    3. G-波束形成与空间谱

      之前分析过MVDR的方法,得到的输出(含有约束的最小均方误差准则)为:
      在这里插入图片描述
      有时候也称这个输出为空间谱,其实就是|y2(t)|,但这个与MUSIC等算法的谱还不是一回事,只是有时候也被称作空间谱,所以这里多啰嗦几句,分析这个说法的来源。

      已知N个采样点的信号,对其进行傅里叶变换:
      在这里插入图片描述
      进一步得到功率谱密度:
      在这里插入图片描述
      根据上文的分析:y(t)其实对应的就是空域变换(可借助DFT实现),类比于时频处理中的频域变换。而这里又可以看到频域变换的平方/长度,对应就是功率谱,这是频域的分析。

      对应到空域,自然就是|y2(t)|/长度,对应空间谱,长度只影响比例关系,所以MVDR的最小方差输出被称作:空间谱也是合适的。

      给出一个测试(这里如果),对比MVDR的y(t)、MVDR功率谱以及普通Beamforming的结果:

    clc;clear all;close all
    M = 32;
    DOA = [-30 30];
    SNR = 10;
    theta = -90:.1:90;
    len = length(theta);
    SignalMode = 'Independent';
    fc = 1e9;
    c = 3e8;
    lambda = c/fc;
    d = lambda/2;
    N = 100;%snap points
    x = StatSigGenerate(M,N,DOA,SNR,SignalMode,lambda,d);
    R_hat = 1/N*x*x';
    output = zeros(3,len);
    for i = 1:len
        a = exp(1j*2*pi*[0:M-1]'*sind(theta(i))*d/lambda);
        W = (inv(R_hat)*a)*(1./(a'*inv(R_hat)*a));
        output(1,i) = mean(abs(W'*x),2);
        output(2,i) = 1./(a'*inv(R_hat)*a);
        output(3,i) = a'*x*ones(N,1);
    end
    output = abs(output);
    output = output - repmat(mean(output.')',1,size(output,2));
    output = output./repmat(max(output.')',1,size(output,2));
    %plot
    plot(theta,output(1,:),'k',theta,output(2,:),'r--',theta,output(3,:),'b');
    legend('MVDR 波束','MVDR 谱','固定权重 波束');
    

    在这里插入图片描述
    如果将d = lambda/2;改为d = lambda/0.5;,自然就有了栅瓣:
    在这里插入图片描述

    去混响

    混响是指声波在室内传播时,要被墙壁、天花板、地板等障碍物反射,当声源停止发声后,声波在室内要经过多次反射和吸收,最后才消失。这种现象称为混响。因此,当声源和麦克风之间的距离越远,反射声占的比例就越高,混响就严重。
    经典的去混响方法包括形成拾音波束来减少反射声和基于反卷积的去混响方法。

    麦克风阵列结构设计

    MUC 孔的孔深孔径比越小越好,即开孔越大越好,深度越小越好,尽量向1:1靠近。孔深与孔径比值越大,麦克频响的震点越像低频靠近,要求震点在12KHz以上。最少也要在8KHz以上。喇叭腔体不能漏气。这是因为,喇叭正反两面的声波相位相差180度,当音腔有漏气时,声波会发生抵消,尤其是低频频段。
    麦克和喇叭的失真都要小。麦克失真小于4%,喇叭失真小于10%,由于喇叭低频失真严重些,会超过10%,可以考虑增加滤波器滤掉低频成分。
    喇叭腔体四周与其他机构件保留1mm的距离,防止腔壳与机构接触产生异音。
    喇叭鼓膜上方与机构件保留1.5mm的距离,以防鼓膜振动碰到机构件产生异音。
    喇叭与机构件有接触的地方,要增加泡面,以起到缓冲、减振的效果,防止喇叭振动时与机构件碰撞产生异音。

    声学结构确认流程

    1)远程会议或现场结构设计评估
    确认麦克阵列构型,确认声腔及安装结构设计,确认进声孔深度、直径大小等;
    2)声学实验室录音效果评估-第一阶段
    计算裸麦和带声腔结构的麦克风之间的录音之间谐波程度,根据分析结果确定是否通过。
    3)声学实验室录音效果评估-第二阶段
    分别利用裸麦和带声腔结构的麦克风信号做基于相位的声源定位,如果两者定位误差小于5°,则认为通过该项测试。
    4)声学实验室录音效果评估-第三阶段
    分别利用裸麦和带声腔结构的麦克风录音数据进行识别,效果差距在2%以内,则认为远场识别方面无问题。

    展开全文
  • 麦克风阵列教程

    2018-10-08 08:05:51
    适合初学者。介绍了波传导方程,麦克风阵列定位和降噪,远近场处理方法。
  • 麦克风阵列入门

    万次阅读 多人点赞 2018-09-25 18:01:46
    麦克风阵列入门(一) 什么是麦克风阵列: 所谓麦克风阵列其实就是一个声音采集的系统,该系统使用多个麦克风采集来自于不同空间方向的声音。 为什么使用麦克风阵列: 麦克风按照指定要求排列后,加上相应的算法...

    麦克风阵列入门(一)

    什么是麦克风阵列:

    所谓麦克风阵列其实就是一个声音采集的系统,该系统使用多个麦克风采集来自于不同空间方向的声音。

    为什么使用麦克风阵列:

    麦克风按照指定要求排列后,加上相应的算法(排列+算法)就可以解决很多房间声学问题,比如声源定位、去混响、语音增强、盲源分离等。

    【注】:在深入理解概念之前,我们先理解一下麦克风的知识

    什么是麦克风的指向性(方向性):

    麦克风的方向性是指麦克风可以接收到语音的方向。声音可以从不同的方向传达到麦克风,麦克风的前面/后面/侧面,麦克风将会根据自身的指向性来获取声音。

    一个麦克风可以以很高的灵敏度接收来自于前方的声音,而不管后方和侧面的声音,另一个麦克风还可以接收来自于前面和后面的声音,而不管侧面的,有很多种组合。

    什么是指向性麦克风:

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

    常用的指向性麦克风:

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

    • 单向麦克风
      其他的一些麦克风是单向的( unidirectional),他们仅仅接收从指定方向来的声音。当人们对着单向麦克风说话时,要慎重选择对着麦克风的方向。我们必须要对着“接收方向”说话来获得更好的声音增益,任何不同于此方向的声音都会被削弱接收,这也就意味着增益很小。
      在这里插入图片描述

    • 双向麦克风
      另外一种麦克风叫做双向麦克风(bidirectional microphone),这种麦克风可以很好的接收来自于前向和后向的声音,但是两侧的声音增益很小。他在隔膜的相对两侧拾取具有相等灵敏度的声波,与隔膜成直角的指向null。
      在这里插入图片描述

    • 心型麦克风
      另外一种是心型麦克风( cardioid microphone),它可以接收来自于前方和两侧的声音,但是后面的声音的增益很小。事实上,他们名字来源于他们的声音拾取方向,非常的像一个心。
      在这里插入图片描述
      注意:这里没有任何一种麦克风可以说比别的怎么怎么好,不同种类的麦克风在不同的使用环境下有各自的优缺点。从上面看起来,全向麦克风比其他的要好,因为它可以接收来自于所有方向的声音而不是仅仅一个方向,但是试想如果在一个比较嘈杂的环境下,全向麦克风是一个比较low的选择,因为除了我们所需要的声音外,他还录了周围的噪音。在这种环境下,指向性(非全指向性麦克风)麦克风可能会更好,因为他在获取我们所需要方向的声音外,对其他方向的声音进行了压制,使得噪声的增益非常少。所以,这些麦克风的好坏取决于用的环境。

    麦克风的排列及原理:

    麦克风不同的排列对应不同的算法,那么最简单的排列就是线性排列了,也就是麦克风排列成一排。在远场(指说话人距离麦克风很远)的情况下,我们一般认为人说话的波形是平面波,如下:
    在这里插入图片描述
    那么每个麦克风接收到的信号在同一时刻都不会相同,因为有时延,你可能会问什么是时延,那么下面给出具体的统一线性麦克风阵列模型图:
    在这里插入图片描述
    这个模型具体参数此处不做讲解,很简单直白。那么从这里我们可以看出来,每个麦克风接收到的数据ym(k)与之前的麦克风接收到的数据之前存在延迟。其公式如下:
    在这里插入图片描述
    时间延迟如下(c是声速340m/s):
    在这里插入图片描述
    一般我们都是转化到频域去处理,所以将上述傅里叶变换后得到(别问我傅里叶变换是什么):
    在这里插入图片描述
    切记,这里都是原式子的傅里叶变换后的形式。

    好了,理论模型推理到这里,那么开始看我们手头有什么数据,说白了,方程中有哪些参数我们是已知的,ym(k)是已知的,这就是我们的麦克风接收到的数据呀,术语观测数据。这时候不要脑袋一热就开始根据模型往回带数据,模型仅仅是为我们提供参考思路(即使想带回去也不行,vm根本就未知)。

    得知观测数据的我们,需要从观测数据中抽离我们想要的内容,那么很自然的想到滤波器。我们称这种滤波器叫做:波束形成滤波器(因为它增强了我们想要的内容,削弱了我们不想要的内容,跟前面的指向性麦克风联系起来,是不是感觉世界很奇妙):
    在这里插入图片描述
    其中:
    在这里插入图片描述
    而这个得到的Z,就是我们所要求的。

    问题到了这里变得很清晰,如何估计这个滤波器。波束增强有很多种算法,有很多种估计滤波器的方式,从简单到复杂,从效果差到效果好,各有不同。那么我们这里说一下基于我们上面模型的最简单的delay-and-sum(DS)滤波器,他的效果用一句话概括就是:我们仅仅把各个麦克风接收到的信号补偿他们的时延,然后求一个均值,没有考虑混响等实际场景可能发生的情况。那么,我们的Z如下:
    在这里插入图片描述
    从而我们用最简单的办法得到了我们所要的信号,其性能评估等后续说明。

    麦克风阵列原理二

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

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

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

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

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

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

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

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

    2 波束形成

    波束形成,是对各阵元的输出进行时延或相位补偿、幅度加权处理,以形成指向特定方向的波束。

    在远场模型中,假设输入是一个平面波。设传播方向为θ,时域频率(弧度)为ω,声音在介质中的传播速度为c,对于在一个局部均匀的介质里传播的平面波,定义波束k为

    k = ωsinθ/c = 2sinθ/λ,其中λ是对应于频率ω的波长。由于信号到达不同的传感器的时间不同,则阵列接收到的信号可表示为

    f(t)=[f(t-τ0) f(t-τ1)…f(t-τN-1)]T=[exp(jω(t-kτ0)) exp(jω(t-kτ1))…exp(jω(t-kτN-1))]T

    其中τn为第n个阵元接收到的信号相对于参考点的时延,N为阵元个数,T表示转置。

    定义v(k) = [e-jωkτ0 e-jωkτ1 …e-jωkτN-1]T

    矢量v包含了阵列的空间特征,称为阵列流行矢量。则f(t)可表示为f(t) = ejωtv(k)。

    阵列处理器对一个平面波的响应为y(t,k) =HT(ω) v(k)ejωt

    注意此处ω对应单一的输入频率,所以是窄带的。阵列的空时处理关系完全可以由上式的右端描述,称为阵列的频率-波数响应函数。它描述了一个阵列对于时域频率为ω,波数为k的输入平面波的复增益。

    阵列的波束方向图反映了平面波在一个局部均匀的介质中传播情况,它是用入射方向表示的频率-波数响应函数,可以写成B(ω:θ) = Y(ω,k)|k=sinθ。

    阵列的波束方向图是确定阵列性能的关键要素,其主要参数有3dB带宽,到第一零点的距离,第一旁瓣高度,旁瓣衰减速度等。其幅度的平方定义为功率方向图,是常用的一种阵列性能度量。

    3 时延补偿
    由于麦克风阵元空间位置的差异,各阵元接收到的信号存在时延,在对信号处理之前进行时延补偿,保证各阵元待处理数据的一致性,使阵列指向期望方向。

    考虑最简单的均匀线性麦克风阵列,如图5所示。
    在这里插入图片描述
    图5 ULA时延
    设麦克风阵列共用M个阵元,中心为参考点,阵元间距为d,信号入射角为θ,声音传播速度为c,则根据几何知识,第m(0≤m≤M-1)个阵元的时延为τm = (d/c) sinθ(m-(K-1)/2)。

    麦克风采集的是数字信号,设采样周期为T,则对时域离散的信号来说,时延为D = τ/T。

    通常D不是一个整数,而对离散信号来说,整数时延才有意义。对于非整数D,可以分解为整数部分和分数部分D = ⌊D⌋ + d,式中,⌊D⌋为D的向下取整,0≤d<1。对于非零的分数部分d,此时信号实际值介于两个相邻采样点之间,即分数延迟。在实际处理中,可对d四舍五入取整,然后加上⌊D⌋,得到近似整数时延,但这种方法处理的结果不够精确。

    为了得到较为精确的处理结果,就必须设计分数时延滤波器,对采样信号进行精确的时延补偿。理想的分数时延滤波器的冲激响应可表示为hid(m) = sinc(m-D)。

    由数字信号处理知识可知,上式是无限长、非因果不稳定的,在物理上不可实现。为了解决这一问题,在实际操作中,通常会对上式进行加窗,加窗后滤波器的冲激响应为

    h(m)=(W(m-D)sinc(m-D), 0≤m≤M-1。加窗后的分数时延滤波器的时延精确程度与理想分数时延滤波器非常接近。

    麦克风阵列语音增强(二)
    1. 时域GSC自适应波束形成算法(Griffiths-Jim)
    在这里插入图片描述
    图 2-1 Griffiths-Jim的时域GSC自适应波束形成算法

    在这个专题中,将对Griffiths于1982年提出的经典时域GSC算法进行实现,并利用爱丁堡大学语音实验室开发的麦克风阵列仿真环境(之前已经单独介绍过了)进行实验测试。首先是,GSC算法的设计,算法结构框图如上图2-1所示。根据其结构,我们需要设计的部分是三个矩阵部分:固定波束形成部分的静止矩阵(在这里插入图片描述)、阻塞矩阵(在这里插入图片描述)和自适应抵消部分的权重矩阵(在这里插入图片描述)。对于静止矩阵和阻塞矩阵,Griffiths已经进行了简化设计,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    如上式(1-1)和(1-2)所示,对于阻塞矩阵采用的是 [1,-1] 形式的相邻麦克风对减方式,静止矩阵采用的是求和平均的方式(在这里插入图片描述在这里插入图片描述)。这种简化方式具有计算简单,运算量低的优点,当然,相应的噪声抑制性能也不高。除了上述提到的静止矩阵和阻塞矩阵的设计,还有一个很重要的矩阵需要进行设计,也就是自适应权重系数矩阵在这里插入图片描述。对于在这里插入图片描述的设计,本来是需要进行矩阵的求逆运算才能计算得到的,这里为了进一步降低运算量,采用了LMS自适应迭代的方法,求解过程如下所示:
    在这里插入图片描述(1-3)
    其中,在这里插入图片描述为迭代步长,在这里插入图片描述在这里插入图片描述是阻塞矩阵在这里插入图片描述的输出,满足在这里插入图片描述。这便是Griffiths-Jim 的GSC算法的设计过程,但是对于其中时延补偿部分的设计还没有涉及,实现方法通常两种:时域对齐和频域对齐。下面介绍一种最简单的方法,也就是时域采样点延迟的方法。如下图2-2所示,在知道目标语音信号入射方向的前提下(一般是由声源定位算法估计得到),以最左侧或者最右侧的麦克风接收的信号为基准,调整其他麦克风的时域采样点向后或者向前调整几个点即可。因为麦克风之间的间距和声源入射方向是已知的,所以根据声速340m/s,可以计算出来每个麦克风需要调整的点数。
    在这里插入图片描述
    图 2-2 平面波入射模型

    2. 实验仿真测试

    利用之前介绍的麦克风阵列仿真环境,模拟了一个长宽高为3m *4m *3m 的密闭房间,房间混响为0.1s,采用4个麦克风的均匀线性阵列(麦克风间距5cm),将其放置在房间的正中央,目标声源位于麦克风阵列正前方方向(省去了时延补偿的工作),距离麦克风阵列1.4m。另外,对具有明确方向性的语音干扰、点噪声源干扰和无方向性的散漫噪声情况进行实验测试。语音干扰和点噪声源干扰都来自麦克风阵列的右侧90度方向,且距离麦克分1m,散漫噪声以球形场的形式均匀分散在房间中,如下图2-3所示。
    在这里插入图片描述
    图 2-3 实验仿真环境设置

    2.1 语音干扰情况

    在麦克风阵列的一些应用场景中,语音干扰的情况十分常见,比如说,在一个房间内正在进行多媒体远程会议,这时就希望麦克风阵列只捕捉我们想要的目标声源(会议发言人),抑制那些来自干扰方向的噪声(例如,非发言人的干扰语音)。针对这种情况进行实验测试,结果如下图2-4所示。其中,图2-4中的(a)和(b)是目标声源和干扰声源分别说话时的算法处理前后的结果(目标源先说话,干扰源再说话),(c)和(d)是同时说话时的算法处理前后的结果。从时域波形图的结果可以看出,干扰声源的幅度被明显地降低了,由此可见,GSC算法可以实现有效地空间滤波性能。
    在这里插入图片描述
    图 2-4 语音干扰情况的时域波形图

    2.2 点噪声源干扰情况

    点噪声源和语音干扰的情况类似,只是干扰信号不是语音而是固定方向传过来的噪声,例如在房间内有一个窗户,窗外有一辆汽车经过,那么从窗户传进来的汽车噪声就是点噪声源。对于点噪声源的情况,实验测试了白噪声的情况(0dB的输入信噪比),如图2-5所示。其中,(a)是纯净语音的时域波形图,(b)和(c)分别是点噪声源干扰的语音和算法处理后的去噪语音。显然,GSC算法可以有效地抑制具有明确方向性的点噪声源干扰,使得点噪声源的信号幅度被衰减。
    在这里插入图片描述在这里插入图片描述
    图 2-5 点噪声源干扰情况的时域波形图

    2.3 散漫噪声源干扰情况

    对于散漫噪声,采用的是球形噪声场的数学模型模拟产生,因此它并没有明确的方向性,在整个房间内均匀存在,是实际生活中比较常见的噪声类型。这里仍然采用白噪声作为散漫噪声源(输入信噪比为0dB),实验测试结果如下图2-6所示。其中(a)为纯净语音信号的时域波形图,(b)是被散漫噪声源污染的语音信号,(c)为GSC算法处理后的去噪语音信号。从实验结果中发现,GSC算法对散漫噪声的抑制能力比较弱,也就是说,当空间中的噪声不具有方向特性时,GSC算法的空间滤波优势将大大减弱,这也是麦克风阵列波束形成算法的缺陷所在。
    在这里插入图片描述
    在这里插入图片描述
    图 2-6 散漫噪声源干扰情况的时域波形图

    参考文献:

    Griffiths L J, Jim C W. An alternative approach to linear constrained adaptive beamforming[J]. IEEE Trans Antennas & Propag, 1982, 30(1):27-34.

    语音增强
    1.1 语音增强概况

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

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

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

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

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

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

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

    1.3 语音增强入门

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

    1. 传统单通道的语音增强方法:
      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)

    2. 麦克风阵列的语音增强方法:
      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)

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

    展开全文
  • 可以参考的4麦克风和6麦克风阵列的硬件电路图,使用苏州顺芯的音频ADC
  • 麦克风阵列原理

    千次阅读 2017-08-02 20:47:03
    1 麦克风阵列  麦克风阵列,是一组位于空间不同位置的全向麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的一种装置,采集到的信号包含了其空间位置信息。根据声源和麦克风阵列之间距离...

    1 麦克风阵列

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

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

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

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

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

                                              

                                                               图1  近场模型和远场模型

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

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

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

                                           

                                                                图2  线性阵列拓扑结构

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

                    

                                                                图3  平面阵列拓扑结构

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

                    

                                                                 图4  立体阵列拓扑结构

    2  波束形成

            波束形成,是对各阵元的输出进行时延或相位补偿、幅度加权处理,以形成指向特定方向的波束。

            在远场模型中,假设输入是一个平面波。设传播方向为θ,时域频率(弧度)为ω,声音在介质中的传播速度为c,对于在一个局部均匀的介质里传播的平面波,定义波束k为

    k = ωsinθ/c = 2sinθ/λ,其中λ是对应于频率ω的波长。由于信号到达不同的传感器的时间不同,则阵列接收到的信号可表示为

            f(t)=[f(t0) f(t1)…f(tN-1)]T=[exp(jω(t-kτ0)) exp(jω(t-kτ1))…exp(jω(t-kτN-1))]T

    其中τn为第n个阵元接收到的信号相对于参考点的时延,N为阵元个数,T表示转置。

            定义v(k) = [e-jωkτ0 e-jωkτ1 …e-jωkτN-1]T

    矢量v包含了阵列的空间特征,称为阵列流行矢量。则f(t)可表示为f(t) = etv(k)

            阵列处理器对一个平面波的响应为y(t,k) =HT(ω) v(k)et

    其中H(ω)是滤波器系数向量的傅里叶变换。符号y(t,k)强调了输出和输入波数k的关系。时域上的相关性体现在输出是一个复指数,和输入平面波有相同的频率。在频域上式可表示为Y(ω,k) =HT(ω) v(k)

            注意此处ω对应单一的输入频率,所以是窄带的。阵列的空时处理关系完全可以由上式的右端描述,称为阵列的频率-波数响应函数。它描述了一个阵列对于时域频率为ω,波数为k的输入平面波的复增益。

            阵列的波束方向图反映了平面波在一个局部均匀的介质中传播情况,它是用入射方向表示的频率-波数响应函数,可以写成B(ω:θ) = Y(ω,k)|k=sinθ。

            阵列的波束方向图是确定阵列性能的关键要素,其主要参数有3dB带宽,到第一零点的距离,第一旁瓣高度,旁瓣衰减速度等。其幅度的平方定义为功率方向图,是常用的一种阵列性能度量。

    3 时延补偿

            由于麦克风阵元空间位置的差异,各阵元接收到的信号存在时延,在对信号处理之前进行时延补偿,保证各阵元待处理数据的一致性,使阵列指向期望方向。

            考虑最简单的均匀线性麦克风阵列,如图5所示。

                                                                

                                                                             图5  ULA时延

            设麦克风阵列共用M个阵元,中心为参考点,阵元间距为d,信号入射角为θ,声音传播速度为c,则根据几何知识,第m(0≤m≤M-1)个阵元的时延为τm = (d/c) sinθ(m-(K-1)/2)。

            麦克风采集的是数字信号,设采样周期为T,则对时域离散的信号来说,时延为D = τ/T。

            通常D不是一个整数,而对离散信号来说,整数时延才有意义。对于非整数D,可以分解为整数部分和分数部分D = ⌊D⌋ + d,式中,⌊D⌋为D的向下取整,0≤d<1。对于非零的分数部分d,此时信号实际值介于两个相邻采样点之间,即分数延迟。在实际处理中,可对d四舍五入取整,然后加上⌊D⌋,得到近似整数时延,但这种方法处理的结果不够精确。

            为了得到较为精确的处理结果,就必须设计分数时延滤波器,对采样信号进行精确的时延补偿。理想的分数时延滤波器的冲激响应可表示为hid(m) = sinc(m-D)。

            由数字信号处理知识可知,上式是无限长、非因果不稳定的,在物理上不可实现。为了解决这一问题,在实际操作中,通常会对上式进行加窗,加窗后滤波器的冲激响应为

    h(m)=(W(m-D)sinc(m-D), 0≤m≤M-1。加窗后的分数时延滤波器的时延精确程度与理想分数时延滤波器非常接近。

    展开全文
  • 科大讯飞麦克风阵列解决噪音问题
  • 麦克风阵列增强技术

    2012-07-23 21:57:30
    麦克风阵列增强技术,想学习麦克风阵列技术的一定要看哦,亲
  • 麦克风阵列仿真的源代码,使用MATLAB软件编写,国外的人写的。
  • 下面简单介绍下此类产品的语音前端--麦克风阵列设计相关注意事项: 线性四麦阵列构型: 环形六麦阵列构型:
  • 麦克风阵列语音增强matlab源程序,使用固定的波束形成算法
  • 现在已有的麦克风阵列采集处理系统中,大多采用4路麦克风阵列,这类系统虽然在一定程度上能解决语音增强、噪音抑制、声源定位和回声抵消等问题,但由于4个麦克风个数较少,只能组成一字线阵,十字阵等几种特定的阵列...
  • 百度soundpi麦克风阵列结构尺寸资料 百度soundpi麦克风阵列结构尺寸资料
  • S声的自适应麦克风阵列增强
  • 适用于麦克风阵列测试的规范要求,基本功能评估用于对测试机的软硬件基础的EchoSDK进行基础功能测试,保证测试机的软硬件的正常工作状态。
  • 科大讯飞六麦克风阵列设计资料,XFM10621数据手册/麦克风阵列参考设计/六麦克风阵列评估版使用等资源
  • 聊聊麦克风阵列

    千次阅读 2017-05-24 16:46:05
    首先我们简单聊聊什么是麦克风阵列麦克风阵列 ≠ 一堆麦克风 风吹麦浪,高山流水,蛙声虫鸣......人类能听到的声音大约有40多万种,频率在20至20000赫兹之间。而在嘈杂的环境下,机器想要听懂声音,它...
  • 麦克风阵列产品与技术的介绍,人机交互,麦克风阵列功能介绍。
  • 麦克风阵列声源定位

    2016-01-16 12:11:45
    一篇关于麦克风阵列声源定位的论文,具有一定的参考价值。
  • 麦克风阵列信号处理技术与应用,中文版,适合阵列信号处理研究的同学作参考
  • mars:麦克风阵列实时系统
  • 麦克风阵列信号模型

    千次阅读 2018-10-09 10:57:57
    近场和远场是阵列信号处理中两个重要的概念,当声源距离麦克风阵列的距离不同 时,我们应该利用相应的近场模型或远场模型对其进行处理,这样才能达到更高的定位精 度。我们通常用如下公式来区分声源处于麦克风阵列的...

空空如也

空空如也

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

麦克风阵列