BSS研究方向路线

第一阶段:地基铺设——工具与数学(预计 2-3 周)

目标:能够看懂公式,会写基本的 Python 代码。

  1. 编程语言
    • Python:这是深度学习的通用语言。重点掌握 NumPy(矩阵运算库),因为信号在计算机里就是一堆矩阵和数组。
  2. 深度学习框架
    • PyTorch:目前学术界最主流的框架。你需要学会如何搭建一个简单的神经网络,如何定义输入、输出和损失函数。
  3. 必要的数学
    • 线性代数:理解矩阵乘法、张量(Tensor)维度的变换。
    • 复数运算(重点,结合资料1) 复数不仅仅是a+bi,在信号处理中它代表了“幅度”和“相位”。你需要理解复数的加减乘除以及模运算。

✅ 实践任务

  • 安装 Anaconda 和 PyTorch 环境。
  • 跑通一个简单的 MNIST(手写数字识别)Demo,弄懂什么是“卷积(Conv)”、“池化(Pooling)”和“全连接层(FC)”。

第二阶段:信号处理入门——听懂信号的语言(预计 3 周)

目标:理解声音是如何变成数字信号输入给神经网络的。

  1. 数字信号处理 (DSP) 基础
    • 采样率:理解声音为什么是离散的点。
    • 时域 (Time Domain):波形图,横轴时间,纵轴振幅。
    • 频域 (Frequency Domain):这是重点。理解 傅里叶变换 (FFT)短时傅里叶变换 (STFT)
    • 声谱图 (Spectrogram):将声音变成“图片”,这是很多早期语音分离模型的输入。
  2. 复数信号
    • 资料1 (何广旭) 专门讲了复数卷积。你需要理解语音做完 STFT 后,结果就是复数(实部+虚部,或 幅度+相位)。传统的做法是扔掉相位只看幅度,但你的研究若想创新,就得学会利用相位。

✅ 实践任务

  • 使用 Python 的 librosa 库读取一个 .wav 音频文件。
  • 画出它的波形图和声谱图。
  • 尝试把两个人的声音录音直接相加(混合),听听效果,并画出混合后的声谱图。

第三阶段:深度学习处理序列模型——读懂你的资料(预计 4 周)

目标:掌握处理时间序列数据的核心网络架构。

  1. CNN 到 TCN (时序卷积网络)
    • 资料1 (何广旭)资料3 (徐林平) 的核心都是 TCN。
    • 学习什么是 1D-CNN(一维卷积)。
    • 学习什么是 膨胀卷积 (Dilated Convolution)。这是 TCN 的灵魂,它能让网络“看”到很久以前的信息(长时依赖),这对于理解一整句语音至关重要。
  2. 注意力机制 (Attention)
    • 资料3 提到了注意力机制。在鸡尾酒会问题中,注意力机制的作用是:“在一堆嘈杂的声音中,根据我想听的人的声音特征(Query),去加权混合声音中的重要部分(Value)”。
  3. 自编码器 (AutoEncoder) 与 U-Net
    • 资料2 (谢志进) 提到了自编码器。这是分离模型的经典架构:编码器把混合声音压缩成特征,分离器把特征分开,解码器把分开的特征还原成声音。

✅ 实践任务

  • 阅读经典的语音分离论文 Conv-TasNet。这是一个纯时域的 TCN 网络,也是你资料中架构的“原型”。
  • 在 GitHub 上找一个开源的 Conv-TasNet 代码跑通一下。

第四阶段:特定人声提取 (Target Speaker Extraction) —— 进入课题(预计 4 周)

目标:从“把所有声音分开”进化到“只提取我想要的那个人”。

  1. 声纹识别 (Speaker Embedding)
    • 你需要一个辅助网络来“指纹化”目标说话人的声音。
    • 学习 d-vectorx-vector 的概念。即:输入一段参考录音,网络输出一个向量,代表这个人的身份。
  2. 融合网络
    • 学习如何将“声纹向量”和“混合语音特征”融合。最简单的方法是拼接 (Concat) 或 点乘 (Dot Product)。
  3. 损失函数 (Loss Function)
    • 资料3 提到了 SI-SNR (尺度不变信噪比)。这是必须掌握的指标,用来训练网络让分离出的声音更干净。

✅ 实践任务

  • 下载 LibriSpeech 数据集(开源的纯净语音)。
  • 合成数据:自己写脚本,随机选两个人的声音混合,作为训练输入;其中一个人的声音作为训练目标(Label)。

第五阶段:结合资料进行创新——你的硕士/研究工作(持续进行)

目标:把你手头的通信论文技术“移植”到语音上。

  1. 移植“复数TCN” (参考资料1)
    • 现有的 Conv-TasNet 多是实数的。你可以尝试把它的卷积层换成 Complex Convolution(资料1中的核心)。
    • 假设:复数网络能更好地处理语音的相位信息,从而提升音质。
  2. 移植“矢量量化 VQ” (参考资料3)
    • 参考资料3中的 CRNRVQNet。在你的分离网络中间加一个 VQ 层。
    • 假设:VQ 像一个筛子,只允许“像人声”的特征通过,把无规律的噪声滤掉。

推荐的学习资源(神器)

  1. 代码库(直接看代码比看书快)

    • Asteroid: 一个专门做音频源分离的 PyTorch 库。里面全是现成的模型(ConvTasNet, DPRNN等)。强烈推荐从这里入手。
    • SpeechBrain: 另一个非常强大的语音处理工具包,包含声纹识别模型。
  2. 课程

    • 李宏毅 (Hung-yi Lee) 的深度学习课程(B站有):讲得很通俗,专门有一节讲 Self-attention 和 Transformer。
    • 吴恩达 (Andrew Ng) 的序列模型课程:了解 RNN 和 Attention。
  3. 论文阅读顺序

    • 先看:Conv-TasNet: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation (这是基石)。
    • 再看:SpEx: Multi-Scale Time Domain Speaker Extraction Network (这是告诉你如何提取特定人声)。
    • 最后看:你手里的三篇硕士论文,思考如何把里面的 TCN 和复数模块替换到上面的模型中。
posted @ 2025-12-09 16:40  十士大夫  阅读(2)  评论(0)    收藏  举报