0 Preface/Foreword
1 CVSD介绍
1.1 CVSD全称
CVSD:ContinuousVariableSlopeDelta modulation,连续可变斜率增量调整
CVSD是经典蓝牙(Bluetooth Classic)里HFP通话最基础、最传统的语音编码方式。
1.2 CVSD类型
CVSD本质是:
- 语音Codec
- 波形编码(waveform codec)
- 差分调制类(Delta Modulation)
SBC/AAC:有损音频压缩
Opus/LC3:现代语音编码
1.2.1 CVSD的目标
CVSD目标:在低带宽、低延迟的链路上,可靠传语音。
1.3 CVSD的技术参数
| 项目 | 数值 |
| 采样率 | 8KHz |
| 量化 | 1 bit |
| 比特率 | 64 kpbs |
| 音频带宽 | 300Hz - 3.4 KHz |
| 延迟 | 极低 |
| 复杂度 | 极低 |
1.3.1 比特率
CVSD的64kbps指的是:语音编码后的原始语音比特流速率,不是指蓝牙空口的实际传输速率。
该比特率会映射到空口的固定带宽时隙里。
64kpbs,表示CVSD每秒钟编码生成64000个语音比特,这是一个语音信号层面的概念,和无线物理层还没直接关系。
1.3.2 蓝牙空口速率
蓝牙空口速率指PHY层速率。
PHY分为1Mbps和2Mbps。
1.3.3 CVSD数据流到空口
第一步:产生语音比特流
- MIC
- 语音采样(8KHz)
- CVSD编码
- 64kpbs比特流
第二步:比特流放入SCO/eSCO帧
在HFP中,CVSD只能跑在SCO/eSCO语音链路上。
SCO的特点:
- 固定时隙
- 固定带宽
- 不重传
- 面向实时语音
第三步:SCO帧通过蓝牙空口发送
- CVSD bitstream(64kpbs)
- SCO payload
- baseband framing
- PHY modulation
- 蓝牙空口
空口承载能力是固定分配的,而不是按kbps自由跑。
1.3.4 SCO为什么刚好适合64kbps
该数值是在设计时候就算好的:典型SCO(CVSD)的参数
- 包类型:HV1/HV2/HV3
- 调度:每6个时隙一个SCO包
- 有效语音净荷:64kbps
1.4 CVSD在蓝牙中的应用场景
1.4.1 HFP通话
- CVSD最为基础、必须支持的Codec
- 所有HFP设备至少要支持CVSD
1.4.2 协议位置
- HFP profile
- RFCOMM (AT 信令)
- SCO/eSCO (语音链路)
- CVSD编码语音
- 蓝牙空口
📞CVSD语音永远运行在SCO/eSCO信道上。
❌️不经过RFCOMM
❌️不经过L2CAP
1.5 为啥现在还有CVSD
当前已经有了mSBC这类宽带(Wideband Speech)语音, 为什么还要有CVSD。
原因是:
- backward compatibility
- 某些链路条件差时更稳定
- 低端/老设备只支持CVSD
- Fallback机制(退路;应变计划)