基于AMUSE算法的混合语音信号盲分离系统
项目介绍
本项目是一个基于AMUSE(Algorithm for Multiple Unknown Signals Extraction)算法的盲信号分离(BSS)仿真系统。盲信号分离的核心目标是在源信号及其混合方式均未知的情况下,仅凭观测到的混合信号恢复出原始信号。本项目利用信号的时间相关性(二阶统计量),通过对时延协方差矩阵进行特征结构分析,实现对相互混合的语音/模拟信号的有效分离。
功能特性
- 多源信号模拟:系统能够模拟三类具有不同声学特征的信号,包括正弦调频信号(模拟元音)、调制噪声信号(模拟辅音)和锯齿波信号(模拟谐波成分)。
- 线性瞬时混合建模:通过自定义满秩混合矩阵模拟信号在空间中的线性混合,并引入高斯白噪声以验证算法的鲁棒性。
- 经典AMUSE算法实现:严格遵循二阶统计量盲分离流程,包含零均值化、空间白化、时延协方差分解等核心步骤。
- 自动排序与幅度补偿:针对盲分离存在的排列和幅度不确定性,系统通过相关系数分析自动校正分离信号的顺序与极性。
- 全方位性能评估:提供相似度系数、信号干扰比(SIR)以及信噪比(SNR)等量化指标。
- 可视化分析:实时生成信号波形对比图和联合分布散点图,直观展示信号从混合态到解耦态的演变过程。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱依赖:无需额外特殊工具箱,核心代码基于标准矩阵运算实现。
实现逻辑与算法细节
#### 1. 信号预处理
- 信号生成:设定采样率为8000Hz,生成长度为2秒的三个独立信源。通过归一化处理确保各信源能量处于同一量级。
- 混合模拟:使用一个3x3的混合矩阵对信源进行瞬时加权叠加,并加入标准差为0.01的高斯噪声以模拟真实采集环境。
#### 2. AMUSE 核心算法步骤
- 去均值 (Centering):对观测到的混合信号进行中心化处理,移除直流分量。
- 白化处理 (Whitening):计算混合信号在零延迟下的自协方差矩阵 $R(0)$,对其进行特征值分解。通过白化变换消除信号间的瞬时相关性,并将各分量能量归一化。
- 时延协方差矩阵计算:选取特定的时间延迟 $tau=1$(一个采样周期),计算白化后信号的时延协方差矩阵 $R(tau)$。这一步利用了不同信号在时间结构(自相关性)上的差异。
- 对称化处理:为保证特征向量为实数且正交,对 $R(tau)$ 进行对称化处理。
- 酉变换求解:通过对对称化的时延协方差矩阵进行特征值分解,求得旋转矩阵,从而提取出相互独立成分。
#### 3. 后处理与评价机制
- 重投影与对齐:通过计算分离信号与源信号的相关系数,解决由于ICA特性导致的信号顺序混乱问题。同时,利用最小二乘思想恢复信号的极性与原始幅度。
- 评价指标计算:
-
相似度:反映分离波形与原始波形的契合度。
-
SIR (信号干扰比):通过全局矩阵(分离矩阵与混合矩阵的乘积)评估各通道间的串扰抑制能力。
-
SNR (信噪比):量化分离结果中残余噪声和失真的程度。
运行效果分析
- 波形对比:系统将分屏展示“原始信号”、“观察信号”与“分离信号”。用户可以看到原本在观察信号中混杂在一起的波形,在分离信号中得到了清晰的还原。
- 联合分布图:
-
独立状态:源信号的散点图呈现出特定的独立分布结构。
-
相关状态:混合后的信号散点图呈现出倾斜的椭圆或特定形状,代表通道间存在高度相关性。
-
解耦状态:经过AMUSE算法处理后,散点图重新回归到坐标轴轴向分布,证明了信号间的统计独立性得到了恢复。
使用方法
- 启动 MATLAB 软件。
- 将程序代码文件放置在 MATLAB 工作目录下。
- 运行主函数。
- 观察命令行窗口输出的分离性能评估指标。
- 查看弹出的两个图形窗口,对比分离前后的信号质量及统计分布情况。