鸡尾酒会问题 Cocktail Party Problem

阅读原文

1. 问题描述

鸡尾酒会问题是在计算机 语音识别 领域的一个问题。
当前语音识别技术已经可以以较高精度识别一个人所讲的话,但是当说话的人数为两人或者多人时,语音识别率就会极大的降低,这一难题被称为鸡尾酒会问题。

该问题 给定混合信号,分离出鸡尾酒会中 同时说话的每个人的独立信号

设有N个信号源(N个人说话)
通常假设观察信号也有N个(N个麦克风)
该假设意味着混合矩阵是个方阵(每个麦克风都接收了N个人说话的声音)
即 J = D,其中D是输入数据的维数,J是系统模型的维数。

鸡尾酒会问题

要分离出鸡尾酒会中同时说话的每个人的独立信号,常用的方法是盲信号分离算法。

2. 盲信号分离

2.1 简介

盲信号(Blind Source Separation,BSS)分离指的是 从多个观测到的混合信号中分析出没有观测的原始信号。通常观测到的混合信号(麦克风接收到)来自多个传感器(多个人说话)的输出,并且传感器的输出信号独立(线性不相关)。

盲信号的 “盲” 字强调了两点:

  1. 原始信号并不知道;
  2. 对于信号混合的方法也不知道。

2.2 原理(简单的数学描述)

我们先看只有 2 个信号源的情况,则观测信号也只有 2 个。

  • S1 和 S2 是两个源信号;
  • x1 和 x2 是两个观测信号;
  • y1 和 y2 是对源信号的估计;
  • A 是混合矩阵,将两个信号混合在一起,然后产生输出两个观测信号;
  • W 是权重矩阵,用于提取估计出声源信号。
BSS算法主要流程图

矩阵表达形式:

BSS算法主要流程方程形式

A11:1号麦克风接收到1号人的声音;
A12:1号麦克风接收到2号人的声音;
所以,x1 = A11·S1 + A12·S2,为1号麦克风得到的混合声音。
因为信号混合方法未知,所以 A 矩阵未知。

模型最终目的,y1 = S1,y2 = S2
理想状态下,W 矩阵 是 A 矩阵 的 逆矩阵。

由于参数空间不是欧几里得度量(两点间直线),在大多的情况下都是黎曼度量(两点间弧线,即空间参数向量不是线性变化的),因此对于W矩阵的求解选用 自然梯度解法

比较 W(n+1)W(n) 两个矩阵的差异 需要用 黎曼度量(相似性度量)。

2.3 自然梯度法计算 W 矩阵

自然梯度法计算公式:

  • η(n):步长
  • Φ(y):非线性变化
    实际计算时,W 为 m*k 矩阵,m(人数,原始信号个数),k(话筒数,采样点数)

计算步骤:

  1. 初始化 W(0) 为单位矩阵;
  2. 循环执行 3,4 步骤,直到 W(n+1)W(n) 差异小于规定值 τ
  3. 利用公式:y(n) = W(n) y(n-1),其中 n=0 时, y(-1) = x;
  4. 利用自然梯度法计算公式

推荐阅读更多精彩内容