1、DSP基础概念:数字信号处理简介、采样定理、量化与编码、DSP在音频中的应用

各位同学好,我是老李。在嵌入式音频这个行当摸爬滚打了十几年,今天咱们来聊聊DSP的基础。说实话,很多刚入行的工程师觉得DSP就是一堆数学公式,离实际很远。其实不然,你每天听的音乐、打的电话、用的降噪耳机,背后全是DSP在干活。

这一章,我带你从最根本的东西开始。别急,咱们不搞学院派那套,我尽量用大白话把采样定理、量化编码这些讲明白。你想想看,如果连这些基础都搞不清楚,后面做音频算法肯定会踩坑。

1.1 数字信号处理简介

什么是数字信号处理?说白了,就是把连续的模拟信号变成离散的数字信号,然后拿算法去折腾它。为什么要折腾?因为数字信号好处理啊,抗干扰、可复制、还能用各种数学工具去分析。

我记得刚入行那会儿,带我的师傅跟我说过一句话,我一直记着:「模拟信号是上帝的语言,数字信号是人类的语言。」嗯,这话有点玄乎,但仔细想想确实有道理。我们人类造出来的芯片、写出来的代码,本质上就是在模仿和逼近自然界的物理现象。

数字信号处理有三个核心步骤:

  • 采样:把连续时间上的信号,变成离散时间上的点
  • 量化:把连续幅度上的值,变成离散的数值
  • 编码:把这些数值用二进制表示出来

这三个步骤缺一不可。我见过不少新手,觉得采样完就完事了,结果量化精度不够,出来的音频全是底噪。嗯,这里要注意,每一步都有坑。

1.2 采样定理

采样定理,也叫奈奎斯特采样定理。内容很简单:采样频率必须大于信号最高频率的两倍。为什么?因为只有这样,才能从采样后的数字信号中完美恢复出原来的模拟信号。

公式长这样:

fs > 2 * fmax

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

举个例子,人耳能听到的频率范围大概是20Hz到20kHz。所以CD音频的采样率定在了44.1kHz,刚好大于40kHz。为什么不是40kHz整?这里有个小故事,我简单说说——当年索尼和飞利浦在制定CD标准时,考虑到要兼容PAL和NTSC两种电视制式的视频信号,最后选了44.1kHz这个数字。

重要概念:如果采样频率不够高,会发生什么?混叠(Aliasing)。高频信号会伪装成低频信号混进来,你听到的声音就变味了。我在做车载音响项目时,就遇到过ADC前端的抗混叠滤波器没做好,结果高频噪声折叠到低频段,听起来像是有个蚊子一直在嗡嗡叫。

实战建议:实际工程中,采样率一般取信号最高频率的2.5到4倍。比如处理20kHz的音频信号,我习惯用48kHz或96kHz采样。留点余量,心里踏实。

1.3 量化与编码

采样搞定了时间轴上的离散化,接下来要处理幅度轴上的离散化——这就是量化。

量化说白了,就是用有限个数字去表示无限多种可能的幅度值。比如一个正弦波,它的幅度是连续变化的,但我们的ADC只能输出0到65535(16位)这些整数。那中间的数值怎么办?只能就近取整,这就产生了量化误差。

量化误差的表现形式就是量化噪声。公式如下:

SQNR = 6.02 * N + 1.76 dB

其中N是量化位数。每增加1位,信噪比提升约6dB。

量化位数 动态范围 常见应用
8位 48 dB 语音通信、对讲机
16位 96 dB CD音频、MP3
24位 144 dB 专业录音、Hi-Fi音响
32位浮点 理论无限 DAW内部处理、算法仿真

我曾经在一个蓝牙音箱项目里,为了省成本用了12位的ADC,结果播放音乐时底噪明显,客户直接退货。后来换成16位的,问题就解决了。所以啊,量化位数这块千万别省,省下来的成本最后都会变成售后成本。

注意:量化噪声是均匀分布的,但人耳对低频噪声更敏感。所以有些高端ADC会采用噪声整形技术,把量化噪声推到人耳不敏感的高频段。这个后面讲Sigma-Delta调制时会详细说。

1.4 DSP在音频中的应用

好了,前面铺垫了那么多,现在说说DSP到底在音频里干了什么活。我把它分成几大类:

  1. 音频编解码:MP3、AAC、Opus这些压缩算法,全是DSP的功劳。没有DSP,一首歌几百兆,你手机根本存不了几首。
  2. 音效处理:均衡器(EQ)、混响(Reverb)、压缩器(Compressor)、限幅器(Limiter)……这些都是DSP的基本操作。
  3. 降噪与回声消除:通话时的背景噪声抑制、声学回声消除,靠的都是DSP算法。我做过一个会议电话的项目,回声消除没做好,对方听到自己的回声,那体验简直了。
  4. 主动降噪(ANC):耳机里的降噪功能,本质上是DSP实时生成反相声波去抵消环境噪声。这个对延迟要求极高,一般要在几十微秒内完成。
  5. 音频增强:比如虚拟环绕声、空间音频、人声增强等等。

你想想看,现在随便一个智能音箱、TWS耳机、车载娱乐系统,里面都跑着少则几个、多则几十个DSP算法模块。这个行业的需求量有多大,不用我多说了吧。

我的经验:做音频DSP开发,建议先从EQ和滤波器入手。这两个是最基础的,也是最能锻炼你对频域理解的东西。我当年就是靠手写一个10段图示均衡器,才真正搞懂了IIR和FIR的区别。

好了,第一章的内容就到这里。下一章咱们会深入聊聊音频信号在频域里长什么样,以及怎么用傅里叶变换去看它。这些东西搞懂了,后面讲滤波器设计时你会轻松很多。