麦克风阵列盲源分离技术

盲源分离技术仅根据观察到的每一路混叠信号估计原始多路信号,独立成分分析(independent component analysis)卷积混合情况的盲源分离技术。第一部分麦克风数量大于声源数量的ICA的方法,第二部分是麦克风数量小于声源数量的时频分集方法,第三部分是基于最大后验概率的单麦克盲源分离技术。 
盲源分离解决的问题:

  • 线性模型,又称瞬时模型
  • 卷积模型,语音更符合这个模型

盲源分离存在两种不确定性:分离后信号的排列顺序和复振幅(幅值和相位)。当源信号之间相互独立时,如果对源信号矢量进行变换,当且仅当变换后的信号之间保持相互独立,该变换矩阵可以分解为一个满秩对角阵和一个转置矩阵的乘积,仅改变源信号的幅度和排列顺序,并没有改变信号波形。 
独立分量分析证明了只要通过适当的线性变换,使得变换后的各个信号之间相互独立就可以实现源信号的盲分离,即将盲源分离问题,转换为对独立分量分析的求解问题。可以使用的判决准则:

1.自然梯度 
2.随机梯度

  • 信息论法: 
    1.基于互信息法:对比函数是一个用来衡量变换后各个信号之间相互独立程度的实值标量函数,当且仅当各个输出信号之间相互独立时,对比函数取得最大值或最小值。 
    2.基于信源的非高斯性测度(仅指峭度) 
    3.近似负嫡准则,成为FastICA。计算简单,收敛速度快,不需要任何步长参数,且迭代稳定,占用内存少。还可以通过非线性函数的适当选取来找到最优解。

  • 统计量方法: 
    1.基于二阶统计量 
    2.基于高阶统计量,BP网络分离信号方法,能分离线性和非线性混合,

PCA主成份分析。高斯噪声分离。 
ICA,非高斯噪声分离,(前提假设线性,静态混合) 
- 研究集中于以下几点: 
1.欠定问题,源数目多于传感器(麦克风) 
2.单通道问题,只有一个传感器,分离出多个源 
3.多维BSS, 
4.非线性BSS, 
5.盲解卷积(声源场景) 
6.全局收敛算法 
7.非平稳环境下的BSS

  • 信号预处理,分离前 
    1.中心化,即去均值。 
    2.白化,

项目 波束形成算法 基于ICA的盲源分离算
优势 已经商用 能够动态跟踪声源
劣势 动态跟踪声源性能差 分离矩阵计算量较大;硬件和麦克风成本较高

ICA方法

1.1 方法

语音信号的卷积盲分离:

  • 基于块扩展的自然梯度法
  • 空时扩展的FastICA方法

1.2瞬时混合模型

 
图1.1 瞬时混合模型BSS分离 
mm是位置语音源si(k),1≤i≤msi(k),1≤i≤m数量,观察到nn个输出xj(k),1≤j≤nxj(k),1≤j≤n.

xj(k)=∑i=1majisi(k)+vj(k)xj(k)=∑i=1majisi(k)+vj(k)

ajiaji是矩阵A(n∗m)A(n∗m)线性时不变系统的系数,vj(k)vj(k)是加性噪声。瞬时混合盲源分离技术就是要找到一个m∗nm∗n的解混合矩阵BB.

yi(k)=∑j=1nbij(k)xj(k)yi(k)=∑j=1nbij(k)xj(k)

然而室内语音由于反射和混响,其要使用卷积混合模型进行分离。

卷积混合分离模型

xj(k)=∑l=−∞∞∑i=1mbjilsi(k−l)xj(k)=∑l=−∞∞∑i=1mbjilsi(k−l)

这里忽略了噪声,其响应的矩阵表示是:

y(k)=∑l=0L−1BlX(K−l)y(k)=∑l=0L−1BlX(K−l)

这里要求输入信号之间是统计独立的,短时平稳的。

使用空域独立特性的时域卷积盲分离

使用信源统计独立性进行BSS的方法可以分为两类: 
- 基于密度匹配法 
- 基于对比函数法

密度匹配法使用自然梯度

对于瞬时混合,仍然可以从ICA的信息最大化的推导出密度匹配法。在线性混合条件下,上面两个准则认为联合概率密度函数如下:

p(s)=∏k=1mps(sk)p(s)=∏k=1mps(sk)

将观察到的信号

X(k)=[x1(k)...xm(k)]TX(k)=[x1(k)...xm(k)]T

