zoukankan      html  css  js  c++  java
  • AMR音频编码器概述及文件格式分析

    全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。
    一、分类
    1. AMR: 又称为AMR-NB,相对于下面的WB而言,
    语音带宽范围:300-3400Hz,
    8KHz抽样
    2. AMR-WB:AMR WideBand,
    语音带宽范围: 50-7000Hz
    16KHz 抽样
    “AMR-WB”全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,采样频率为16kHz,是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称 为G722.2标准。AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自然、舒适和易于分辨。
    与之作比较,现在GSM用的EFR(Enhenced Full Rate,增强型全速率编码)采样频率为8kHz,语音带宽为200~3400Hz。
    AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。在这种应用中,AMR-WB抗扰 度优于AMR-NB。
    AMR-WB应用于EDGE、3G可充分体现其优势。足够的传输带宽保证AMR-WB可采用从6.6kb/s到23.85kb/s共九种编码,语音质量超越PSTN固定电话。
     
    二、编码方式
    1. AMR-NB:
    AMR 一共有16种编码方式, 0-7对应8种不同的编码方式, 8-15 用于噪音或者保留用。
    Frame Type
    Mode Indication
    Mode Request
    Frame content (AMR mode, comfort noise, or other)
    0
    0
    0
    AMR 4,75 kbit/s
    1
    1
    1
    AMR 5,15 kbit/s
    2
    2
    2
    AMR 5,90 kbit/s
    3
    3
    3
    AMR 6,70 kbit/s (PDC-EFR)
    4
    4
    4
    AMR 7,40 kbit/s (TDMA-EFR)
    5
    5
    5
    AMR 7,95 kbit/s
    6
    6
    6
    AMR 10,2 kbit/s
    7
    7
    7
    AMR 12,2 kbit/s (GSM-EFR)
    8
    -
    -
    AMR SID
    9
    -
    -
    GSM-EFR SID
    10
    -
    -
    TDMA-EFR SID
    11
    -
    -
    PDC-EFR SID
    12-14
    -
    -
    For future use
    15
    -
    -
    No Data (No transmission/No reception)
     
    2. AMR-WB:
    Frame Type Index
    Mode Indication
    Mode Request
    Frame content (AMR-WB mode, comfort noise, or other)
    0
    0
    0
    AMR-WB 6.60 kbit/s
    1
    1
    1
    AMR-WB 8.85 kbit/s
    2
    2
    2
    AMR-WB 12.65 kbit/s
    3
    3
    3
    AMR-WB 14.25 kbit/s
    4
    4
    4
    AMR-WB 15.85 kbit/s
    5
    5
    5
    AMR-WB 18.25 kbit/s
    6
    6
    6
    AMR-WB 19.85 kbit/s
    7
    7
    7
    AMR-WB 23.05 kbit/s
    8
    8
    8
    AMR-WB 23.85 kbit/s
    9
    -
    -
    AMR-WB SID (Comfort Noise Frame)
    10-13
    -
    -
    For future use
    14
    -
    -
    speech lost
    15
    -
    -
    No Data (No transmission/No reception)
     
    -
    -
     
     
    二、AMR 帧格式:
    AMR 有两种类型的帧格式:AMR IF1 和 AMR IF2
    1. AMR IF1:
     IF1 的帧格式如下图所示:
    FrameType, Mode Indication, Mode Request 对应上面两个表格里的数。从上面的表格里我们可以看出,这三个域的值是相同的。所以在IF2中省略了Mode Indication, Mode Request 两个域。
    Frame Quality Indicator: 0表示bad frame 或者corrupted frame; 1表示 good frame
    每一帧的数据有分为三个部分:Class A/B/C
    Class A:一帧中最敏感、最重要的数据。一旦这一部份数据有损坏,整个帧就无法解码,就损坏了。所以,一般在无线传输的时候要使用各种冗余的方式对这部分数据加以保护。
    Class B:相对于Class A不那么重要的数据。
    Class C:比Class B还不重要的数据。
     
    2. AMR IF2:
     IF2的帧格式如下图所示:
    相对于IF1, IF2 省去了Frame Quality Indicator, Mode Indication, Mode Request 和CRC 校验。但是增加了bit 填充。因为AMR帧中数据的长度并不是字节(8bit)的整数倍,所以在有些帧的末尾需要增加bit填充,以使整个帧的长度达到字节的整数倍。
    有关IF2帧中各个域的信息请参考下面的帧大小节的表格。
     
    三、帧大小
    1. AMR-NB
    Frame Type Index
    Frame content
    Number of bits in Frame Type
    Number of Bits in AMR Core Frame

    Number of Bits in
    Bit Stuffing

    Number of octets (N)
    0
    AMR 4,75 
    4
    95
    5
    13
    1
    AMR 5,15
    4
    103
    5
    14
    2
    AMR 5,90
    4
    118
    6
    16
    3
    AMR 6,70
    4
    134
    6
    18
    4
    AMR 7,40
    4
    148
    0
    19
    5
    AMR 7,95
    4
    159
    5
    21
    6
    AMR 10,2
    4
    204
    0
    26
    7
    AMR 12,2
    4
    244
    0
    31
    8
    AMR SID
    4
    39
    5
    6
    9
    GSM-EFR SID
    4
    43
    1
    6
    10
    TDMA-EFR SID
    4
    38
    6
    6
    11
    PDC-EFR SID
    4
    37
    7
    6
    12-14
    For future use
    -
    -
    -
    -
    15
    No Data
    4
    0
    4
    1
    Number of bits in Classes A, B, and C for each AMR codec mode
    Frame Type

    AMR
    codec mode

    Total number of bits
    Class A
    Class B
    Class C
    0
    4,75
    95
    42
    53
    0
    1
    5,15
    103
    49
    54
    0
    2
    5,90
    118
    55
    63
    0
    3
    6,70
    134
    58
    76
    0
    4
    7,40
    148
    61
    87
    0
    5
    7,95
    159
    75
    84
    0
    6
    10,2
    204
    65
    99
    40
    7
    12,2
    244
    81
    103
    60
    2. AMR-WB:
    Composition of AMR-WB IF2 Frames for all Frame Types
    Frame Type Index
    Frame content
    Number of bits in Frame Type
    Number of bits in Frame Quality Indicator
    Number of Bits in AMR-WB Core Frame
    Number of Bits in Bit Stuffing
    Number of octets (N)
    0
    AMR-WB 6.60 kbit/s
    4
    1
    132
    7
    18
    1
    AMR-WB 8.85 kbit/s
    4
    1
    177
    2
    23
    2
    AMR-WB 12.65 kbit/s
    4
    1
    253
    6
    33
    3
    AMR-WB 14.25 kbit/s
    4
    1
    285
    6
    37
    4
    AMR-WB 15.85 kbit/s
    4
    1
    317
    6
    41
    5
    AMR-WB 18.25 kbit/s
    4
    1
    365
    6
    47
    6
    AMR-WB 19.85 kbit/s
    4
    1
    397
    6
    51
    7
    AMR-WB 23.05 kbit/s
    4
    1
    461
    6
    59
    8
    AMR-WB 23.85 kbit/s
    4
    1
    477
    6
    61
    9
    AMR-WB SID (Comfort Noise Frame)
    4
    1
    40
    3
    6
    10-13
    For future use
    -
    -
    -
    -
    -
    14
    speech lost
    4
    1
    0
    3
    1
    15
    No Data (No transmission/No reception)
    4
    1
    0
    3
    1
     
    Frame Type

    AMR-WB
    codec mode

    Total number of bits
    Class A
    Class B
    Class C
    0
    6.60
    132
    54
    78
    0
    1
    8.85
    177
    64
    113
    0
    2
    12.65
    253
    72
    181
    0
    3
    14.25
    285
    72
    213
    0
    4
    15.85
    317
    72
    245
    0
    5
    18.25
    365
    72
    293
    0
    6
    19.85
    397
    72
    325
    0
    7
    23.05
    461
    72
    389
    0
    8
    23.85
    477
    72
    405
    0



    四、PCM16和AMR之间的转换
    Amr
    一帧为20毫秒
    以AMR 4.75Kbits/s为例 :

    每秒产生的声音位数 = 4750bits/s
    每20ms帧占用的位数 = 4750bits/s / 50frames/s = 95bits
    每20ms帧占用的字节数 = 95bits / 8bits/byte = 11.875bytes - 圆整到12字节,不足的补 0
    加上一个字节的帧头,所以,20ms一帧的 AMR: 12-bytes + 1-byte = 13-bytes

    相反,转换回来就成了
    13-bytes * 50frames/s * 8bits/byte = 5200bits/s

    注意,这里两个数值并不对应,是由于圆整的原因
     
    五、 AMR 文件的存储格式(RFC 3267):
    AMR IF1, IF2定义了 AMR的帧格式, 用于无线传输用。 RFC 3267定义了把AMR数据存成文件的文件格式。
    AMR的文件格式如下图1所示:
    它包含一个文件头,然后就是一帧一帧的AMR数据了。
     
    <!--[if !supportLists]-->1.        <!--[endif]-->文件头格式:
     AMR 文件支持单声道和多声道。单声道和多声道的文件头是不同的。
     单声道:
     AMR-NB文件头: "#!AMR " (or 0x2321414d520a in hexadecimal)(引号内的部分)
     AMR-WB 文件头:"#!AMR-WB " (or 0x2321414d522d57420a in hexadecimal).(引号内)
    多声道:
    多声道的文件头包含一个magic number和32bit channle description域。
    AMR-NB 的magic number:"#!AMR_MC1.0 "
    (or 0x2321414d525F4D43312E300a in hexadecimal).
    AMR-WB的magic number:"#!AMR-WB_MC1.0 "
                             (or 0x2321414d522d57425F4D43312E300a in hexadecimal).
    32bit的channel description域的定义如下:
    其中 reserved bits必须为0, CHAN:表示当前文件中含有几个声道。
     
    帧头的格式:
    帧头的格式如图2 所示, 它占1个字节(8个bit)
    P为填充为设置为0

    FT为编码模式, 即上面提到的16中编码模式。
    Q
    为帧质量指示器,如果为0表明帧被损坏。

     
    图3 列举了AMR-NB 5.9Kbit的一个帧的格式,
    对于5.9kbit一帧的有118bit的数据,15*8=120=118+2, 所以在最后有2个bit的填充位。
     


  • 相关阅读:
    laravel使用redis报错
    PHP新特性W3Cschool
    【python】跳过验证直接登陆-cookie已经知道需要部分直接注入
    【python】显示等待
    【python】pymysql库的简单使用
    【python】UI自动化优化浏览器重复打开和跑脚本时电脑无法做其他工作的问题
    【python】seleniumwire和selenium的区别
    【python】UI自动化-新版
    【python】UI自动化获取输入框的值
    【python】UI自动化多窗口处理
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3192191.html
Copyright © 2011-2022 走看看