1. 课程导论与预备知识
各位同学好,我是这门课的主讲。在语音算法这行摸爬滚打了快十年,踩过的坑比写过的代码还多。今天咱们开始第一讲,先把地基打牢。
语音降噪,说白了就是让机器在嘈杂环境里也能听清人说话。你想想看,地铁里打电话、厨房里喊智能音箱、会议室远程开会——这些场景背后都离不开降噪算法。我当年第一次做车载语音项目,测试时发现风噪一上来,识别率直接掉到30%。嗯,从那以后我就再也不敢小看降噪这步了。
1.1 什么是语音降噪?
语音降噪的目标很简单:从带噪信号里提取出干净的语音。但实际做起来,远比想象中复杂。
数学上可以这样描述:
y(t) = s(t) + n(t)
其中 y(t) 是麦克风采集的信号,s(t) 是纯净语音,n(t) 是噪声。我们的任务就是找到一个滤波器,从 y(t) 中恢复出 s(t) 的最佳估计 ŝ(t)。
噪声类型五花八门,我整理了一张表,方便大家对照:
| 噪声类型 | 典型例子 | 频谱特性 | 处理难度 |
|---|---|---|---|
| 平稳噪声 | 风扇声、空调声 | 频谱稳定 | 低 |
| 非平稳噪声 | 街道噪声、键盘声 | 频谱快速变化 | 中 |
| 突发噪声 | 关门声、拍桌子 | 瞬时高能量 | 高 |
| 混响 | 会议室回声 | 时域拖尾 | 高 |
1.2 应用场景:哪里需要降噪?
降噪不是实验室里的玩具,它已经渗透到我们每天的生活里。我挑两个最典型的场景说说。
实时通信
语音、Zoom会议、游戏语音——这些场景对延迟极其敏感。你想想看,如果降噪算法引入100ms延迟,通话双方就会感觉「卡顿」「不同步」。我做过一个VoIP项目,客户要求端到端延迟不超过30ms,最后我们不得不把算法裁剪到极致,才勉强达标。
实时通信的核心指标:
- 延迟:算法处理时间 + 系统调度时间,通常要求 < 20ms
- 语音质量:PESQ/MOS 评分,不能因为降噪把语音本身也削了
- 资源占用:手机端CPU/内存有限,算法不能太「重」
智能音箱
智能音箱的痛点在于「远场」和「唤醒」。音箱放在客厅,人站在3米外说话,中间还隔着电视声、厨房油烟机声。我调试过一款音箱的唤醒率,在安静环境下能做到98%,但一开电视直接掉到60%。后来加了波束成形+降噪双级处理,才把唤醒率拉回到90%以上。
智能音箱的降噪链路通常长这样:
- 麦克风阵列采集多通道信号
- 波束成形定向增强目标方向
- 后置降噪滤除残余噪声
- 唤醒词检测触发后续处理
1.3 课程目标与学习路径
这门课不是讲理论推导的,是讲「怎么把降噪算法真正跑起来」的。学完这门课,我希望你能做到三件事:
- 理解核心算法:从谱减法到深度学习降噪,知道每种算法的优缺点
- 掌握部署技能:把算法移植到ARM、DSP、NPU等嵌入式平台
- 解决实际问题:遇到噪声场景,能快速选型、调参、优化
学习路径我建议这样走:
| 阶段 | 内容 | 预计时间 |
|---|---|---|
| 基础篇 | 傅里叶变换、滤波器设计、传统降噪算法 | 2周 |
| 进阶篇 | 深度学习降噪、实时流式处理、模型压缩 | 3周 |
| 实战篇 | ARM部署、DSP优化、端侧推理引擎集成 | 3周 |
核心建议:别急着跑代码,先把信号处理的基础打牢。我见过太多人一上来就调神经网络,结果连频谱图都看不懂,最后调出来的模型在真实场景里一塌糊涂。
1.4 数学基础回顾
做语音降噪,数学是绕不开的。但别怕,咱们只捡最常用的两块说。
傅里叶变换
傅里叶变换是语音处理的「眼睛」。没有它,你根本看不到信号在频域长什么样。公式长这样:
X(f) = ∫ x(t) · e^(-j2πft) dt
但在实际部署中,我们用的是离散傅里叶变换(DFT)和它的快速版本FFT。我习惯把FFT看作一个「黑盒子」——输入时域采样点,输出频域复数数组。你不需要手写FFT,但必须理解它的输入输出含义。
几个关键点:
- 帧长:通常取256、512、1024点,对应16kHz采样率下16ms、32ms、64ms
- 帧移:一般取帧长的50%,保证帧间连续性
- 窗函数:汉宁窗、海明窗最常用,用来抑制频谱泄露
概率论
概率论在降噪里主要用来做「估计」。最经典的就是维纳滤波——它假设语音和噪声都是高斯分布,然后求最小均方误差下的最优滤波器。
你需要掌握的基础概念:
- 概率密度函数:描述随机变量的分布
- 期望与方差:信号的均值能量和波动程度
- 最大似然估计:从观测数据反推模型参数
- 先验/后验概率:贝叶斯框架下的核心概念
举个例子,谱减法里估计噪声功率谱,本质上就是在做最大似然估计。你理解了这层关系,调参时就不会盲目乱试了。
1.5 本章知识体系
下面这张图总结了本章的核心脉络,方便你建立整体认知:
这张图把本章内容串起来了。核心是「语音降噪」这个主题,向外辐射出基本概念、应用场景和数学基础三大块。后面的课程都会围绕这个框架展开。