根据系统解混合矩阵BB线性变换得到的输出向量y(k)=B(k)X(k)y(k)=B(k)X(k),密度匹配BSS方法是使输出向量的概率密度函数

pyypyy

匹配模型的概率密度函数pˆy(y)p^y(y).

pyypyy

和pˆy(y)p^y(y)的差异可以使用相对熵(KL散度)来度量:

D(py||pˆy(y))=∫py(y)log(pypˆy(y))D(py||p^y(y))=∫py(y)log(pyp^y(y))

式中dy=dy1...dmdy=dy1...dm. 
此外还有对比函数法等方法

频域卷积BSS

对中等程度的混响就需要较长的多通道FIR滤波,这可以放到频域来做,因为时域卷积对应频域相乘。从时域变换到频域可以通过滑窗DFT或者通过短时傅里叶变换(STFT)。窗长内的信号要是准静态的,将T时间内的采样点写成矩阵X(k)X(k):

X(k)=[X(k),X(k+1),...,X(k+T−1)]X(k)=[X(k),X(k+1),...,X(k+T−1)]

其DFT如下:

X(ω,k)=∑τ=0T−1X(k+τ)e−j2πωτ/TX(ω,k)=∑τ=0T−1X(k+τ)e−j2πωτ/T

做FFT通常会进行加窗处理。观测信号和源信息源的关系如下:

X(ω,k)≈A(ω)s(ω,k)X(ω,k)≈A(ω)s(ω,k)


图:频域盲分离的框图

y(ω,k)=B(ω,k)A(ω)s(ω,k)=G(ω,k)S(z)y(ω,k)=B(ω,k)A(ω)s(ω,k)=G(ω,k)S(z)

分离准则

盲源分离方法建立在对声源和混合矩阵的不同假设的基础上,一般声源是独立的,至少是不相关的。分离的判决准则可以分为两类,一类是基于高阶统计量(HOS,higher-order statics),和二阶统计量(SOS,second-order statics)。N表示声源数,M表示麦克风数。这在后文一个实例中使用到这一准则。

N<MN<M N=MN=M N>MN>M
子空间方法 二阶或者三阶累积量 非静态,列优先,互质
降到瞬时混合情况求解 1.SOS/HOS对于2*2系统 2.独立功率谱 3.累计量的书序大于二,ML准则 互累计量,时频域稀疏

卷积盲源分离频域法

卷积盲源分离包括两类主要方法:时域和频域。设s1,...,sNs1,...,sN是N个源信号。{x_jk}是第jj个麦克风从第kk个声源在卷积模型下的观察的信号值。

Xji(t)=∑l=0phjk(l∙ts)sk(t−l∙ts)Xji(t)=∑l=0phjk(l∙ts)sk(t−l∙ts)

其中t(ts=1/fs)t(ts=1/fs)是时间的离散表示,h_{jk}是声源k到麦克风jj的脉冲响应。假设N个声源,则有:

xjt=∑k=1Nxjk(t)=∑k=1N∑l=0Phjk(l∙ts)sk(t−l∙ts)xjt=∑k=1Nxjk(t)=∑k=1N∑l=0Phjk(l∙ts)sk(t−l∙ts)

 
对分离效果的好坏使用信号/干扰比(signal-to-interference ratio, SIR)和信号/失真比(signal-to-distortion ratio)。 
InputSTRi=10log10∑t|xji(t)|2∑t|∑k≠ixjk(t)|2InputSTRi=10log10⁡∑t|xji(t)|2∑t|∑k≠ixjk(t)|2 (dB) 
OutputSTRi=10log10∑t|yji(t)|2∑t|∑k≠iyjk(t)|2OutputSTRi=10log10⁡∑t|yji(t)|2∑t|∑k≠iyjk(t)|2 (dB) 
yikyik是sksk在输出端yiyi的部分。 
SDR定义如下: 
SDRi=10log10∑t|αiyji(t−δ)|2∑t|yji−αixji(t−δi)|2SDRi=10log10⁡∑t|αiyji(t−δ)|2∑t|yji−αixji(t−δi)|2 
失真定义于分母,这通过找到合适的幅度调节因子αiαi和时间调节因子δiδi最小化失真获得SDR。最优δiδi通过最大化互相关获得: 
δi=argmaxδ∑tyji(t)(t−δ)δi=argmaxδ∑tyji(t)(t−δ) 
αiαi通过最小均方误差获得: 
αi=∑tyii(t)xji(t−δ)∑t|xji(t−δ)|2αi=∑tyii(t)xji(t−δ)∑t|xji(t−δ)|2

