缩写解释

SID Silence Descriptor (Comfort Noise Frame)

1 AMR编码介绍

AMR编码是一种自适应多速率编码,根据传输信道的实际情况,调整编码模式、速率和纠错码位数来保证语音质量,在数据压缩和容错上面取得平衡。一般语音质量越高抗干扰能力越弱。在GSM网络,基站、基站控制器可根据网络质量和信号质量情况动态调整语音编码模式以提高不同网络状况下的语音质量。现在手机终端基本上都支持AMR编码,Nokia从2004年开始提供支持AMR的终端,目前所有的新型号终端都支持AMR。

AMR算法

参考文档

(1) 3GPP TS26.190, AMR Wideband speech codec; Transcoding functions(Release 5).
(2) 3GPP TS 26.194, Voice Activity Detection (VAD).
(3) 3GPP TS 26.174, AMR wideband speech codec; Test sequences.
(4) 3GPP TS 26.194, Frame Structure.

2 AMR在IP域中的净荷格式

RFC3267/4867协议描述AMR编码在RTP中的载荷格式,是其在IP域的存在形式。

对于每个RTP会话,AMR净荷有两种模式,分别为节省带宽模式和字节对齐模式,具体采用那种模式,由信令协商决定;采用后一模式可以后可以引入鲁棒排序、帧交叉编码和CRC校验等方式提高语音传输的质量。

以下三种场景分别为1IP域的终端进行会话、2非IP域终端通过网关和3IP域终端会话以及非IP域终端之间的通信场景,各个场景的特点见协议描述。

AMR和AMR-WB净荷格式

二者格式区别,a.帧类型;b.前者的采样频率为8KHZ,后者为16KH;c.模式不一样

净荷结构如下,包括净荷头,内容表和语音数据:

+----------------+-------------------+----------------

| payload header | table of contents | speech data ...

+----------------+-------------------+----------------

Payloads containing more than one speech frame-block are called

compound payloads.

节省带宽模式Bandwidth-Efficient Mode

a. 净荷头格式:

0 1 2 3

+-+-+-+-+

|  CMR  |

+-+-+-+-+

CMR(codec mode request)编码模式请求,由发送者向接受者的请求发送者编码器将来的编码速率模式,保存帧类型索引,如果是AMR,取值范围为0-7,表示8种速率模式,如果为AMR-WB,取值范围为0-8,表示9种速率。取值15意味着当前是没有指定哪个模式的请求。

模式选定后,由于采样频率恒定,具体包的打包时长还是不变,不同速率只是净荷长度不一样,例如对于AMR模式0,其速率是4.75Kbit/s,净荷中包含的语音数据为95bits。

AMR的8种速率索引表,见[1]

AMR-WB的9种速率索引表,见[2]

b. 净荷内容表ToC(table of contents),第一项表示一个语音帧

0 1 2 3 4 5

+-+-+-+-+-+-+

|F|  FT   |Q|

+-+-+-+-+-+-+

F:用于标志是否最后一个帧,0表示最后1帧.如果是多帧复用才有Toc才会有多项,否则只有1项。

FT:标志对音帧语音编码模式或舒适噪志的模式,取值范围同CMR取值,FT=14 (SPEECH_LOST, only available for AMR-WB) and FT=15 (NO_DATA),FT=15表示没有当前帧没有净荷;取值10-13该帧要丢弃。

Q:指示帧质量,为0表示对应帧被破坏,1表示未被破坏;如果该帧已被破坏,那么可以通过直接丢弃该帧来处理。

净荷内容表就是对帧内容的数据格式说明,

c. 语音数据speech data

语音数据即为真正的语音帧或舒适噪声帧的数据,每帧数据的描述和ToC每一项对应起来,数据长度取决于对应模式ToC项中的FT标识的模式。

示例:

单通道单帧

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| CMR=15|0| FT=4  |1|d(0)                                       |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                     d(147)|P|P|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |

单通道多帧

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| CMR=1 |1| FT=0  |1|1| FT=9  |1|1| FT=15 |1|0| FT=1  |1|d(0)   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                         d(131)|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|g(0)                                                           |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|          g(39)|h(0)                                           |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                           h(176)|P|P|P|P|P|P|P|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

多通道多帧,见协议

