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到底在音频里干了什么活。我把它分成几大类:
- 音频编解码:MP3、AAC、Opus这些压缩算法,全是DSP的功劳。没有DSP,一首歌几百兆,你手机根本存不了几首。
- 音效处理:均衡器(EQ)、混响(Reverb)、压缩器(Compressor)、限幅器(Limiter)……这些都是DSP的基本操作。
- 降噪与回声消除:通话时的背景噪声抑制、声学回声消除,靠的都是DSP算法。我做过一个会议电话的项目,回声消除没做好,对方听到自己的回声,那体验简直了。
- 主动降噪(ANC):耳机里的降噪功能,本质上是DSP实时生成反相声波去抵消环境噪声。这个对延迟要求极高,一般要在几十微秒内完成。
- 音频增强:比如虚拟环绕声、空间音频、人声增强等等。
你想想看,现在随便一个智能音箱、TWS耳机、车载娱乐系统,里面都跑着少则几个、多则几十个DSP算法模块。这个行业的需求量有多大,不用我多说了吧。
我的经验:做音频DSP开发,建议先从EQ和滤波器入手。这两个是最基础的,也是最能锻炼你对频域理解的东西。我当年就是靠手写一个10段图示均衡器,才真正搞懂了IIR和FIR的区别。
好了,第一章的内容就到这里。下一章咱们会深入聊聊音频信号在频域里长什么样,以及怎么用傅里叶变换去看它。这些东西搞懂了,后面讲滤波器设计时你会轻松很多。