C14 Speech Signal Basics
主线
这一章先把 speech 从“语言”还原成“信号”:
air pressure over time
→ sampled waveform
→ frequency / energy / duration features
→ perceptual features like pitch, loudness, mel
→ controllable speech model inputs语音模型处理的不是抽象文字,而是被数字化的声波。理解 audio feature 的关键,是分清三组关系:
- 物理量 vs 感知量:F0 是物理频率,pitch 是听觉音高;power/intensity 是物理强度,loudness 是听觉响度。
- 连续信号 vs 离散表示:真实声波连续,数字音频通过 sampling 和 quantization 存储。
mindmap root((Speech Signal)) Waveform sr samples per second 16000 samples/s samples 一长串离散点 Framing window length 25 ms N N = sr × window length 16000 × 0.025 = 400 samples hop length 10 ms 控制相邻帧间隔 overlap window length > hop length STFT Short-Time Fourier Transform 每帧做一次 DFT/FFT time frame → frequency bins Spectrogram x-axis = time frames y-axis = frequency bins value = energy / magnitude Mel mel filterbank mel spectrogram log mel spectrum
flowchart LR A["waveform<br/>一长串 samples"] --> B["sr<br/>16000 samples/s"] B --> C["window length<br/>25 ms"] C --> D["N = sr × window<br/>400 samples/frame"] D --> E["hop length<br/>10 ms"] E --> F["overlapping frames<br/>0-25, 10-35, 20-45 ms"] F --> G["STFT<br/>每帧做 DFT/FFT"] G --> H["frequency bins<br/>每帧一排频率能量"] H --> I["spectrogram<br/>time × frequency"] I --> J["mel filterbank<br/>压缩到 mel 频带"] J --> K["log mel spectrum<br/>模型常用输入"] classDef raw fill:#e8f3ff,stroke:#4f8cff,color:#111827; classDef frame fill:#fff3d8,stroke:#d99a00,color:#111827; classDef transform fill:#efe7ff,stroke:#8b5cf6,color:#111827; classDef output fill:#e7f8ef,stroke:#20a464,color:#111827; class A,B raw; class C,D,E,F frame; class G,H transform; class I,J,K output;
1. 声音是什么
声音是空气压力随时间的变化。麦克风记录的是某个位置上的 pressure deviation:
time → pressure deviationwaveform 的横轴是时间,纵轴是相对正常气压的偏离:
- 正值:压缩
- 0:正常气压
- 负值:稀疏
这是 speech signal 的最底层表示。
2. 模拟声波到数字音频
真实声音是连续的,电脑只能存离散数字,所以需要:
analog waveform → sampling → quantization → digital audiosampling 是每隔一小段时间量一次振幅。16 kHz 采样率表示每秒采 16000 个点,不是声音频率为 16000 Hz。
Nyquist frequency 是采样率的一半。一个周期至少需要两个采样点才能被可靠表示: (Nyquist : Harry Nyquist,贝尔实验室的人)
sampling rate = 16000 Hz
max reliable frequency ≈ 8000 Hz超过 Nyquist 频率的成分会产生 aliasing,高频被系统误看成低频。
quantization 是把连续振幅映射到有限数值格子中。bit depth 越低,可用振幅级别越少,quantization error 越明显。
3. Frequency, F0, Pitch
frequency 是每秒重复次数,单位 Hz。
10 cycles / 0.04 s = 250 HzF0 / fundamental frequency 是声带周期性振动的频率。元音等 voiced sound 有稳定周期,可以估 F0;[s]、[f] 这类清擦音主要来自气流湍流,没有稳定 F0。
pitch 是人的听觉音高感受。F0 和 pitch 强相关,但不是同一个东西:
F0 = physical
pitch = perceptual4. Source-Filter Model
语音可以用 source-filter model 理解:
vocal folds = source
vocal tract / nasal cavity / tongue / lips = filter声带主要影响 F0 和 pitch;口腔、舌头、嘴唇等声道形状主要影响 formants、音色和元音质量。
所以同一个 F0 下,可以发出 [iy]、[aa]、[uw] 等不同元音。音高可能接近,但 formants 不同,听起来就是不同的音。
5. Amplitude, Power, Loudness
amplitude 是某一时刻波形偏离 0 的大小。因为 waveform 有正有负,直接平均会抵消,所以常用 RMS amplitude:
square → mean → square rootpower 近似为振幅平方的平均:
Power = average(x²)因此振幅翻 2 倍,power 约翻 4 倍。
更具体地说:
Power = (1/N) Σ xi²
RMS = sqrt((1/N) Σ xi²)
Power = RMS²
RMS = sqrt(Power)
Intensity(dB) = 10 log10(Power / P_ref)intensity 常用 dB 表示,本质是对 power 做 log 压缩。人耳更接近感知比例变化,而不是线性绝对差值。
loudness 是听觉响度感受,不等于 power。同样的 power,在不同频率上可能听起来不一样响。
6. Frame, STFT, Spectrogram
这一节要钉住的不是所有声学概念,而是几个变量怎么接起来:
sr → window length → N → hop length → frames → STFT → bins → spectrogramframe 是从原始 waveform 里切出来的一小段短时间 window。它的时间长度就是 window length。
比如:
sr = 16000
window length = 25 ms
N = 16000 × 0.025 = 400 samples所以“一帧 400 点”和“一帧 25 ms”是在说同一件事,只是一个用采样点数表达,一个用时间长度表达。
切帧时还会有 hop length,表示隔多久切下一帧:
window length = 25 ms
hop length = 10 ms
frame 1: 0–25 ms
frame 2: 10–35 ms
frame 3: 20–45 ms
frame 4: 30–55 ms因此相邻帧通常会重叠。这样做是为了在保留短时局部结构的同时,让时间轴上的变化足够平滑。
特征提取链条:
waveform = 一长串采样点
→ 按 window length 切成 frames
→ 每帧做 DFT/FFT
→ 每帧得到一排 frequency bins
→ 每个 bin 有能量
→ 多帧排起来形成 spectrogram
→ 过 mel filterbank 得到 mel spectrogram
→ 取 log 得到 log mel spectrum这里的关键直觉是:FFT 不是对整段语音一次性做,而是对每个短时 frame 做。spectrogram 就是把每一帧的频率能量分布沿时间排起来。
变量关系:
sr = sample rate = 每秒多少个采样点
window length = 每帧覆盖多长时间
N = 每帧包含多少个 sample
N = sr × window length
hop length = 相邻两帧起点之间隔多久
STFT = 对每个短时 frame 做 Fourier transformSTFT 的意思是 Short-Time Fourier Transform。它不是新的神秘变换,而是:
先切短时间 frame
再对每个 frame 做 DFT/FFT所以:
DFT/FFT: 一段信号 → 一排频率 bins
STFT: 多个短时 frames → 多排频率 bins
Spectrogram: 把这些 bins 按时间排成图7. Mel Scale
人耳对低频差异更敏感,对高频差异没那么敏感。mel scale 把线性频率轴改造成更接近听觉感知的尺度:
raw frequency → mel frequency直觉:
- 低频:保留更细
- 高频:压缩更多
这就是语音识别常用 mel features 的原因:它把频率表示提前注入了人耳听觉先验。
8. Duration, Energy, Prosody
duration 是 phone、音节、词持续多久。强调时常会拖长。
energy 是一段时间里的能量强弱,和响度相关。元音通常 energy 高,停顿或清音 energy 低。
prosody 主要由三类量共同形成:
F0 + energy + duration它们一起决定语气、强调、节奏、疑问/陈述、情绪:
- 句末 F0 上升:疑问感
- 句末 F0 下降:陈述感
- duration 变长:强调或拖长
- energy 变大:更响、更突出