本章利用信号的高阶统计量来分离出目标语音,盲语音分离就是假定源信号具有相互独立的统计特性,利用高阶统计量度量独立性,它能分离出所有非高斯性声源,实际使用中最常用的为独立成分分析法(ICA)。一般根据麦克风个数与声源个数的大小关系来区分不同的盲语音分离方法。在这里仅介绍麦克风个数大于或等于声源个数的情况,对于麦克风个数小于声源个数的情况,使用信号处理的方法效果不佳。

一、ICA基本概念

假定现有m个声源和m个麦克风,麦克风采集信号分别为x1(t),x2(t),⋯,xm(t)x_1(t),x_2(t),\cdots,x_m(t)x1​(t),x2​(t),⋯,xm​(t),原始信号为s1(t),s2(t),⋯,sm(t)s_1(t),s_2(t),\cdots,s_m(t)s1​(t),s2​(t),⋯,sm​(t),则
xi(t)=∑j=1maijsj(t)其中i=1,...,mx_i(t)=\sum_{j=1}^{m}a_{ij}s_j(t)\ \ 其中 i=1,...,mxi​(t)=j=1∑m​aij​sj​(t)  其中i=1,...,m
aija_{ij}aij​为声源与麦克风之间的传递系数,式中除了xi(t)x_i{(t)}xi​(t),其它都是未知,如何仅利用xi(t)x_i(t)xi​(t)找出源信号sj(t)s_j(t)sj​(t),这就是盲源分离的问题。
只需考虑信号的统计独立性,就能找到上述问题的解。若源信号是非高斯的,那么只需要找到分离矩阵
W=[w11w12w13w21w22w23w31w32w33]W= %开始数学环境 \left[ %左括号 \begin{array}{ccc} %该矩阵一共3列,每一列都居中放置 w_{11} & w_{12} & w_{13}\\ %第一行元素 w_{21} & w_{22} & w_{23}\\ %第二行元素 w_{31} & w_{32} & w_{33} \end{array} \right] %右括号 W=⎣⎡​w11​w21​w31​​w12​w22​w32​​w13​w23​w33​​⎦⎤​使得y1(t)、y2(t)、y3(t)y_1(t)、y_2(t)、y_3(t)y1​(t)、y2​(t)、y3​(t)相互独立即可。
y1(t)=w11x1(t)+w12x2(t)+w13x3(t)y_1(t)=w_{11}x_1(t)+w_{12}x_2(t)+w_{13}x_3(t)y1​(t)=w11​x1​(t)+w12​x2​(t)+w13​x3​(t)
y2(t)=w21x1(t)+w22x2(t)+w23x3(t)y_2(t)=w_{21}x_1(t)+w_{22}x_2(t)+w_{23}x_3(t)y2​(t)=w21​x1​(t)+w22​x2​(t)+w23​x3​(t)
y3(t)=w31x1(t)+w32x2(t)+w33x3(t)y_3(t)=w_{31}x_1(t)+w_{32}x_2(t)+w_{33}x_3(t)y3​(t)=w31​x1​(t)+w32​x2​(t)+w33​x3​(t)
这也是独立成分分析法的命名缘由。现在的关键点就称为如何理解统计独立性。在波束或者传统信号处理中, 最常见的就是不相关,首先区分两者的不同,以便更好的理解独立性。

二、ICA估计原理

1、非线性去相关
寻找矩阵W,使得对任何i≠ji\neq ji​=j,yiy_iyi​和yjy_jyj​不相关,且变换后的g(yi)g(y_i)g(yi​)和h(yj)h(y_j)h(yj​)也不相关,其中g和h为非线性函数。
2、极大非高斯性
在y的方差为常数的约束下,求线性组合y=∑ibixiy=\sum_ib_ix_iy=∑i​bi​xi​非高斯性的局部极大值,每个局部极大值对应一个独立成分。
该原理的启发来源于中心极限定理:非高斯随机变量之和更接近于高斯。因此,反向思考,对于混合变量做变换,当非高斯性达到极大时,对应独立成分。
求解过程需要用到数值计算。使用梯度下降法来进行优化


三、盲源分离预处理

PCA是ICA一个必要过程,主要作用有:

  • 当麦克风个数大于声源个数时,可以用PCA对多麦克风数据降维,降至与声源个数相等,因为ICA要求输入维度与输出维度一致。
  • 当麦克风个数等于声源个数时,PCA做预处理,可以将ICA的待估计参数减少一半,极大地降低了计算复杂度。

四、频域独立成分分析法(FDICA)

ICA及其衍生方法是盲语音分离的主流解决方案。语音信号为宽带平稳信号,对其处理一般在频域进行,首先对麦克风信号做STFT,STFT将时域信号变换至时/频域,再对每个频带单独做复数ICA分离。
ICA本身有两个不确定性问题:独立成分方差不确定和独立成分顺序不确定。在时/频域,这两个缺陷会严重恶化语音的分离效果,需要特殊处理。

  • 独立成分的方差无法确定
    由于源信号s和混合矩阵A都未知,对某个源的任意标量乘积都能通过对A矩阵对应的列aia_iai​除以对应的标量值而低消,x=∑i(1λai)(siλ)x=\sum_i(\frac{1}{\lambda }a_i)(s_i\lambda)x=∑i​(λ1​ai​)(si​λ),因此在求解过程中, 需要调整分离矩阵W保证方差的一致性。
  • 独立成分次序的不确定
    由于s和A引起,我们可以把任意一个独立成分作为第一个,从数学公式看,可以引入一个置换矩阵P,x=AP−1Psx=AP^{-1}Psx=AP−1Ps,PsPsPs矩阵中的元素仍然是原来的独立变量sis_isi​,但顺序发生了变化,这是矩阵AP−1AP^{-1}AP−1是另一个新的待估矩阵。

