我们可以认为,自然中的声音信号是在时间分辨率和特征分辨率上都无限高的连续信号,离散信号处理要对时间和特征分辨率分别进行采样,单位为帧率和位深度,即每秒采样多少帧,每帧占用多少信息码位。
离散信号处理中的原始音频信号的帧率和位深度一般如下:
| 场景 | 采样率 fs/khz | 位深度 d/bit | 声道数 c | 原始码率 bitrate/kbps |
|---|---|---|---|---|
| 电话 | 8 | 16 | 1 | 128 |
| 语音 | 16 | 16 | 1 | 256 |
| 音乐 | 24 | 16 | 1 | 384 |
| CD | 44.1 | 16 | 2 | 1411 |
| DVD | 48 | 16 | 2 | 1536 |
音频分词器是在原始信号的基础上进一步对时间降采样并对特征量化的一种压缩方式。例如传统的 codec
| 格式 | 典型码率 | 采样率 | 位深度 | 压缩率 |
|---|---|---|---|---|
| MP3 | 128 | 44.1 | 16 | 5.5x |
| AAC | 128 / 256 | 44.1/48 | 16 | 3~6x |
| Opus | 64-128 | 48 | 16 | 6~12x |
事实上,mel 谱也可以视为一种广义上的音频分词器,以帧跳为 512,mel 特征维度为 80 计算,位深度为 32 为例,码率压缩率 = 时域压缩率 * 特征压缩率 * 位深度压缩率。其中时域压缩率为 512,特征压缩率为 1/80,位深度压缩率为 1/2,故 mel 谱的压缩率为 512/(80*2) = 3.2。
对于 neural codec 而言,压缩率可以进一步提高。例如:
| 模型 | 原始采样率 khz | 帧跳 | 帧率 hz | 特征维度 | 位深度 bit | 码率 kbps | 压缩率 |
|---|---|---|---|---|---|---|---|
| EnCodec | 24 | 320 | 75 | 32 | 10 | 24 | 16 |
| SoundStream | 24 | 320 | 75 | 8 | 10 | 6 | 64 |
| DAC | 44.1 | 512 | 86 | 9 | 10 | 7.74 | 91 |
这里,原始采样率 / 帧跳 = 帧率。特征维度即码本数,位深度即
而现在有一些连续 codec,准确说叫连续 autoencoder,其不在隐空间上作量化,例如 CALM 中的 VAE,或者 VibeVoice 的
| 模型 | 原始采样率 khz | 帧跳 | 帧率 hz | 特征维度 | 位深度 bit | 码率 kbps | 压缩率 |
|---|---|---|---|---|---|---|---|
| CALM | 24 | 1920 | 12.5 | 32 | 32 | 12.8 | 30 |
| Vibevoice | 24 | 3200 | 7.5 | 64 | 32 | 15.36 | 25 |
因为我们始终属于离散信号处理的领域,所以 codec 连续还是离散主要区别在于是否使用了某种量化手段,例如 基于 K-means 聚类的向量量化 VQ,有限标量量化 FSQ,二元标量量化 BSQ。在信息表示上本质都是离散的,因此离散 codec 的码本数相当于连续 codec 的特征维度,离散 codec 的码本大小相当于连续 codec 的位深度。