音频编码-G.711

​G.711是一种窄带音频编解码器,最初设计用于提供 64 kbit/s 的长途质量音频的电话。G.711 传递 300–3400 Hz 范围内的音频信号,并以每秒 8,000 个样本的速率对其进行采样,该速率的容差为百万分之 50 (ppm)。使用 8 位的非均匀(对数)量化来表示每个样本,从而产生 64 kbit/s 的比特率。有两个略有不同的版本:主要用于北美和日本的μ-law和在北美以外的大多数其他国家/地区使用的A-law。 G.711 是用于音频压扩的ITU-T标准(推荐),标题为 1972 年发布的语音频率脉冲编码调制 (PCM)。它是许多技术的必需标准,例如H.320和H. .323标准。它也可用于IP 网络上的传真通信(如T.38规范中所定义)。 已发布 G.711 的两项增强功能:G.711.0利用无损数据压缩来减少带宽使用,而G.711.1通过增加带宽来提高音频质量。 ​

特点

8 kHz 采样频率
64 kbit/s 比特率(8 kHz 采样频率 × 8 比特/样本)
典型的算法延迟为 0.125 ms,无前瞻延迟
G.711是一种波形语音编码器
G.711 附录 I 定义了分组丢失隐藏(PLC) 算法,以帮助隐藏分组网络中的传输丢失
G.711 附录 II 定义了一种不连续传输(DTX) 算法,该算法使用语音活动检测(VAD) 和舒适噪声生成(CNG) 来减少静音期间的带宽使用
理想条件下的PSQM测试产生 G.711 μ-law 的平均意见分数为 4.45,G.711 A-law 的平均意见分数为 4.45
网络压力下的 PSQM 测试对 G.711 μ-law 产生的平均意见得分为 4.13,对于 G.711 A-law 产生 4.11 

类型

​G.711 定义了两种主要的压扩算法,μ-law 算法和A-law 算法。两者都是对数的,但 A-law 专门设计用于更简单的计算机处理。该标准还定义了一系列重复代码值,定义了 0 dB的功率电平。 μ-law 和 A-law 算法将 14 位和 13 位有符号线性 PCM 样本(分别)编码为对数 8 位样本。因此,G.711编码器将为以 8 kHz 采样的信号创建 64 kbit/s 比特流。 G.711 μ-law 倾向于为较高范围的信号提供更高的分辨率,而 G.711 A-law 在较低的信号电平下提供更多的量化电平。 使用术语 PCMU、G711u 或 G711MU 表示 G711 μ-law,使用 PCMA 或 G711A 表示 G711 A-law。 ​

A-law

A-law 编码将 13 位有符号线性音频样本作为输入,并将其转换为 8 位值,如下所示:

线性输入码 压缩码
异或 01010101
线性输出代码
s0000000abcdx s000abcd s0000000abcd1
s0000001abcdx s001abcd s0000001abcd1
s000001abcdxx s010abcd s000001abcd10
s00001abcdxxx s011abcd s00001abcd100
s0001abcdxxxx s100abcd s0001abcd1000
s001abcdxxxxx s101abcd s001abcd10000
s01abcdxxxxxx s110abcd s01abcd100000
s1abcdxxxxxxx s111abcd s1abcd1000000

1.该值是通过取输入值的二进制补码表示形式产生的,如果值为负数,则将符号位之后的所有位取反。
2.^ 有符号的幅度表示

​s符号位在哪里,s是它的倒数(即正值用MSB = s = 1 编码),标记的位x被丢弃。请注意,表的第一列使用与第三列不同的负值表示。因此,例如,输入的十进制值 -21 在位反转后以二进制表示为 1000000010100,它映射到 00001010(根据表的第一行)。解码时,这映射回 1000000010101,它被解释为十进制的输出值 -21。输入值 +52(二进制的 0000000110100)映射到 10011010(根据第二行),它映射回 0000000110101(十进制的 +53)。 这可以看作是一个浮点数,具有 4 位尾数 m(相当于 5 位精度)、3 位指数 e和 1 个符号位s,其格式与公式给出 seeemmmm的解码线性值y一样 这是一个 13 位有符号整数,范围为 ±1 到 ±(2 12 − 2 6 )。请注意,由于添加了 0.5(量化步长的一半),因此没有压缩代码解码为零。 此外,该标准规定在传输八位字节之前将所有结果偶数位(LSB为偶数)反转。这是为了提供大量的 0/1 转换,以促进 PCM 接收器中的时钟恢复过程。因此,无声 A 律编码的 PCM 通道的 8 位样本在八位字节中编码为 0xD5 而不是 0x80。 当通过 E0 ( G.703 ) 发送数据时,首先发送 MSB(符号),最后发送 LSB。 ITU-T STL [3]将解码算法定义如下(它将解码值放在 16 位输出数据类型的 13 个最高有效位中)。 ​

