2. 音频信号基础与噪声模型

各位同学,欢迎来到实战课的第二讲。今天我们要聊的,是DSP移植联调中最基础、也最绕不开的一块——音频信号和噪声模型。说白了,你连信号长什么样、噪声从哪来都搞不清楚,后面调滤波器就是瞎调。

我刚开始做音频算法移植那会儿,就吃过这个亏。有一次把一个降噪算法从PC端往嵌入式平台搬,PC上跑得好好的,一上板子效果全变味。查了三天,最后发现是ADC采样率配置错了,信号已经混叠了,滤波器再努力也白搭。嗯,从那以后,我每次移植第一件事就是检查采样率和信号链路。

2.1 模拟信号与数字信号

咱们先捋清楚这两个概念。

模拟信号,就是自然界里真实存在的信号。比如你说话时声带振动产生的声波,它在时间和幅度上都是连续的。麦克风拾取到的电压变化,也是模拟信号。

数字信号,则是把模拟信号经过采样、量化后得到的离散序列。它在时间上是离散的,在幅度上也是离散的(量化到有限个电平)。

为什么要把好好的模拟信号转成数字的?因为数字信号抗干扰能力强,容易存储、传输和处理。DSP芯片只能处理数字信号,所以ADC(模数转换器)是音频系统的第一道关卡。

核心要点:

  • 模拟信号:连续时间 + 连续幅度
  • 数字信号:离散时间 + 离散幅度
  • ADC完成从模拟到数字的转换

我个人习惯,在项目初期就会把整个信号链路的模拟/数字分界点画清楚。哪一段是模拟域,哪一段是数字域,中间ADC/DAC的参数是什么,心里要有数。

2.2 采样定理——奈奎斯特的底线

采样定理,也叫奈奎斯特采样定理。内容很简单:采样频率必须大于信号最高频率的两倍。

用公式表达就是:

fs > 2 * fmax

其中fs是采样频率,fmax是信号中最高频率分量。

为什么必须这样?因为如果采样率不够,就会发生混叠(Aliasing)——高频信号会伪装成低频信号混进来,你根本分不清哪个是真哪个是假。

避坑指南:

我曾经在一个语音采集项目中,用了8kHz采样率去采集一个包含4.5kHz成分的信号。结果4.5kHz的信号被混叠成了3.5kHz(8-4.5=3.5),滤波器设计全乱套。后来我养成了一个习惯:采样率至少留20%的余量,并且ADC前端一定要加抗混叠滤波器。

常见的音频采样率:

采样率 典型应用 奈奎斯特频率
8 kHz 电话语音 4 kHz
16 kHz 宽带语音 8 kHz
44.1 kHz CD音质 22.05 kHz
48 kHz 专业音频 24 kHz

你想想看,如果采样率是44.1kHz,理论上能采集22.05kHz以内的信号。人耳能听到20kHz左右,所以CD音质够用了。

2.3 常见噪声类型

噪声无处不在。在DSP移植联调中,你遇到的噪声主要有这么几种。

2.3.1 白噪声

白噪声的功率谱密度在整个频率范围内是常数。也就是说,每个频率上的能量都一样。听起来像收音机没信号时的“嘶嘶”声。

白噪声在时域上,相邻采样点之间是不相关的。它的自相关函数是一个冲激函数。

小技巧:

在测试滤波器时,我经常用白噪声作为输入信号。因为它包含所有频率成分,可以快速检验滤波器的频率响应是否正常。如果白噪声通过滤波器后频谱形状不对,那滤波器肯定有问题。

2.3.2 粉红噪声

粉红噪声的功率谱密度与频率成反比,每倍频程下降3dB。低频能量更多,听起来比白噪声“暖”一些,像瀑布声或雨声。

自然界中很多声音都接近粉红噪声,比如心跳、海浪。音频测试中也常用粉红噪声来模拟真实环境。

2.3.3 脉冲噪声

脉冲噪声是时域上短暂、幅度大的尖峰。比如开关电源的毛刺、静电放电、接触不良时的“咔嗒”声。

这种噪声在频域上能量分布很广,容易干扰整个频段。对付脉冲噪声,通常用中值滤波或限幅器,而不是传统的线性滤波器。

避坑指南:

我曾经在移植一个降噪算法时,发现算法对白噪声和粉红噪声效果很好,但一遇到脉冲噪声就崩溃。后来排查发现,算法里有一个自适应步长更新逻辑,脉冲噪声导致步长瞬间跳变,滤波器发散。解决方案是在算法前端加一个脉冲检测和限幅模块。

三种噪声的对比:

噪声类型 频谱特性 时域特性 典型来源
白噪声 平坦 随机、不相关 热噪声、量化噪声
粉红噪声 每倍频程-3dB 低频能量多 自然声、环境噪声
脉冲噪声 宽频带 短暂尖峰 开关毛刺、静电

2.4 信噪比(SNR)概念

信噪比,英文Signal-to-Noise Ratio,缩写SNR。它衡量的是有用信号和噪声的功率比值。

公式很简单:

SNR(dB) = 10 * log10( P_signal / P_noise )

其中P_signal是信号功率,P_noise是噪声功率。单位是dB。

举个例子:如果信号功率是噪声功率的100倍,那么SNR = 10 * log10(100) = 20 dB。

SNR越高,说明信号越干净,噪声越少。一般语音通信要求SNR在15dB以上才能听清。高保真音频系统SNR能做到90dB以上。

实际工程中的SNR:

  • SNR < 0 dB:信号被噪声淹没,基本不可用
  • SNR 0-10 dB:噪声明显,需要降噪处理
  • SNR 10-20 dB:可以通信,但质量一般
  • SNR > 20 dB:信号质量较好
  • SNR > 60 dB:高保真级别

在DSP移植联调中,我经常用SNR来评估降噪效果。算法处理前后的SNR提升量,就是降噪量。比如输入SNR是5dB,输出SNR是15dB,那降噪量就是10dB。

但要注意,SNR只是一个宏观指标。有时候SNR提升了,但语音失真了,听起来反而更差。所以除了SNR,还要结合主观听感来评估。

2.5 本章知识体系

下面这张图,把本章的核心知识点串起来了。你可以把它当作一个快速索引。

音频信号基础与噪声模型知识体系 音频信号基础与噪声模型知识体系 信号基础 噪声模型 模拟信号 数字信号 白噪声 粉红噪声 采样定理(奈奎斯特) 脉冲噪声 混叠与抗混叠滤波器 信噪比(SNR) DSP移植联调中的工程实践 核心:采样率配置 → 抗混叠滤波 → 噪声识别 → SNR评估 → 滤波器设计 每一步都可能在移植过程中出问题,需要逐级验证

这张图从信号基础和噪声模型两个分支展开,最终汇聚到DSP移植联调中的工程实践。你可以看到,采样定理、抗混叠滤波器、SNR评估,这些都是环环相扣的。任何一个环节出问题,最终效果都会打折扣。

好了,这一章的内容就到这里。音频信号和噪声模型是后面所有滤波器设计的基础,把这些概念吃透了,后面调滤波器的时候你才能心里有底。