字节对齐模式Octet-aligned Mode

a. 净荷头格式

0                   1

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

+-+-+-+-+-+-+-+-+- - - - - - - -

|  CMR  |R|R|R|R|  ILL  |  ILP  |

+-+-+-+-+-+-+-+-+- - - - - - - -

CMR:同上;

R:保留位,区分节省带宽模式,这些保留位作用之一就是字节对齐;

ILL:可选,指示交错长度(取值为L,交错长度即为L+1);

ILP:可选,交错块的索引,取值范围为0到ILL,超过这个范围,该帧块应被丢弃。

b. ToC

+---------------------+

| list of ToC entries |

+---------------------+

| list of frame CRCs  | (optional)

- - - - - - - - - - -

Note, for ToC entries with FT=14 or 15, there will be no

corresponding speech frame or frame CRC present in the payload.

组成同节省带宽模式

ToC项:在该模式下,6位ToC也需要2位补齐。

CRC:CRC校验位可选,如果带外信令协商需要校验,则每项对应每个语音数据进行8位长度的校验。

语音数据

同节省带宽模式,只是要求每帧必须补0对齐;对于多帧的净荷,可以和节省模式一样,一帧顺序排,也可以所有帧以字节为单位交错排序,尽量把各个帧错误敏感位排前面。

示例:

单通道多帧

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| CMR=6 |R|R|R|R|1|FT#1=5 |Q|P|P|0|FT#2=5 |Q|P|P|   f1(0..7)    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|   f1(8..15)   |  f1(16..23)   |  ....                         |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

: ...                                                           :

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                         ...   |f1(152..158) |P|   f2(0..7)    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|   f2(8..15)   |  f2(16..23)   |  ....                         |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

: ...                                                           :

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                         ...   |f2(152..158) |P|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

多通道

3 AMR语音帧结构

AMR和AMR-WB的语音数据结构分别详见TS 26.101,26.201描述,这里介绍AMR-NB的语音数据编码结构。

语音数据位根据重要性分成类,A、B、C类,其对错误的敏感性和重要性依次为A>B>C,如下,4.75Kb模式的总的位数为95位,A类42位,B类53位。

AMR净荷数据把重要的数据位放在前面,不重要的放在后面,为了把语音数据中重要的数据位放置A类,需要对编码器编出的比特位进行重排序,26.101把编码后数据位的位置和重排序的位置对应起来形成一张表供查询,

- for j = 0 to K-1       //第0位到第K-1位全部重排

- d(j) := s(tablem(j)+1);  //查对应模式的表找到重排后相应位置

例如下表6.7kb模式的排序表,共134位,第82位数据位排序后对应18

上节节省带宽模式和字节对齐模式,d(i)均是排序后的数据。

下图示例相比上一节还加了8位CRC校验码。

4 AMR NB/WB信令协商参数

AMR常用如下

octet-align,是节省带宽模式还是字节对节模式,一般取值为1表示字节对齐,为0或不带默认表示为节省带宽模式;

mode-set,一旦请求带了模式集,之后AMR媒体流只选择属于这个模式集的模式来发送;

mode-change-period,模式改变周期;

maxptime,最大支持的打包时长(ms);

crc,净荷是否进行CRC校验,一般为1表示需要,媒体流会携带校验位;

robust-sorting,是否进行鲁棒排序;

interleaving,定义交错帧块数;

ptime,指包时长;

channels,音频通道数,例如采用左右通道数值则为2;

AMR-WB常用参数同上

4 多帧复用

为了降低带宽,减少网络传输的RTP包数,把多帧的数据打包在1个RTP包里面进行传输。净荷里面用ToC表来管理多帧数据,说明模式等内容,这样也可根据网络状况灵活改变多帧的速率,例如,多帧中每个帧的速率不一定要一样。

采用多帧复用要注意关注RTP包的大小、时戳是否正确。


参考

[1] 3GPP TS 26.101

[2] 3GPP TS 26.201

[3] rfc3267,rfc4867