解决策略:
(1) 根据频带间的相关性来归类,因为来自同一生源的相邻频带具有更强的相关性, 但是当声源数目较多或者混响严重的情况下,这种方法大概率会出错。
(2)利用先验信息,比如声源定位,将来自同一方位的声源归为一类,这对声源定位方法有较高要求。

后置滤波处理通用框架


该框架可以同时处理有平稳噪声和非平稳噪声的情况。
后处理也是在频域进行,理论依据是Ephraim和Malah提出的最优估计方法,整个流程可以分为两部分:噪声λ\lambdaλ和衰减因子G(k)G(k)G(k)的计算。最终输出为:
X^p(k)=G(k)Yp(k)\hat{X}_p(k)=G(k)Y_p(k)X^p​(k)=G(k)Yp​(k)
实际上,这要流程是语音增强中基于统计模型的方法,最难的部分是噪声估计,只有准确估计早生,才能更准确地计算衰减因子。

噪声估计

一般噪声估计都假定噪声为平稳噪声,但是通道之间泄漏的往往为非平稳的语音。
将平稳噪声和非平稳噪声分开估计,表达式如下:
λp(k,l)=λpstat(k,l)+λpleak(k,l)\lambda_p(k,l)=\lambda_p^{stat}(k,l)+\lambda_p^{leak}(k,l)λp​(k,l)=λpstat​(k,l)+λpleak​(k,l)
λpstat(k,l)\lambda_p^{stat}(k,l)λpstat​(k,l)为平稳噪声方差,λpleak(k,l)\lambda_p^{leak}(k,l)λpleak​(k,l)为泄漏语音方差。
对于非平稳泄漏语音,想要准确估计非常困难,但可以做一个基本假设:泄漏的语音来自其它声源且有一个固定的泄漏因子。
λpleak(k,l)=θ∑i=0,i≠pPSi(k,l)\lambda_p^{leak}(k,l)=\theta\sum_{i=0,i\neq{p}}^PS_i(k,l)λpleak​(k,l)=θi=0,i​=p∑P​Si​(k,l)
其中,Sp(k,l)S_p(k,l)Sp​(k,l)为第p个估计声源Yp(k)Y_p(k)Yp​(k)的平滑功率谱(平滑系数α=0.7\alpha=0.7α=0.7):
Sp(k,l)=αSp(k,l−1)+(1−α)Yp(k,l)S_p(k,l)=\alpha S_p(k,l-1)+(1-\alpha)Y_p(k,l)Sp​(k,l)=αSp​(k,l−1)+(1−α)Yp​(k,l)

第八章---《实时语音处理实践指南》盲源分离笔记相关推荐

  1. 《实时语音处理实践指南》配套资源

    <实时语音处理实践指南>作者在书中并没有给出代码和资源的链接,今天我找到了这个git仓库地址 WebRTC-audio-processing 仓库链接 由于git访问不稳定,所以我把它下载 ...

  2. 第十章---《实时语音处理实践指南》语音编/解码笔记

    文章目录 1.语音编/解码简述 2.声音可以进行编码的原理 3.语音编码的过程 4.LPC编码 5.SILK编解码 6.Opus编解码 1.语音编/解码简述  编码的过程就是对语音进行压缩,压缩应该能 ...

  3. 麦克风阵列盲源分离技术

    麦克风阵列盲源分离技术 盲源分离技术仅根据观察到的每一路混叠信号估计原始多路信号,独立成分分析(independent component analysis)卷积混合情况的盲源分离技术.第一部分麦克风 ...

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

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

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

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

  6. 同步压缩变变时频分析和盲源分离

    同步压缩变变时频分析和盲源分离 代码运行环境为MATLAB r2018a 同步压缩变换SST通过同步压缩算子对时频系数进行重排,将信号在时频平面任一点处的时频分布移到能量的重心位置,增强瞬时频率的能量 ...

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

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

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

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

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

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

最新文章

  1. MySQL数据表基本操作
  2. HiveDuino开发套件
  3. python多层数组合成一个数组后循环打印出数组内的每一项元素的方法
  4. -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
  5. 浅入浅出数据结构(20)——快速排序
  6. java中br.readline_Java:java中BufferedReader的read()及readLine()方法的使用心得
  7. 分布式一致性算法-paxos详解与分析
  8. CAGradientLayer简介 实现颜色渐变
  9. 软件过程之美 : 软件配置管理策略及主流工具实战
  10. learning scala 变量
  11. ie6下的iframe,问题多多。
  12. 尚硅谷大数据hadoop教程
  13. C++中convertTo对应的python代码
  14. 自然语言处理(NLP):08-05 TextCNN短文本分类案例分享
  15. Hive-创建表的几种方式
  16. 2021/6/24爬虫第二十八次课(爬取移动端数据前导知识)
  17. 苹果手机测距离_重量仅6g,智能距离检测,安卓苹果平板手机都能用,声光多级提醒...
  18. 20145212罗天晨 注入shellcode实验及Retuen-to-libc实验
  19. RK3399平台开发系列讲解(IIO子系统)4.38、什么是IIO(Industrial I/O)
  20. Fortran矩阵运算

热门文章

  1. win10 安装 Ganache
  2. Python中For循环与While 循环的使用
  3. K2数据库database
  4. [IOS APP]人生-路遥有声小说
  5. 阿里云ubuntu16.4服务器部署python3.6.2+django1.11.3网站的全过程,精细讲解,本人亲测!
  6. robotframework + appium 获取android toast
  7. 高效采集互联网信息,用绿色版网页采集器
  8. AFL(american fuzzy lop)学习二
  9. 腾讯在线教育的小程序云开发实践
  10. 详细对比DRAM、Flash和DDR技术