精华内容
下载资源
问答
  • 联合信源信道编码在超宽带信道中的应用,杨晏鸷,蒋挺,本文将联合信源信道编码应用于超宽带(UWB)信道中,信源编码采用基于层次树的集分割算法(SPIHT)嵌入式码流编码,信道编码采用码率兼容
  • 为提高异构网络视频传输质量,提出一种基于晶格量化的异构网络视频联合信源信道编码方法。首先,利用多描述联合信源信道编码的信号源并行信道传输方案,建立高斯视频源传输的多描述独立的并行信道传输框架;其次,...
  • 针对JPEG2000码流的渐进传输特性,提出了一种多参数优化的联合信源信道编码方法,即MPO-JSCC。在码率分配的基础上,动态地选择Turbo码交织长度、迭代译码次数,通过优化编码器多个参数更好地执行不等差错保护策略,...
  • LDPC码在联合信源信道编码中的应用.......................
  • 1、不经过信道编码与译码,图像经过BSC信道传输后的误码率,此处的编码方法为霍夫曼编码。MATLAB仿真程序如下: clear all clc I0=imread('Penguinshead3.jpg'); I1=rgb2gray(I0); subplot(1,3,1),imshow(I0),...

    以一幅灰度图像为例对通信系统的通信过程进行仿真,过程如下图所示:
    图1 通信过程
    1、不经过信道编码与译码,图像经过BSC信道传输后的误码率,此处的编码方法为霍夫曼编码。MATLAB仿真程序如下:

    clear all
    clc
    I0=imread('Penguinshead3.jpg');
    I1=rgb2gray(I0);
    subplot(1,3,1),imshow(I0),title('原图')
    subplot(1,3,2),imshow(I1),title('灰度图')
    [m,n]=size(I1);
    I=reshape(I1,m*n,1);
    P_value=zeros(1,256);
    %---------------------------------------概率;
     for i=0:255
         P_value(i+1)=length(find(I==i))/(m*n);  %各像素值概率
     end
    f=numel(I);                                      %频数
    P_symbol=zeros(m*n,1);
    for i=1:m
        for j=1:n
            P_symbol(i,j)=length(find(I==unique(i)))/f;%各信源符号概率矩阵
        end
    end 
    %--------------------------------霍夫曼编码
    k=0:255;
    dict=huffmandict(k,P_value);           %生成编码字典
    huffmancode=cell(length(I),2);         %元胞数组存放对应编码
    for i=1:m*n
        huffmancode{i,1}=I(i);
    end
    for i=1:length(I)
        for j=1:256
            if huffmancode{i,1}==dict{j,1}
                huffmancode{i,2}=dict{j,2};
            end
        end
    end
    %----------------------------通过BSC信道
    bsc_code=huffmancode;        %通过bsc信道后的编码
    for i=1:length(I)
        bsc_code{i,2}=bsc(huffmancode{i,2},0.001);
    end
    % --------------------------------译码
    bsccode=bsc_code{1,2};
    for i=2:length(I)
        bsccode0=bsc_code{i,2};
        L=length(bsccode0);
        bsccode(end+1:end+L)=bsccode0;       %转换为一串字符
    end
    deco=huffmandeco(bsccode',dict);         %译码
    %----------------------------------------译码后存在错误
    rdeco=zeros(length(I),1);                      %错误处理
    L=length(I)-length(deco);
    if L<=0
        rdeco=deco(1:end-abs(L));                  %截断
    else
        a=ones(abs(L),1);                          %补足   
        rdeco(1:length(deco))=deco;
        rdeco(length(deco)+1:end)=195*a;  
    end
    Ideco=reshape(rdeco,m,n);
    subplot(1,3,3),imshow(uint8(Ideco));title('经BSC信道传输后的图像');
    error=length(find(Ideco~=I1));
    fprintf('误码率:%.4f\n',error/length(I));
    

    传输结果如下图所示:
    图2 无信道译码与编码
    上图表示的是仅经信源编码与译码,新宿的得到的结果。可以看到图像存在失真,此时的误码率为:
    在这里插入图片描述
    2、经过信道译码,此处的信道编码采用汉明码。MATLAB仿真程序如下:

    clear all
    clc
    I0=imread('Penguinshead3.jpg');
    subplot(1,3,1),imshow(I0),title('原图')
    I1=rgb2gray(I0);
    subplot(1,3,2);imshow(I1);title('信源发出的消息');
    [m,n]=size(I1);
    I=I1(:);
    P=zeros(1,256);
    %---------------------------------------概率;
    for i=0:255
        P(i+1)=length(find(I==i))/(m*n);
    end
    %---------------------------------------编码译码
    k=0:255;
    dict=huffmandict(k,P);                    %生成霍夫曼码字典
    enco=huffmanenco(I,dict);                 %霍夫曼码信源编码
    code=encode(enco,15,11);                  %汉明码信道编码
    bsc_code=bsc(code,0.001);                 %通过BSC信道
    rcvcode=decode(bsc_code,15,11);           %汉明码信道译码
    deco=huffmandeco(enco,dict);              %霍夫曼码信源译码
    Ireco=reshape(deco,m,n);
    subplot(1,3,3);imshow(uint8(Ireco));title('信宿接收的消息');
    error=length(find(Ireco~=I1));            %误码数
    fprintf('误码率:%0.4f\n',error/length(I));
    

    经信道传输后的图像如下图所示:
    图3 经过信源信道编码与译码
    此时图像无失真,误码率为:
    在这里插入图片描述
    可以明显看到第二种方式的误码率远远小于第一种方式的误码率,由此可看出在通信过程中进行信道编码与译码的重要性。
    而方式1的误码率高的原因有以下三点:
    (1)传输图像较小,像素值少。图像越小,编码表的码字越少,经信道传输后,越容易出现非编码表码字。(2)对于编码表码字处理的译码译码方式简单,对于译码后的编码像素值采用舍弃译码后末尾的像素值与补足像素值(由于使用的图像右下角的像素值在195左右,因此对与译码后长度不足的像素值序列,补充像素值为195的像素)的方式存在较大的误差。(3)未经过信道编码与译码。
    必须说明的是由于上述第(2)点原因,在BSC信道的转移概率比较大的时候(p>0.1)时,方式1能够运行通过的概率很低,当信道的转移概率很小时,该方式的误码率也会比较小。

    展开全文
  • 联合信源信道编码基本框架 腾讯天籁联合信源信道编码的基本框架进行介绍: 系统可以分解为发送端、网络侧、接收端。 发送端将新方案的码流发往上行媒体代理。其中,cFEC提供了信源侧抗性,带外和流控,根据实际的...

    前言

    2020年疫情的突如其来,让数字通信成为了人与人沟通的重要手段;同时也对实时音视频通信(RTC)的稳定性和通讯效果提供了极大考验。由于业务量激增,在保障用户体验方面,RTC业务面临着诸多困难,包括但不限于通话质量、最小化卡顿、端到端延时、带宽成本等。在网络传输过程中,RTC方案,需要面对用户体验、运营成本的双重约束,挑战巨大。本白皮书,将聚焦RTC业务中网络抗性下的体验保障这一命题展开讨论。本文首先对相关技术的特点进行描述。然后,本文重点介绍腾讯天籁推出的音频联合信源信道编码方案。该方案已经在腾讯会议、TRTC等产品推广和部署;在保障用户体验同时,显著降低带宽和延时。

    1.背景介绍     

    图1. 端到端视角下音频通话体验的影响因素

    VoIP是一个复杂的链式系统,以单侧的发送端到接收端通信为例,要经过采集、前处理、编码、传输、解码、增强、回放等多个阶段。每个阶段都会影响最终体验。从端到端到角度,影响通话体验的因素,可以分成信源和信道(链路)两个部分。信源部分,主要干扰因素是声学侧的噪声、回声等物理特征;一般地,通过优化音频信号处理方案(包括结合深度学习技术等)进行质量保证。如果说,信源决定最终体验的上界,信道则决定了体验“打折”后的上界。

    图2. 语音丢包

    RTC业务中,一个重要的挑战就是传输过程中出现丢包;丢包导致接收端解码声音不连续或卡顿,影响体验(图2)。因此,网络抗性提升是RTC业务绕不开的话题。然而,任何一种抗性提升手段,避免不了增加带宽冗余、CPU消耗等。同时,任何一种单一手段,并不能很完美解决上述问题。因此,打造一个好的RTC通话体验,需要联合信源和信道,自顶向下地设计系统。本文将重点讨论如何提升RTC系统中的网络抗性。

    2.相关技术概述

    1)WebRTC        

    图3. WebRTC引擎

    RTC主流商用方案,始于开源。目前的开源体系中,WebRTC使用得最为广泛[1]。WebRTC实现了基于网页的RTC视频会议能力,核心技术包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:Windows,Linux,Mac,Android。相对全面的平台能力,使得RTC公司优选其作为开发平台,搭建自主品牌的SDK。

    因此,相当一部分RTC厂商采用的策略,是完全基于WebRTC,不做底层的改动;针对应用场景,发力于易用性等方面的改进。

    然而,在疫情这一特殊背景下,用户对实时音视频通信的稳定性和通讯效果提出了更高要求。简单地基于开源平台改动,并不能从根本上,将通话体验提升一个档次。因此,具备更多核心能力、底层技术的方案,将在市场上更具竞争力。

    2)嵌入式编码技术(分层编码)

    嵌入式编码,也叫分层编码,通过对信源中不同成份,进行分层处理,以适应网络抗性方面的要求(图4)。原理可以概述为:

    • 通过带通滤波器,将输入的语音信号分离成窄带和宽带部分。

    • 对窄带部分使用更多码率进行压缩,减少失真。如果还有带宽资源,会先花少量码率对高频进行高效率的参数编码,恢复出质量可接受的高频。进一步,如果还有更多带宽资源,对高频做更为精细编码,恢复出高质量的高频。

    • 上述编码的码流,将使用不同优先级传输保障策略,发给接收端。特别地,网络非常差情况下,只发送窄带部分的码流。

    • 如果接收端至少收到低频部分,可恢复出窄带语音,基础质量可以保障。根据收到不同编码精度的高频,输出不同质量水平的宽带语音。

    图4. 嵌入式编码基本架构

    嵌入式编码,在视频编码系统中被普遍采纳;语音编领域,在2000-2010年这个区间,流行过一段时间,比如ITU-T G729.1和G.718 ,以及相关标准的超宽带演进版本[2, 3]。

    然而,嵌入式编码,对于语音业务,存在效率不高的问题。究其原因,语音业务的基础码率偏低,比如20kbps;如果引入嵌入式编码,为了2kbps的分层编码,系统需要做复杂的分层逻辑,在QoE综合质量上不见得是最优策略。因此,2010年之后的主流标准,如IETF OPUS[4],并没有采用嵌入式编码。一般地,即使未采用嵌入编码,相关的编码标准也会采纳多速率编码技术,即支持多种编码码率,用户根据业务特点进行合理配置。

    3)多描述编码技术(MDC)

    多描述编码(MDC)是一种码流分离技术,具体说,就是将一段音频信号,分离成不同子部分(称之为“描述”);每个部分分别组包,并使用不同的传输路径进行传输。接收端如果收到部分的描述,可以恢复出低质量的音频;如果收到全部描述,可以恢复出高质量的音频[5]。

    一个最简单的MDC实施方式是,对一段音频信号进行奇偶抽样;奇数抽样和偶数抽样分别组包传输;接收端即使只收到奇数或者偶数抽样相关的数据包,通过解码和插值,即可恢复出低质量的音频。更为复杂的MDC,包括对奇偶帧进行反复残差分析,确定失真最小的组合变量进行编码和传输。一般地,MDC编码器包含了多个描述的编码器和描述残差关系的编码器,编码器复杂度很高。

    MDC的设计理念,假设了网络状态一定不好。MDC的代价,是牺牲(同等码率)天花板质量。一般地,在理想信道下,需要额外消耗20-30%带宽完成MDC。因此,MDC并不会降低带宽的使用量;并且,MDC主要用于窄带部分,宽带部分还是结合了结合了嵌入式编码、频带扩展等技术,提升带宽利用率;否则,带宽使用量会增加。

    4)RED机制

    RED机制,即IETF RTP Payload for Redundant Audio Data[6]。这个机制提出,跟上文提到的音频码率偏低有关。比如说,每20ms语音帧进行打包操作,包头假设是10kbps、有效载荷是20kbps;这样一种分配,码率浪费严重。因此,RED的建议是,将相邻两个20ms的有效载荷合并成一个数据包。这样,一个数据包中有效载荷比例可达80%。OPUS就沿用了RED机制,甚至将相邻60ms数据合并成一个数据包,共享一个包头。然而,RED机制并没有任何包内抗性;如果没有其它抗性保障,一旦包丢失,影响连续40-60ms数据。

    5)带外FEC       

    图5. 带外FEC示意图

    带外FEC,即在包层进行数据冗余操作的技术[7]。举个例子:如果分组是4,那么在网络传输过程中任意丢掉一个,在接收端任意收到任何顺序的4个属于本分组的数据包,那就可以把丢失的包恢复。具体包括,发送端:将数据包按照参数下发,对数据包进行分组(block),对分组数据加冗余。接收端:收齐分组后即可恢复数据(丢失不超过冗余包数),因为要等分组到齐,存在FEC恢复算法上的延时, FecDelay = Block * 帧长。

    6)ARQ重传

    所谓ARQ重传,即包确定丢失且无法恢复时,通过请求重传,以增加延时的方式,提升网络抗性[8]。音频快速重传ARQ是“选择重传”算法作为基本的请求策略,算法的关键特色在于重传请求与Jitter Buffer的紧密配合上。几个基本准则包括:

    • 请求重传模块记录并缓存所有重传数据包的重传成功所消耗的时间,并将重传延时ArqDelay告知JitterBuffer模块,提高了数据的缓冲等待时长的高可控性。

    • 接收端通过ARQ请求,在数据缓冲队列的数据帧被播放之前,当还未重传成功的数据帧在已经达到播放时间时,接收端通过ACK通知取消请求重传,减少无用请求。

    3.联合信源信道编码架构

    1)方案的设计理念

    如前文所述,针对网络抗性问题,主流的RTC解决方案还是围绕信道侧方法进行;特别地,通过加网络冗余,维护一个高的抗性水平。然而,如果完全依赖信道侧方法,实际应用中又面临其它问题:

    • 如果网络抗性完全来自于带外,带宽成本激增。

    • 重传等操作,带来了包的组合、解析等迭代操作,增加时延。

    因此,腾讯天籁的解决方案优先从信源入手,优化带内FEC。所谓带内FEC,最直观的解释就是在第T个包中除了包头和第T帧以外,还包含第T-1帧的信息。事实上,OPUS已经支持上述带内FEC的功能。经过测算,OPUS带内FEC帧的有效载荷约为普通帧的70-80%;然而,只能提供20%丢包率的抗性;投入产出比偏低。

    综合上述考虑,腾讯天籁提出下列的联合信源信道编码策略:

    • 首先,提升信源侧方法的能力上界。相对于标准带内FEC,新的信源侧FEC,需要更强的单独抗性;比如,支持40%丢包率。

    • 其二,灵活调用带外和带内抗性。以期在抗性稳定性和带宽消耗上有一个更为灵活的折衷。相关的控制参数,依赖于测试平台提供的经验数据,进行迭代升级。

    • 第三,前向兼容性问题,要保证新旧两种协议无互通问题。

    2)方案框架         

    图6. 联合信源信道编码基本框架

    腾讯天籁联合信源信道编码的基本框架进行介绍:

    • 系统可以分解为发送端、网络侧、接收端。

    • 发送端将新方案的码流发往上行媒体代理。其中,cFEC提供了信源侧抗性,带外和流控,根据实际的网络状态,下发具体配置,确保最小带宽和延时成本下的QoE保障。

    • 上行媒体代理处,将新方案对应的协议,转换成标准协议。

    • 下行媒体代理处,将标准协议转换成新方案的协议,并发给接收端。

    • 接收端接收新方案的协议,具备了联合信源信道的能力;以更少的带宽和延时,获得稳定可靠的网络抗性能力。此外,接收端也集成cPLC丢包补偿模块处理突发丢包状态。实时策略,由带外和流控模块控制。在网络有损的情况下,带外FEC或者ARQ重传,最大程度保障数据包可以完整发送到接收端。如果仍然有丢包发生,首先基于cFEC的带内抗性进行质量保障;如果有更多连续数据包丢失,则启动cPLC进行丢包补偿。

    3)核心模块

    a.信源侧FEC(cFEC)

    腾讯天籁的cFEC方案,充分借鉴了语音信号的时间上相关性建模,提升带宽利用率。因此,在带宽有限情况下,大幅度提升抗性。

    图7是cFEC与OPUS原生FEC的效果比较。除了纯净网络外, cFEC相对OPUS原生FEC,可以提升0.1-1.1MOS。特别地,在40%这种比较大丢包率下,采用cFEC技术仍然将MOS分保持在3.0以上。信源侧单独抗性提升,为联合信源信道编码实施提供了足够保障。

    图7. cFEC技术与OPUS原生FEC的抗性能力对比

    我们以40%丢包率为例,展示自研cFEC技术,相对现有技术,在抗性提升方面的能力。每个文件的前一段为OPUS原生技术处理结果,后一段为cFEC处理结果。从主观体验看,cFEC处理后的语音质量和连续性非常显著。

    40%丢包率下,OPUS与cFEC原生技术效果对比(上为女生,下为男生)

    b.自适应带外控制策略

    首先一个概念就是“流控”。我们可以从三种不同维度去描述“流控”。第一,它是一个配置系统,无论双人或多人通话,系统所需要的基础配置参数,做到云端可控。第二,“流控”是把源端到目标端的传输行为,进行动态的能力交换。第三,基于网络拥塞控制(Congestion control),进行自适应控制;这样,就实现了丢包的时候怎样去抗丢包,抖动的时候怎么样去抗抖动,所有流程进行动态控制。拥塞控制,通过实时监控端到端延时的变化量(Jitter),从而判断当前这个网络是否趋于达到网络拥塞的情况,并给出当前一个合理的带宽预测值。基于带宽预测值,系统会动态配置带外FEC和ARQ策略,从而实现自适应带外控制策略。

    c.媒体代理与前向兼容问题的解决

    联合信源信道编码应用挑战,是与线上老版本的协议兼容问题、或者说,新旧客户端之间的互联互通问题。如果不进行全面考量,客户端接收到不兼容的码流,解码错误后会引起杂音等问题。如图6所示,我们通过媒体代理处部署相关的协议转录器,进行各种标准或者非标准协议之间的转换,对特定的客户端,接收或者发送对应的协议数据包。

    d.基于上下文的连续丢包补偿(cPLC)

    丢包补偿技术部署在解码端。它是在带外和带内FEC均失效情况下,根据已经恢复的语音帧,去预测丢失帧。这项技术无需额外带宽,兼容性好。主流PLC只能恢复约20ms的丢失内容,效果十分有限。随着深度学习的发展,工业界和学术界均在尝试引入深度学习,解决连续丢包补偿的问题[9]。这些方案,包括基于谱回归或者生成模型等方式,预测出相关的频谱或者信号。一般地,上述方案可以最多补偿120ms连续丢包数据。但模型大、复杂度高。

    腾讯天籁提出的cPLC方案,通过加大了信号处理在算法建模过程中的权重,提取上下文关系进行参数建模,并调用深度学习网络,重建丢失语音。cPLC方案不仅复杂度低,还有着零延时、部署难度低和兼容性好等优势。

    图8展示了离散丢包和突发丢包场景下,cPLC与OPUS原生PLC的补偿效果。实验结果表明,在所有测试条件下,cPLC在质量上均优于OPUS原生PLC技术。特别地,在突发丢包场景下,cPLC的优势更为明显。

      

    图8. cPLC技术与OPUS原生PLC的能力对比

    4.实验结果

    目前,腾讯天籁联合信源信道编码方案已经在腾讯会议上线。经过测试,可以降低带宽30%;同时,进一步降低延时40-60ms,进一步提升用户体验。

    5.结论

    RTC场景下,抗性提升是决定用户体验的重要因素。本文分析了几种典型的机制,并对每种机制的特点进行了描述。然而,疫情背景下,RTC产品的稳定性和通讯效果面临更多挑战,对新方案的需求更为强烈。腾讯天籁联合信源信道编码方案,通过有效地组合信源和信道侧的抗性策略,保证用户体验的同时,有效降低带宽和延时成本。从效果上看,结合了信源、信道的联合优化策略、结合经典信号处理和深度学习的新技术,将成为未来RTC解决方案中的关注点。

    参考资料

    [1] https://webrtc.org/

    [2] ITU-T G.729.1 : G.729-based embedded variable bit-rate coder: An 8-32 kbit/s scalable wideband coder bitstream interoperable with G.729

    [3] ITU-T G.718 : Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s

    [4] https://opus-codec.org/

    [5] V. K. Goyal, "Multiple Description Coding: Compression Meets the Network," IEEE Signal Processing Magazine, vol. 18, no. 5, pp. 74–94, Sept. 2001.

    [6] IETF RFC6354: RTP Payload for Redundant Audio Data.

    [7] J. Bolot, etc. The Case for FEC-based Error Control for Packet Audio in the Internet. 1997.

    [8] H. Seferoglu, etc. Rate Distortion Optimized Joint ARQ-FEC Scheme for Real-Time Wireless Multimedia. In ICC 2005.

    [9] https://ai.googleblog.com/2020/04/improving-audio-quality-in-duo-with.html

    展开全文
  • Joint source-channel coding of imagesSimulation of transmission of SPIHT encoded images over unreliable channels. Requires the MATLAB Communications Toolbox. Scripts for measuring the channel error ra...

    Joint source-channel coding of images

    Simulation of transmission of SPIHT encoded images over unreliable channels. Requires the MATLAB Communications Toolbox. Scripts for measuring the channel error rate, RCPC code characteristics and Rate-Distortion (R-D) curve of the SPIHT compression for the input image and selected channel characteristics.

    Functions:

    awgn_EsN0 - Simulation of the Additive White Gaussian Noise (AWGN) channel

    BSC_BER - Simulation of the Binary Symemtric Channel (BSC)

    GE_awgn - Simulation of the Gilbert-Elliot (GE) channel, using two AWGN channels

    get_channel - Loads a predefined channel (saved in a txt file)

    get_RCPC_code - Loads a predefined RCPC code from a default code family ('Punct_codes.txt')

    RCPC_encode - Rate Compatible Punctured Convolutional (RCPC) coding of the binary stream

    RCPC_test_equal_data - Transmission of packets with constant data part, using RCPC

    RCPC_test_equal_packet - Transmission of packets with constant size, using RCPC

    optimal_RCPC_equal - Computes the Equal Error Protection (EEP) scheme for a given image and channel

    send_image_equal - Transmission of SPIHT encoded image using EEP

    send_image_equal_RS - Transmission of SPIHT encoded image using EEP and Reed-Solomon protection

    optimal_RCPC_unequal - Computes the Unequal Error Protection (UEP) scheme for a given image and channel

    send_image_unequal - Transmission of SPIHT encoded image using UEP

    script_channel_performance - Measures the BER and PER values for RCPC transmission on a given channel

    RDcurveBytePrec - Runs SPIHT over range of target bitrates and stores the R-D curve

    The source and some instructions are also on Github (under /JSCCImage):

    https://github.com/nsprljan/ImageCodingResearchTools

    Fork it, send me a pull request with your patches or add issues.

    展开全文
  • 一共七篇,目录如下 Distributed Arithmetic Coding for the Slepian–Wolf Problem DISTRIBUTED IMAGE COMPRESSION FOR SENSOR NETWORKS USING ...基于多描述的联合信源信道编码 图像通信中的不等差错保护技术
  • 联合信源信道编码基本框架腾讯天籁联合信源信道编码的基本框架进行介绍: 系统可以分解为发送端、网络侧、接收端。 发送端将新方案的码流发往上行媒体代理。其中,cFEC提供了信源侧抗性,带外和流控,根据实际的...
    402e7924c34bb8ac1ec1dedda8d46212.gif前言2020年疫情的突如其来,让数字通信成为了人与人沟通的重要手段;同时也对实时音视频通信(RTC)的稳定性和通讯效果提供了极大考验。由于业务量激增,在保障用户体验方面,RTC业务面临着诸多困难,包括但不限于通话质量、最小化卡顿、端到端延时、带宽成本等。在网络传输过程中,RTC方案,需要面对用户体验、运营成本的双重约束,挑战巨大。本白皮书,将聚焦RTC业务中网络抗性下的体验保障这一命题展开讨论。本文首先对相关技术的特点进行描述。然后,本文重点介绍腾讯天籁推出的音频联合信源信道编码方案。该方案已经在腾讯会议、TRTC等产品推广和部署;在保障用户体验同时,显著降低带宽和延时。1.背景介绍     96887728d8135312efac907048ddfd40.png图1. 端到端视角下音频通话体验的影响因素VoIP是一个复杂的链式系统,以单侧的发送端到接收端通信为例,要经过采集、前处理、编码、传输、解码、增强、回放等多个阶段。每个阶段都会影响最终体验。从端到端到角度,影响通话体验的因素,可以分成信源和信道(链路)两个部分。信源部分,主要干扰因素是声学侧的噪声、回声等物理特征;一般地,通过优化音频信号处理方案(包括结合深度学习技术等)进行质量保证。如果说,信源决定最终体验的上界,信道则决定了体验“打折”后的上界。

    767f3ece2088e4ef6d78ed07a58c8bc3.png

    图2. 语音丢包

    RTC业务中,一个重要的挑战就是传输过程中出现丢包;丢包导致接收端解码声音不连续或卡顿,影响体验(图2)。因此,网络抗性提升是RTC业务绕不开的话题。然而,任何一种抗性提升手段,避免不了增加带宽冗余、CPU消耗等。同时,任何一种单一手段,并不能很完美解决上述问题。因此,打造一个好的RTC通话体验,需要联合信源和信道,自顶向下地设计系统。本文将重点讨论如何提升RTC系统中的网络抗性。

    2.相关技术概述

    1)WebRTC        

    a27433235f1f3a995649e159c7df4e8c.png

    图3. WebRTC引擎

    RTC主流商用方案,始于开源。目前的开源体系中,WebRTC使用得最为广泛[1]。WebRTC实现了基于网页的RTC视频会议能力,核心技术包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:Windows,Linux,Mac,Android。相对全面的平台能力,使得RTC公司优选其作为开发平台,搭建自主品牌的SDK。因此,相当一部分RTC厂商采用的策略,是完全基于WebRTC,不做底层的改动;针对应用场景,发力于易用性等方面的改进。然而,在疫情这一特殊背景下,用户对实时音视频通信的稳定性和通讯效果提出了更高要求。简单地基于开源平台改动,并不能从根本上,将通话体验提升一个档次。因此,具备更多核心能力、底层技术的方案,将在市场上更具竞争力。

    2)嵌入式编码技术(分层编码)

    嵌入式编码,也叫分层编码,通过对信源中不同成份,进行分层处理,以适应网络抗性方面的要求(图4)。原理可以概述为:
    • 通过带通滤波器,将输入的语音信号分离成窄带和宽带部分。

    • 对窄带部分使用更多码率进行压缩,减少失真。如果还有带宽资源,会先花少量码率对高频进行高效率的参数编码,恢复出质量可接受的高频。进一步,如果还有更多带宽资源,对高频做更为精细编码,恢复出高质量的高频。

    • 上述编码的码流,将使用不同优先级传输保障策略,发给接收端。特别地,网络非常差情况下,只发送窄带部分的码流。

    • 如果接收端至少收到低频部分,可恢复出窄带语音,基础质量可以保障。根据收到不同编码精度的高频,输出不同质量水平的宽带语音。

    be6fbf93d2efcad9210c0ccc3d6e3a13.png

    图4. 嵌入式编码基本架构

    嵌入式编码,在视频编码系统中被普遍采纳;语音编领域,在2000-2010年这个区间,流行过一段时间,比如ITU-T G729.1和G.718 ,以及相关标准的超宽带演进版本[2, 3]。然而,嵌入式编码,对于语音业务,存在效率不高的问题。究其原因,语音业务的基础码率偏低,比如20kbps;如果引入嵌入式编码,为了2kbps的分层编码,系统需要做复杂的分层逻辑,在QoE综合质量上不见得是最优策略。因此,2010年之后的主流标准,如IETF OPUS[4],并没有采用嵌入式编码。一般地,即使未采用嵌入编码,相关的编码标准也会采纳多速率编码技术,即支持多种编码码率,用户根据业务特点进行合理配置。

    3)多描述编码技术(MDC)

    多描述编码(MDC)是一种码流分离技术,具体说,就是将一段音频信号,分离成不同子部分(称之为“描述”);每个部分分别组包,并使用不同的传输路径进行传输。接收端如果收到部分的描述,可以恢复出低质量的音频;如果收到全部描述,可以恢复出高质量的音频[5]。一个最简单的MDC实施方式是,对一段音频信号进行奇偶抽样;奇数抽样和偶数抽样分别组包传输;接收端即使只收到奇数或者偶数抽样相关的数据包,通过解码和插值,即可恢复出低质量的音频。更为复杂的MDC,包括对奇偶帧进行反复残差分析,确定失真最小的组合变量进行编码和传输。一般地,MDC编码器包含了多个描述的编码器和描述残差关系的编码器,编码器复杂度很高。MDC的设计理念,假设了网络状态一定不好。MDC的代价,是牺牲(同等码率)天花板质量。一般地,在理想信道下,需要额外消耗20-30%带宽完成MDC。因此,MDC并不会降低带宽的使用量;并且,MDC主要用于窄带部分,宽带部分还是结合了结合了嵌入式编码、频带扩展等技术,提升带宽利用率;否则,带宽使用量会增加。

    4)RED机制

    RED机制,即IETF RTP Payload for Redundant Audio Data[6]。这个机制提出,跟上文提到的音频码率偏低有关。比如说,每20ms语音帧进行打包操作,包头假设是10kbps、有效载荷是20kbps;这样一种分配,码率浪费严重。因此,RED的建议是,将相邻两个20ms的有效载荷合并成一个数据包。这样,一个数据包中有效载荷比例可达80%。OPUS就沿用了RED机制,甚至将相邻60ms数据合并成一个数据包,共享一个包头。然而,RED机制并没有任何包内抗性;如果没有其它抗性保障,一旦包丢失,影响连续40-60ms数据。

    5)带外FEC       

    0a1b557bfca93bcf40fa14b926ba5806.png

    图5. 带外FEC示意图

    带外FEC,即在包层进行数据冗余操作的技术[7]。举个例子:如果分组是4,那么在网络传输过程中任意丢掉一个,在接收端任意收到任何顺序的4个属于本分组的数据包,那就可以把丢失的包恢复。具体包括,发送端:将数据包按照参数下发,对数据包进行分组(block),对分组数据加冗余。接收端:收齐分组后即可恢复数据(丢失不超过冗余包数),因为要等分组到齐,存在FEC恢复算法上的延时, FecDelay = Block * 帧长。

    6)ARQ重传

    所谓ARQ重传,即包确定丢失且无法恢复时,通过请求重传,以增加延时的方式,提升网络抗性[8]。音频快速重传ARQ是“选择重传”算法作为基本的请求策略,算法的关键特色在于重传请求与Jitter Buffer的紧密配合上。几个基本准则包括:
    • 请求重传模块记录并缓存所有重传数据包的重传成功所消耗的时间,并将重传延时ArqDelay告知JitterBuffer模块,提高了数据的缓冲等待时长的高可控性。

    • 接收端通过ARQ请求,在数据缓冲队列的数据帧被播放之前,当还未重传成功的数据帧在已经达到播放时间时,接收端通过ACK通知取消请求重传,减少无用请求。

    3.联合信源信道编码架构

    1)方案的设计理念

    如前文所述,针对网络抗性问题,主流的RTC解决方案还是围绕信道侧方法进行;特别地,通过加网络冗余,维护一个高的抗性水平。然而,如果完全依赖信道侧方法,实际应用中又面临其它问题:
    • 如果网络抗性完全来自于带外,带宽成本激增。

    • 重传等操作,带来了包的组合、解析等迭代操作,增加时延。

    因此,腾讯天籁的解决方案优先从信源入手,优化带内FEC。所谓带内FEC,最直观的解释就是在第T个包中除了包头和第T帧以外,还包含第T-1帧的信息。事实上,OPUS已经支持上述带内FEC的功能。经过测算,OPUS带内FEC帧的有效载荷约为普通帧的70-80%;然而,只能提供20%丢包率的抗性;投入产出比偏低。综合上述考虑,腾讯天籁提出下列的联合信源信道编码策略:
    • 首先,提升信源侧方法的能力上界。相对于标准带内FEC,新的信源侧FEC,需要更强的单独抗性;比如,支持40%丢包率。

    • 其二,灵活调用带外和带内抗性。以期在抗性稳定性和带宽消耗上有一个更为灵活的折衷。相关的控制参数,依赖于测试平台提供的经验数据,进行迭代升级。

    • 第三,前向兼容性问题,要保证新旧两种协议无互通问题。

    2)方案框架         

    d2e7bd854f11e596104b6bfa61aab590.png

    图6. 联合信源信道编码基本框架

    腾讯天籁联合信源信道编码的基本框架进行介绍:
    • 系统可以分解为发送端、网络侧、接收端。

    • 发送端将新方案的码流发往上行媒体代理。其中,cFEC提供了信源侧抗性,带外和流控,根据实际的网络状态,下发具体配置,确保最小带宽和延时成本下的QoE保障。

    • 上行媒体代理处,将新方案对应的协议,转换成标准协议。

    • 下行媒体代理处,将标准协议转换成新方案的协议,并发给接收端。

    • 接收端接收新方案的协议,具备了联合信源信道的能力;以更少的带宽和延时,获得稳定可靠的网络抗性能力。此外,接收端也集成cPLC丢包补偿模块处理突发丢包状态。实时策略,由带外和流控模块控制。在网络有损的情况下,带外FEC或者ARQ重传,最大程度保障数据包可以完整发送到接收端。如果仍然有丢包发生,首先基于cFEC的带内抗性进行质量保障;如果有更多连续数据包丢失,则启动cPLC进行丢包补偿。

    3)核心模块

    a.信源侧FEC(cFEC)腾讯天籁的cFEC方案,充分借鉴了语音信号的时间上相关性建模,提升带宽利用率。因此,在带宽有限情况下,大幅度提升抗性。图7是cFEC与OPUS原生FEC的效果比较。除了纯净网络外, cFEC相对OPUS原生FEC,可以提升0.1-1.1MOS。特别地,在40%这种比较大丢包率下,采用cFEC技术仍然将MOS分保持在3.0以上。信源侧单独抗性提升,为联合信源信道编码实施提供了足够保障。

    1406937c436364e14889858193032775.png

    图7. cFEC技术与OPUS原生FEC的抗性能力对比

    我们以40%丢包率为例,展示自研cFEC技术,相对现有技术,在抗性提升方面的能力。每个文件的前一段为OPUS原生技术处理结果,后一段为cFEC处理结果。从主观体验看,cFEC处理后的语音质量和连续性非常显著。

    40%丢包率下,OPUS与cFEC原生技术效果对比(上为女生,下为男生)

    b.自适应带外控制策略首先一个概念就是“流控”。我们可以从三种不同维度去描述“流控”。第一,它是一个配置系统,无论双人或多人通话,系统所需要的基础配置参数,做到云端可控。第二,“流控”是把源端到目标端的传输行为,进行动态的能力交换。第三,基于网络拥塞控制(Congestion control),进行自适应控制;这样,就实现了丢包的时候怎样去抗丢包,抖动的时候怎么样去抗抖动,所有流程进行动态控制。拥塞控制,通过实时监控端到端延时的变化量(Jitter),从而判断当前这个网络是否趋于达到网络拥塞的情况,并给出当前一个合理的带宽预测值。基于带宽预测值,系统会动态配置带外FEC和ARQ策略,从而实现自适应带外控制策略。c.媒体代理与前向兼容问题的解决联合信源信道编码应用挑战,是与线上老版本的协议兼容问题、或者说,新旧客户端之间的互联互通问题。如果不进行全面考量,客户端接收到不兼容的码流,解码错误后会引起杂音等问题。如图6所示,我们通过媒体代理处部署相关的协议转录器,进行各种标准或者非标准协议之间的转换,对特定的客户端,接收或者发送对应的协议数据包。d.基于上下文的连续丢包补偿(cPLC)丢包补偿技术部署在解码端。它是在带外和带内FEC均失效情况下,根据已经恢复的语音帧,去预测丢失帧。这项技术无需额外带宽,兼容性好。主流PLC只能恢复约20ms的丢失内容,效果十分有限。随着深度学习的发展,工业界和学术界均在尝试引入深度学习,解决连续丢包补偿的问题[9]。这些方案,包括基于谱回归或者生成模型等方式,预测出相关的频谱或者信号。一般地,上述方案可以最多补偿120ms连续丢包数据。但模型大、复杂度高。腾讯天籁提出的cPLC方案,通过加大了信号处理在算法建模过程中的权重,提取上下文关系进行参数建模,并调用深度学习网络,重建丢失语音。cPLC方案不仅复杂度低,还有着零延时、部署难度低和兼容性好等优势。图8展示了离散丢包和突发丢包场景下,cPLC与OPUS原生PLC的补偿效果。实验结果表明,在所有测试条件下,cPLC在质量上均优于OPUS原生PLC技术。特别地,在突发丢包场景下,cPLC的优势更为明显。fe7c45c26419c0ffa55e38d0e57f390e.png  44a3f4df34e461332bedc906a83cf87d.png

    图8. cPLC技术与OPUS原生PLC的能力对比

    4.实验结果

    目前,腾讯天籁联合信源信道编码方案已经在腾讯会议上线。经过测试,可以降低带宽30%;同时,进一步降低延时40-60ms,进一步提升用户体验。

    5.结论

    RTC场景下,抗性提升是决定用户体验的重要因素。本文分析了几种典型的机制,并对每种机制的特点进行了描述。然而,疫情背景下,RTC产品的稳定性和通讯效果面临更多挑战,对新方案的需求更为强烈。腾讯天籁联合信源信道编码方案,通过有效地组合信源和信道侧的抗性策略,保证用户体验的同时,有效降低带宽和延时成本。从效果上看,结合了信源、信道的联合优化策略、结合经典信号处理和深度学习的新技术,将成为未来RTC解决方案中的关注点。

    参考资料

    [1] https://webrtc.org/[2] ITU-T G.729.1 : G.729-based embedded variable bit-rate coder: An 8-32 kbit/s scalable wideband coder bitstream interoperable with G.729[3] ITU-T G.718 : Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s[4] https://opus-codec.org/[5] V. K. Goyal, "Multiple Description Coding: Compression Meets the Network," IEEE Signal Processing Magazine, vol. 18, no. 5, pp. 74–94, Sept. 2001.[6] IETF RFC6354: RTP Payload for Redundant Audio Data.[7] J. Bolot, etc. The Case for FEC-based Error Control for Packet Audio in the Internet. 1997.[8] H. Seferoglu, etc. Rate Distortion Optimized Joint ARQ-FEC Scheme for Real-Time Wireless Multimedia. In ICC 2005.[9] https://ai.googleblog.com/2020/04/improving-audio-quality-in-duo-with.html

    bf3a87e80d192594cb6d811d2ae55d6b.gif

    展开全文
  • 为了研究数据压缩的协作通信编码,提出一种联合信源信道的LDPC编码方案,并设计了一种迭代解码的中继框架。首先,源节点借助一个中继节点向目的地节点发送相关内容,并在两个节点处应用分布式联合信源信道的LDPC编码...
  • 主要简介了信源信道联合编码的发展历程,及其研究现状,及其研究学校及其导师。
  • 信息论的经典结果表明,信源信道分离编码是渐进最优的。但现代通信系统对时延、带宽等愈发敏 感,分离设计对解码具有无限计算能力这一假设难以成立...带宽有限时,相对于信源信道联合编码,分离编 码已被证明是次优的。
  • 基于极化码的信源信道联合编码研究
  • 摘要:信源编码是一个数据压缩的过程,其目的是尽可能地将信源中的冗余度去掉;而信道编码则是一个增加冗余的过程,通过适当加入冗余度来达到抵抗信道噪声,保护传输数据的目的。
  • 一种基于分布式压缩传感的信源信道联合编码方法,张波,刘佳,本文针对无线传感网(WSN)中存在的数据拥塞、能量空洞等问题在描述分布式传感联合稀疏模型的基础上,根据传感器节点间数据采集的
  • 基于H.264立体视频信源信道联合编码技术研究,张景正,张小频,立体显示技术的不断发展使得立体视频编解码技术受到人们越来越多的关注。然而立体视频数据量大且难于传输的问题一直制约着立体视
  • 该算法在网络带宽一定的情况下,从信源、信道及差错弹性能力权衡考虑,引入了信源解码器的抗误码性能指标,根据不同的信道状态确定信源信道编码的最优速率分配方案,从而获得最大的可解码长度,并最终获取最佳重建...
  • 文章目录5.1 基本概念5.2 典型设计5.3 信道编码定理证明正定理证明逆定理5.4 典型信道编码5.5 信源信道联合编码定理 5.1 基本概念 从通信角度看信道编码: 信道不可靠 W^\hat{W}W^ 与传输的消息 WWW 不同 研究...
  • 信源即信息发出的源头,在后续的信道模型中,信源发出的信息即视为信道输入的信息。 根据信源发出信息的取值,可将信源分为离散信源和连续信源。 顾名思义,离散信源即发出的信息取值为离散型的信源;连续信源即发出...
  • 为了提高解码前传半双工中继通信系统的编码增益,提出了一种联合LDPC码编码结构及其度分布优化方法。该结构视信源和中继子码为联合LDPC码的一部分,目的端根据从信源和中继接收的消息进行联合译码,同时获得信源和中继...
  • 信息论大作业

    2014-05-29 23:39:48
    解决这一主要矛盾的方法就是联合信源信道编码(Joint Source Channel Coding, JSCC)技术。JSCC技术是对现有的多媒体通信系统的重要改进,通过联合化信源和信道编码可提高系统的整体性能。这种联合设计的理念广泛受...
  • 视频序列的信道失真 ,仿真结果表明 ,对于不同的视频编码序列 ,在不同信道误比特率和信源编码率下 ,模型估算 的平均相对偏差和绝对偏差较小 ,准确度高 ,为基于 P2 R2 D优化的失真估算提供一个有力的工具。
  • 基于EM算法的盲信道估计与迭代检测,郭文彬,杨鸿文,针对多径信道下的编码BPSK信号,提出了一种基于EM算法的信道估计联合迭代检测方法。接收端先根据EM算法进行盲信道估计和信源分离,�
  • 为逼近解码前传半双工多址访问中继信道容量,提出一种多边低密度奇偶校验(LDPC)码校验点联合编码(奇偶校验多边型LDPC码) ,PJCMET-LDPC)结构及其度分布优化方法。该结构视听中继比特为PJCMET-LDPC码的一部分,...
  • 分布式压缩感知(DCS)被视为分布式信源编码和压缩感知(CS)的结合,论文详细论证了分布式压缩感知理论在MIMO-OFDM系统中运用的可行性。将该算法与基于压缩感知理论的CoSAMP算法做比较,仿真结果表明,基于DCS算法...
  • 提出了一种新的针对不等长编码信源的符号约束MAP联合译码算法,利用VLCs双树信源的构造方法,有效地抑制了VLCs的错误扩散;同时,通过将“符号约束”的思想应用于最大后验概率(MAP)译码算法,不仅充分利用了信源...
  • 目的终端分别采用递增冗余和Chase合并技术处理中继节点和信源的重发信息,并进行联合软判决译码。分析了系统的中断概率和平均吞吐量。仿真结果表明,在平坦瑞利衰落信道下,该分布式编码协作HARQ协议较非协作HARQ...
  • 基于Huffman信源编码和LDPC信道编码联合译码算法,梅中辉,吴乐南,在本文中,我们利用Huffman编码后的信源冗余,为LDPC码提出了一个联合译码算法。当Huffman码字数增加时,我们仅需要增大一个查询表,该
  • 大话无线通信读后感

    2018-04-27 00:47:00
    《大话无线通信》这本书很经典 信源与输入变换处理:模拟信号,采样...信道编码->bit流,利用正弦流的振幅A,频率f,相位p,调制,ASK、FSK、PSK 信道:信道容量【带宽、数据率、噪声、误码率】,...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

联合信源信道编码