WebRTC-之-VoIP

28 阅读3分钟

VoIP 逐渐取代了传统的电话,现在很多时间我在手机接听的不是传统的电话,而且是微信的语音呼叫

VoIP

声音的特征

声音是通过物体振动产生的声波,并透过介质(空气或固体、液体)的传播,能被人或动物之听觉器官所感知的波动现象。声音会振动是因为有一股支持的能量。当声源振动时会推拉它附近的介质,声波正是介质在传送时产生的现象。 当振动的物体向外振动时会挤压介质,使介质的密度变大;而当它向内振动时,介质质点间的间隔则会变大,密度也就会跟着变小,这一疏一密的持续变化,就是声波的形成。

声音的主观特征

  • 响度 是声音的强弱,通常以「分贝」(dB) 来表示响度的大小。声波振幅愈大则响度愈大

  • 音调 是声音的高低,音调由发音体的振动频率决定,频率愈高则音调愈高

  • 音色 关系着声音的独特性,不同的发音体产生不同的波形,而形成不同的 音色

声音的客观特征

  • 振幅 amplitude 振幅越大,响度越大,以分贝来表示声音的强度,我们的耳朵对于声音的感知反应并不是线性的,而是一种对数比例关系,这里的分贝是指两个相同的物理量之比取以10为底的对数并乘以10 或 20, 即

    N=10lg(A1/A0)N = 10*lg(A_1/A_0)

通常我们 A0A_0 取 20 微帕,人耳所能听到的最小声音

  • 频率 是单位时间内波动发生的次数,其单位为赫兹 (Hz)。所以振动越快,频率越高。

声音作为波的一种,总可以被分解为不同频率、不同强度正弦波的叠加。这种变换(或分解)的过程,称为傅立叶变换 (Fourier Transform)。

  • 波形

波形决定了声音的音色,钢琴和小提琴声波可能振幅和频率相同,但听起音色大相径庭,究其原因就是波形大不相同。

VoIP 传输与处理过程

首先是从模拟信号到数字信号的转换,主要有三步

  1. 采样
  2. 量化
  3. 编码

VoIP 编码

在 RFC 7874 中要求所有兼容 WebRTC 标准的浏览器必需支持如下编码

编码支持的浏览器
OpusChrome, Edge, Firefox, Safari
G.711 PCM (A-law)Chrome, Firefox, Safari
G.711 PCM (µ-law)Chrome, Firefox, Safari

G.711

传统设备上应用最广的语音编码,例如电话系统主要使用的就是G.711编码

Opus

Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF互联网工程任务组进行标准化,目标用希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用于网上上低延迟的即时声音传输,标准格式定义于RFC6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。

Opus集成了两种声音编码的技术:以语音编码为导向的SILK和低延迟的CELT。Opus可以无缝调节高低比特率。在编码器内部它在较低比特率时使用线性预测编码在高比特率时候使用变换编码(在高低比特率交界处也使用两者结合的编码方式)。Opus具有非常低的算法延迟(默认为22.5 ms),非常适合用于低延迟语音通话的编码,像是网上上的即时声音流、即时同步声音旁白等等,此外Opus也可以透过降低编码码率,达成更低的算法延迟,最低可以到5 ms。在多个听觉盲测中,Opus都比MP3、AAC、HE-AAC等常见格式,有更低的延迟和更好的声音压缩率。