void            alaw_expand(lseg, logbuf, linbuf)
  long            lseg;
  short          *linbuf;
  short          *logbuf;
{
  short           ix, mant, iexp;
  long            n;

  for (n = 0; n < lseg; n++)
  {
    ix = logbuf[n] ^ (0x0055);	/* re-toggle toggled bits */

    ix &= (0x007F);		/* remove sign bit */
    iexp = ix >> 4;		/* extract exponent */
    mant = ix & (0x000F);	/* now get mantissa */
    if (iexp > 0)
      mant = mant + 16;		/* add leading '1', if exponent > 0 */

    mant = (mant << 4) + (0x0008);	/* now mantissa left justified and */
    /* 1/2 quantization step added */
    if (iexp > 1)		/* now left shift according exponent */
      mant = mant << (iexp - 1);

    linbuf[n] = logbuf[n] > 127	/* invert, if negative sample */
      ? mant
      : -mant;
  }
}

μ-law

μ-law(有时称为 ulaw、G.711Mu 或 G.711μ)编码采用二进制补码表示的 14 位有符号线性音频样本作为输入,如果值为负,则反转符号位之后的所有位,添加 33(二进制 100001)并将其转换为 8 位值,如下所示:

线性输入值 压缩代码
XOR 11111111
线性输出值
s00000001abcdx s000abcd s00000001abcd1
s0000001abcdxx s001abcd s0000001abcd10
s000001abcdxxx s010abcd s000001abcd100
s00001abcdxxxx s011abcd s00001abcd1000
s0001abcdxxxxx s100abcd s0001abcd10000
s001abcdxxxxxx s101abcd s001abcd100000
s01abcdxxxxxxx s110abcd s01abcd1000000
s1abcdxxxxxxxx s111abcd s1abcd10000000

1.此值是通过取输入值的二进制补码表示,如果值为负数则反转符号位之后的所有位,然后加上 33。
2.^ 有符号的幅度表示。最终结果是通过将该值的大小减少 33 来产生的。

s符号位在哪里,标记的位x被丢弃。 此外,该标准规定在传输八位字节之前将编码位反转。因此,无声 μ 律编码的 PCM 通道具有 8 位样本传输的 0xFF 而不是八位字节中的 0x00。 添加 33 是​​必要的,以便所有值都落入一个压缩组,并在解码时将其减去。 将格式化为 as 的编码值seeemmmm分解为 4 位尾数m、3 位指数e和 1 位符号位s,解码后的线性值y由公式给出 这是一个 14 位有符号整数,范围为 ±0 到 ±8031。 请注意,0 以 0xFF 传输,-1 以 0x7F 传输,但在两种情况下接收到的结果都是 0。

G.711.0

G.711.0,也称为 G.711 LLC,利用无损数据压缩将带宽使用量减少多达 50%。 G.711脉冲编码调制标准的无损压缩于2009年9月获得ITU-T批准。

G.711.1

​G.711.1 是 G.711 的扩展,于 2008 年 3 月作为 ITU-T Recommendation G.711.1 发布。其正式名称为Wideband Embedded extension for G.711 脉冲编码调制。 G.711.1,允许添加窄带和/或宽带(16000 个样本/秒)增强功能,每个增强功能都以(包含的)基本 G.711 比特流比特率的 25%,导致数据速率为 64、80 或 96 kbit /秒。 G.711.1 在 64 kbit/s 下与 G.711 兼容,因此可以预见在现有的基于 G.711 的 IP 语音 ( VoIP ) 基础设施中的有效部署。G.711.1 编码器可以在 80 和 96 kbit/s 下以 50-7000 Hz 的带宽对 16 kHz 的信号进行编码,对于 8-kHz 采样,输出可以产生带宽从 50 到 4000 Hz 的信号,运行64 和 80 kbit/s。 G.711.1 编码器创建一个嵌入式比特流,其结构分为三层,对应于三种可用比特率:64、80 和 96 kbit/s。比特流不包含关于包含哪些层的任何信息,实现将需要关于哪些层可用的带外信令。G.711.1 的三个层是:低频段的对数压扩脉冲编码调制 (PCM),包括噪声反馈、具有自适应比特分配的嵌入式 PCM 扩展,用于提高低频段基础层的质量,以及加权矢量量化编码基于修正离散余弦变换(MDCT) 的较高频带。 2010 年计划对 G.711.1 进行两项扩展:超宽带扩展(带宽至 14000 Hz)和无损比特流压缩。 ​

许可

1972 年发布的 G.711 专利已过期,因此无需许可证即可使用。

你可能感兴趣的:(音视频,音视频)