AMR在IP域中的编码(rfc3267,4867)相关推荐

  1. AMR在IP域中的编码

    AMR在IP域中的编码(rfc3267,4867) 2011-03-06 18:36 1000人阅读 评论(0) 收藏 举报 目录(?)[+] AMR编码介绍 AMR在IP域中的净荷格式 AMR语音帧 ...

  2. 在tcp/ip协议中以BigEndian方式的编码与解码

    2019独角兽企业重金招聘Python工程师标准>>> package com.tcpip;/*** 在tcp/ip协议中以BigEndian方式的编码与解码* @author ** ...

  3. 活动目录实战之一 windows 2008 r2 安装域中第一台域控制器

    windows 2008R2已经出来很长时间了,想写一下关于活动目录的一些知识.例如:我们应该如何安装域内第一台域控制器呢,找了很多文章,觉得胖哥这篇文章写的非常好,图文并茂,并且把原理讲的也非常清楚 ...

  4. TCP/IP协议中的一些常用端口简单讲解

    (源自http://bbs.360.cn/3232114/17010996.html) 那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门.真正的房子只有 ...

  5. 计算机用户域怎么删除,如何查找并删除AD域中多余的计算机帐号?

    如何将过期的计算机从computers容器中自动清除?因为有很多时候没有按正常的方法退域,导致在AD的computers容器中存在很多过时的计算机,有没有办法让它自动清除呢 对我们广大网络管理员来说, ...

  6. HTTP1.1中CHUNKED编码解析(转载)

    HTTP1.1中CHUNKED编码解析 一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RF ...

  7. 在两个不同域中的WINDOWS 2003活动目录做迁移笔记

     在两个不同域中的WINDOWS 2003活动目录做迁移笔记 (by godoha_2008/8/23  [url]http://godoha.blog.51cto.com[/url])看不见图的,详 ...

  8. NIS认证管理域中的用户

    Nis,就是Linux域,用来管理整个域中的用户的帐号.密码和权限. 下面,来看看怎样实现: 服务器 指明我们的域 [root@163 ~]# vim /etc/sysconfig/network N ...

  9. PLMN中的USSD与IMS域中的USSD

          最近发现国外运营商开始关注USSD over IMS的实现.国外很多运营商往往很关注技术,在标书中技术细节体现很多.但USSD over IMS却往往未体现实现方案,只是要求支持USSD业 ...

  10. 计算机加入域用户名,将客户端计算机加入到域中

    在域控制器建立完毕后,即可将客户端计算机加入到域中,步骤如下. 右键单击桌面上"网上邻居"图标,在弹出的快捷菜单中选择"属性",打开"网络连接&quo ...

最新文章

  1. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
  2. 工作10年从大公司离职去小公司当CTO,被同事鄙视竟然不回netty
  3. 《精通并发与Netty》学习笔记(13 - 解决TCP粘包拆包(一)概念及实例演示)
  4. nginx反代理服务器
  5. 云+X案例展 | 民生类:纷享销客助力沃得农机构筑智能化、信息化之路
  6. 自己常用的PHP方法
  7. 大开眼界百度云盘2018_文化差异的大开眼界
  8. java 注解入门 简书_Java注解入门
  9. SAP License:初学者使用SAP常见问题
  10. VS下Qt4.8.4安装
  11. 同一页面中加载两个相同的控件,结果只能出来一个,这是为什么
  12. 4.串口操作之API篇 CreateFile
  13. 使用计算机组成原理全加器设计,杭电计算机组成原理全加器设计实验1
  14. 入侵大型网站的完整思路
  15. 计算机系微电子专业大学排名,2021年微电子科学与工程专业大学排名
  16. 【毕业设计】基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 c51
  17. 企业引入自动化以打造完善的客户体验
  18. 亿道信息丨12.2英寸加固平板丨三防平板丨工业平板丨货物追踪好助手
  19. 【安全乐观主义点评】IAST 在去哪儿 Q-SDL 体系中的应用
  20. python ctypes总结

热门文章

  1. java中计算两日期相减方法
  2. FOREACH的遍历
  3. docker的安装--基于docker1.6
  4. 正则表达式,时间戳和日期互相转换
  5. 印度SaaS创企Whatfix获370万美元A轮融资
  6. Maven 用Eclipse创建web项目后报错的解决方式
  7. Handler+MessageQueue等操作
  8. EF 4.3 Code-Based Migrations
  9. Java线程池在业务中的实践
  10. C语言里面邻接表的创建