频域BSS


通过STFT将每一个麦克风观察到的时域信号xj(t)xj(t)转换到频域时间信号xj(n,f)xj(n,f):

xj(n,f)←∑txj(t)wina(t−nSts)e−t2πftxj(n,f)←∑txj(t)wina(t−nSts)e−t2πft

每一个离散的频点f∈{0,1Lfs,...,L−1Lfs}f∈{0,1Lfs,...,L−1Lfs}.分析用的窗函数可以使用汉宁窗。如果帧长LL能够包括绝大部分的脉冲响应hjkhjk,则卷积模型可近似使用瞬时模型近似: 
xjk(n,f)=hjk(f)sk(n,f)xjk(n,f)=hjk(f)sk(n,f) 
则有: 
xj(n,f)=∑Nk=1xjk(n,f)=∑Nk=1hjk(f)sk(n,f)xj(n,f)=∑k=1Nxjk(n,f)=∑k=1Nhjk(f)sk(n,f) 
向量表示如下: 
X(n,f)=∑Nk=1hk(f)sk(n,f)X(n,f)=∑k=1Nhk(f)sk(n,f) 
接下来的操作,分离,置换以及缩放和T-F掩码都在频域做。复共轭矩阵的关系如下: 
xj{n,mLfs}=x∗j{n,L−mLfs,m=1,...,L2−1xj{n,mLfs}=xj∗{n,L−mLfs,m=1,...,L2−1 
这里最关键的就是求分离矩阵,这个非常类似AEC情况下的回声消除求权重的过程,由于AEC是一维,BSS是多维且矩阵间互相影响,所以其计算特别耗时。 
但是这时可以利用SL(sound location)DS/GCC/GCC-PHAT技术,在大概知道多个声源的方向,这时分离矩阵的系数应该让各个方向上能量和其它方向上的能量比值最大。 
另外针对也许特殊的场景,不放考虑使用DNN方式,先前训练好几组权重系数。 
这里给出一个matlab版本程序,需要说明的是,这个程序在无背景噪声,线阵,麦克风大间距下效果非常明显。

测试matlab

调用BSS主体

%read 6 audio sigal, include two for AEC
y=audioread('/home/gsc/_0_1.wav');
%row = number mic
y=y';
y1=y(1,:)';
y2=y(2,:)';
y3=y(3,:)';
y4=y(4,:)';x=[y1';y2';y3';y4'];Ns=1;
nFFT=4096;
nP=50;
nSample=10000;
ovl=0.75;
[y,w]=alcobs(x,Ns,nFFT, nP, nSample, ovl);

运行完毕后可以使用如下命令听:

audioplayer(y(1,:),48000);
p=audioplayer(y(1,:),48000);
play(p)

BSS实现主体

可以参考论文《A Frequency Domain Method for Blind Source Separation of Convolutive Audio Mixtures》 
“` 
function [y,W] = alcobs(x, Ns, nFFT, nP, nSample, ovl); 
% Alternating Least Squares Convolutive Blind Source Separation 
% Version 1.0 
% Author: Kamran Rahbar 
% Institue: McMaster University (Statistical Signal processing Lab) 
% This function does blind source separation of 
% convolutive mixtures useing a frequency domain approach. 
% For more info. see: 
% Kamran Rahbar, James P. Reilly, 
% “A Frequency Domain Method for Blind Source Separation 
% of Convolutive Audio Mixtures”, 
% IEEE Trans. on Speech and Audio Processing (to be published). 

% Please report any bug or problem to reillyj@mcmaster.ca 

% usage: 
% [y,w]=alcobs(x, Ns, nFFT, nP, nSample, ovl); 

% x Observed signals from convolutive mixtures 
% Ns Number of sources 
% nFFT Number of FFT points (usually greather than the length of channel) 
% nP Number of cross spectral density matrices 
% nSample Number of samples in each epoch 
% ovl Overlap percetange (0

麦克风阵列盲源分离技术相关推荐

  1. 盲源分离技术 matlab,基于ICA盲源分离的研究及matlab实现(毕业学术论文设计).doc...

    ********* 大 学 毕业设计(论文)任务书 毕业设计(论文)题目: 基于ICA盲源分离的研究及matlab实现 毕业设计(论文)要求及原始数据(资料): 论文要求: 查找盲源分离的现状及发展历 ...

  2. 基于独立分量分析的语音信号盲源分离

    一.盲源分离介绍 语音信号处理是当今通信技术领域的研究热点之一.在实际应用中,我们常常遇到多个语音信号混杂在一起的情况,这就需要对这些混合信号进行分离,提取出原始的独立语音信号.盲源分离(Blind ...

  3. 密集假目标 Matlab,基于盲源分离的抗密集假目标干扰技术研究.pdf

    基于盲源分离的抗密集假目标干扰技术研究.pdf Vol. 42 ,No. 2 火力与指挥控制 第42 卷 第2 期 Feb ,20 17 Fire Control & Command Cont ...

  4. 盲源分离算法学习笔记

    盲源分离算法学习笔记 优缺点(Pros & Cons) 优点 缺点 麦克风阵列算法有两大类,一类是波束形成算法,另一类是盲源分离算法,两者互有优劣.本篇博客先通过比较盲源分离和波束形成来说明盲 ...

  5. 大牛讲堂 | 语音专题第一讲,麦克风阵列的语音信号处理技术

    雷锋网按:徐荣强(Kevin),地平线硬件音频工程师.2011年11月毕业于英国爱丁堡大学通信与信号处理专业,曾任诺基亚,联想,微软高级音频工程师.现在Horizon-Robotics负责语音相关硬件 ...

  6. 盲源分离(BSS, Blind Source Separation)

    数学描述: 假设N个统计独立的未知信号S(t) 经过未知信道A的传输后由M个传感器检测获得M个观测信号 整个传输过程的数学模型为: 为M维观测矢量,为N维未知源信号矢量,为M维加性信道噪声,A为维传递 ...

  7. 盲源分离matlab程序,盲源分离matlab程序

    23 卷第 2008 年 3 月第 2 期 陈锡明 ,黄硕翼 盲源分离综述 --- 问题 . 原理和方法 1 1 引言 盲源分离 (BSS) 是信号处理领域的一个基本 问题 ,...... 盲源分离与 ...

  8. 第八章---《实时语音处理实践指南》盲源分离笔记

    本章利用信号的高阶统计量来分离出目标语音,盲语音分离就是假定源信号具有相互独立的统计特性,利用高阶统计量度量独立性,它能分离出所有非高斯性声源,实际使用中最常用的为独立成分分析法(ICA).一般根据麦 ...

  9. 国际上进行盲源分离研究的主要学者及其研究方向

    E. Moreau及 P.Comon 等人对盲源分离的可行性准则等进行了讨论和分析:J. –F. Cardoso等人对基于似然估计的盲分离方法进行了研究:L. De Lathauwer等人则是对基于代 ...

最新文章

  1. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法
  2. 阿里巴巴集团CRO刘振飞:双11的六维技术准备
  3. java paint方法_在Java中,为了使paint()方法执行,以下各项中,()是最佳的调用方法
  4. 一些iptables的具体应用
  5. 关于STC-ISP软件程序烧录失败率高的解决办法
  6. IOS-音乐播放器(附Demo)
  7. ShadowGun 的学习笔记 - GodRays
  8. 如何写出一份好的解决方案
  9. 车辆网之整车Can网络基本结构及转发机制
  10. 用rest造句子_rest造句
  11. Hibernate框架检索策略
  12. 监控的4个黄金指标(google)
  13. 思维方式-《终身成长》书中的精髓:决定人与人之间巨大差距的,是你的思维模式。
  14. Xilinx 7系列FPGA收发器架构之接收器(RX)(十一)
  15. 电脑热点无法开启问题以及开启了电脑热点手机无法连接上热点。
  16. css复合选择器(后代选择器、子代选择器、并集选择器、链接伪类选择器、:focus选择器)
  17. 机器学习系列--数据预处理
  18. 同为博客,不同风格 ——Hexo另类搭建
  19. TigerGraph首将模式匹配与高效图计算相结合,为欺诈检测、网络安全保护、人工智能等应用增砖加瓦!
  20. Android中怎么重新启动APP或系统

热门文章

  1. abap java_ABAP,Java和JavaScript的序列化,反序列化
  2. 嵌入式Linux系统编程学习之二十二内存映射
  3. gis地图和普通地图的区别_GIS之如何添加WMTS地图
  4. php位值,解决 PHP 中 usort 在值相同时改变原始位置的问题
  5. 《深入理解 Spring Cloud 与微服务构建》第九章 熔断器 Hystrix
  6. golang字节数组拷贝BlockCopy函数实现
  7. C# 输入一个整数,求质因数
  8. 5-格子染色(递推)
  9. Centos7 操作系统 mysql5.7 配置远程登陆操作
  10. 微信今日全面开放接口