极客时间-《搞定音频技术》-学习笔记
语音基础知识
https://www.zhangzhenhu.com/audio/feature.html
序章-0
作者说这个语音技术啊,未来肯定前景大好啊,大家都来学习,然后给出了课程的脑图
音频基础
什么是声音
声音的三要素是指响度、音调和音色,它们都是声音的主观属性,用来描述声音的特征。
响度指声音的强弱,音调指声音的高低,音色指声音的质量或特征。
- 响度(Loudness):
指声音的强弱,由振幅决定。
振幅越大,响度越大;振幅越小,响度越小。
响度还跟距离发声体远近有关。
单位是分贝(dB)。
- 音调(Pitch):
指声音的高低,由频率决定。
频率越高,音调越高;频率越低,音调越低。
单位是赫兹(Hz)。
人耳能听到的频率范围大约是20Hz 到20000Hz。
- 音色(Timbre):
指声音的质量、特征,由声源的材料、结构、形状等决定。
不同发声体的音色不同,可以帮助我们区分不同的声源。
音色也与声波的波形有关
01|声音是如何保存成数字信号的?
这章我觉得这个介绍得更好:数字音频基础-从PCM说起
声音本质是空气振动,数字音频是这种振动的数学表达。如果声音的三大构成是响度,音高,音色。
那么理解数字音频信号的三大核心指标——就是采样位深、采样率、通道数
模拟到数字:PCM编码链路
声音采集遵循经典的模数转换流程。麦克风将声波转换为电信号(模拟信号),ADC再通过PCM脉冲编码调制完成数字化。这个过程包含三个关键步骤:抽样、量化、编码。
graph LR
A[声波] --> B[麦克风振膜]
B --> C[模拟电信号]
C --> D[ADC转换器(硬件)]
D --> E[PCM数字信号(软件)]
E --> F[音频裸数据]
关于模拟信号到数字信号的部分:
PCM文件即未封装的音频原始数据,也称"裸数据"。所有压缩格式的源头都是PCM。
采样位深:振幅精度的量化标尺
位深决定每个采样点的存储精度,直接影响动态范围和失真度。16位提供96dB动态范围,足够电话通信;32位达到192dB,满足专业音乐制作需求。
位深与精度关系:
- 8位:256个量化级别,早期设备标准,明显失真
- 16位:65536个级别,消费级音频主流
- 24位:1677万个级别,专业录音标准
- 32位:42亿个级别,后期处理无损
采样率:频域完整性的奈奎斯特约束
采样率确定可还原的最高频率。我们在《计算机网络》里学过,根据奈奎斯特定理,采样率必须超过目标频率的2倍才能无失真重建信号。
常见采样率应用:
- 8kHz:电话通信(4kHz带宽)
- 16kHz:语音识别(8kHz带宽)
- 44.1kHz:CD音质(22.05kHz带宽)
- 48kHz:专业音频标准(24kHz带宽)
- 96kHz:高保真录音(48kHz带宽)
graph LR
A[模拟信号] --> B[采样率 fs]
B --> C{fs > 2×fmax?}
C -->|是| D[完整重建]
C -->|否| E[频谱混叠]
44.1kHz覆盖人耳20Hz-20kHz全频段,48kHz则为数字音频工作流提供更大余量,避免抗混叠滤波器设计复杂化。
通道数:空间音频的维度扩展
通道数定义同一时刻并行处理的独立音频流数量。每个通道对应一个物理扬声器或采集麦克风,决定音频系统的空间表现力。
典型通道配置:
- 单声道(Mono):实时通信、语音识别
- 立体声(Stereo):音乐播放、耳机体验
- 2.1声道:左右主音箱+低音炮
- 5.1声道:环绕声影院系统
立体声通过左右耳差异营造空间感,麦克风阵列通过多通道采集实现波束成形和噪声抑制。通道数直接影响存储需求和传输带宽。
PCM存储计算:从理论到实践
PCM文件大小遵循简单乘法法则:存储空间 = 位深 × 采样率 × 通道数 × 时长
实例计算:
- 音频参数:立体声,48kHz,16位,100秒
- 存储空间:16 × 48000 × 2 × 100 = 153,600,000位 = 18.31MB
- 传输带宽:16 × 48000 × 2 = 1,536,000bps = 1.5Mbps
这解释了为什么原始PCM文件如此庞大,也说明了音频压缩的必要性。
音频封装:有损与无损的权衡艺术
音频封装格式通过不同压缩策略在文件大小与音质间寻找平衡。理解压缩原理有助于选择适合的格式。
有损压缩(感知编码):
利用人耳听觉掩蔽效应,去除感知冗余信息。MP3、AAC属此类,压缩比高但存在不可逆失真。
无损压缩(统计编码):
仅去除统计冗余,保持完全可逆。FLAC、ALAC提供CD级音质,但文件仍较大。
原始格式:
WAV、AIFF本质是PCM的容器格式,添加文件头信息但不压缩音频数据。
选择策略取决于应用场景:存储受限选MP3,音质优先选FLAC,专业制作用WAV。
# to do
# 等待更新