基于dsp单芯片多通道多语音编解码器的通道开启方法

文档序号:7539552阅读:365来源:国知局
专利名称:基于dsp单芯片多通道多语音编解码器的通道开启方法
技术领域
本发明涉及语音信号处理,具体涉及一种基于DSP单芯片多通道多语音编解码器的通道开启方法。
背景技术
基于互联网协议语音通讯Vocie over IP,简称VoIP,是建立在互联网协议IP技术上的分组化、数字化语音传输技术。数字信号处理芯片DSP具有高处理能力、独立存储控制和低成本的特性,适合于执行VOIP语音处理系统中的语音信号处理功能,其应用大大推动了VoIP技术的发展和推广。
语音编解码器内置在DSP芯片中作为VoIP技术的一个核心,编解码质量、占用带宽、处理能力等直接关系VoIP性能实现。ITU-T发布的一系列应用于VoIP的语音压缩编解码标准G711、G723、G728、G729等,这些语音编码算法都采用逐帧处理的方式,每收到包括多个样点的一帧语音进行一次编码,利用线形预测和矢量量化等技术去除语音信号之间的短期相关性和长期相关性,尽可能地降低语音编码速率。VoIP媒体网关设备中通常需要支持上述多语音编解码器选择。
基于单DSP芯片平台的VOIP语音处理系统多通道语音处理中,各通道之间一般来说采用通道轮询架构设计在一定时间片内循环检测各通道的状态,进行语音编解码处理;所述时间片由VOIP语音处理系统的架构决定,通常依赖选用语音编解码器的数据帧长特性。典型多通道语音处理流程,如图1所示,包括步骤110)处理时间到;120)从Channel_1开始对当前Channel_Num通道语音信号处理;130)判断所有Channel处理完毕?是进入步骤150;否进入步骤140);140)Channel_Num++,返回步骤120);150)等待下一处理时间开始。该流程就是DSP芯片程序实时循环处理所有有效语音通道。同时,多通道控制也可以通过多DSP芯片完成,但需要增加硬件;另外,VOIP语音处理系统中其他语音信号处理部分大都基于语音编解码器的帧长单位,比如网络组包解包处理的网络模块也基于语音编解码器的输入和输出,因此整个DSP芯片的多通道调度处理是建立在语音编解码器的调度处理特性之上。
按目前VOIP语音处理系统通道轮询架构,当其语音编解码器类型唯一,各通道处理的数据帧长也是一致,所有通道处理时间同步,DSP芯片平台可根据所有语音信号处理负荷决定VOIP语音处理系统实现的最大通道数。当各通道的语音编解码器不同时,由于语音编解码器的处理帧长不同,且不同语音编解码器算法的复杂程度相差较大,目标实现VOIP语音处理系统最大通道数时,通常通道轮询会导致DSP处理能力瓶颈,具体如图2所示为例,细线和粗线框分别调用G711和G723语音编解码器,G711数据帧长10ms,G723帧长30ms,VOIP语音处理系统开启6个有效通道,t0~t6相邻时刻时间间隔为10ms周期,即时间片1,t0~t1时间间隔内,通道1/3/4的10ms帧长输入数据有效,进行G711编解码;通道2/5/6因数据无效不进行G723编解码,通道1/3/4轮询语音信号处理;时间间隔内t1~t2、t3~t4和t4~t5的处理相同。
2,t2~t3和t5~t6时间间隔内,此时所有通道的帧数据都有效,通道1/3/4数据为10ms帧长,通道2/5/6数据为30ms帧长,通道1~6轮询语音信号处理。
3,若DSP芯片程序能在t2~t3时间间隔内完成所有通道的语音处理,则该VOIP语音处理系统实时性能够保证。因语音编解码器类型不同,各通道的处理运算量并不相同,G723实现需要的每秒百万指令周期MIPS,需要DSP芯片处理能力单位远远大于G711,当DSP芯片需要实现通道数增加一定量时,就会出现在t3或t6时刻到来时,当前帧所有通道语音信号处理不能完成的现象。
在t2~t3和t5~t6时间间隔内没有完成所有通道处理,对于DSP而言就是当前时间片内的运算能力瓶颈,如图3所示,其中高出虚线的斜线块为当前时间片内的运算能力瓶颈,目前采用以下方法解决(一)t3时刻后继续未完成通道的语音信号处理,结果带来下一时间片语音处理延迟,如图3所示,t3时刻开始应执行下一次轮询开始通道1的G711编解码而被迫延时至低于虚线的斜线块之后。若DSP处理负荷不严重时,当前时间片的延迟可在后续时间片处理得到释放,比如该具体实施例中G711编解码占用运算量低。但,严重时可出现t3~t4时间间隔内,1/3/4通道没有及时处理,导致t3~t4时间间隔内的输入语音帧数据被冲洗,出现丢包现象,长时出现这种延时累积效应可导致VOIP语音处理系统出错。通常避免该问题方法是根据语音信号处理的最大负荷来定义通道密度,保证最坏情形下VoIP语音处理系统的实时处理,比如该具体实施例中最大负荷是G723编解码器。
(二)t3时刻上一时间片未完成通道的语音处理失效,保证下一时间片的通道轮询,而损失当前时间片未处理通道信号数据。应用该方法,可根据时间片内所有通道处理占用的判断,实时动态增加和减少通道密度,但无法或无法一次实现最大通道密度。
除通道轮询架构方式之外,另一种多通道的不同处理帧长可采用多任务方式,依赖每个通道的信号处理建立独立的任务,短帧长比如G711的10ms通道任务具有高优先级别,长帧长比如G723的30ms低优先级别。由VoIP语音处理系统通过不同任务的抢占和释放实现语音处理的实时性,但同时多任务形式的语音信号处理虽然可解决多通道轮询带来的语音瓶颈或语音帧丢失,但通道开启关闭需实时建立和取消任务,任务频繁开启和取消以及多个任务的频繁切换会导致DSP芯片运算负荷的增加,同时DSP平台要求提供实时操作系统RTOS支持。随着通道密度的增加VOIP语音处理系统复杂性同样增加,同样带来运算负荷的瓶颈,特别是强调在一块DSP芯片上实现高通道密度VOIP语音处理系统时,以每个通道建立任务不具有实现意义。

发明内容
本发明需要解决的技术问题是提供一种基于DSP单芯片多通道多语音编解码器的通道开启方法,无需实时监测DSP芯片运算负荷,优化VoIP语音处理系统通道密度,解决传统语音编解码器调度中带来的运算能力瓶颈和计算复杂程度。
本发明的上述技术问题这样解决,提供一种基于DSP单芯片多通道多语音编解码器的通道开启方法,在每个该通道同步循环周期的具体时隙使用对应语音编解码器处理该通道,包括以下步骤1.1)根据新开启通道使用语音编解码器类型选择对应同步循环周期;1.2)选择分配所述同步循环周期内开启通道数最少的时隙给所述新开启通道,所述最少的时隙开启通道数加一;1.3)在所述最少的时隙使用对应语音编解码器处理该新开启通道。
按照本发明提供的通道开启方法,所述时隙是一个时间片,DSP单芯片在每一时间片内按顺序询问每一通道。
按照本发明提供的通道开启方法,所述时间片是各语音编解码器处理桢长的最大公约数。
按照本发明提供的通道开启方法,所述通道进行统一编号,记录所述时隙和对应语音编解码器。
按照本发明提供的通道开启方法,所述最少的时隙是一个。
按照本发明提供的通道开启方法,所述最少的时隙是多个,任选其中之一作为最少的时隙。
按照本发明提供的通道开启方法,所述语音编解码器是二种或二种以上,包括G711、G723、G728和G729语音编解码中的一种或多种。
按照本发明提供的通道开启方法,该方法应用在VOIP语音处理系统中。
按照本发明提供的通道开启方法,该方法应用在媒体网关、无线语音编解码处理系统中。
按照本发明提供的通道开启方法,该方法应用在以一定时长为处理单位的多通道多语音编解码器结构的系统中。
本发明提供的基于DSP单芯片多通道多语音编解码器的通道开启方法,在单DSP芯片处理平台上针对支持多语音编解码器及多通道的VoIP语音处理系统,对每一语音编解码器在其循环计数周期P的各时隙平均分配调用该语音编解码器的所有通道,这样将各通道运行平均分配到VoIP语音处理系统定义时间片内,最大实现VoIP语音处理系统通道密度,能够对于任意语音编解码器组合实现,无需实时监测DSP芯片运算负荷,解决了传统语音编解码器调度中带来的运算能力瓶颈和复杂程度,较现有技术,有如下优点①优化多通道多语音编解码器的调度方案,解决单一轮询通道带来运算瓶颈或多任务VoIP语音处理系统带来的实现复杂度,提高通道实现密度。
②DSP芯片独立分配策略,无需上层主机或CPU控制干预,通道循环计数周期分配算法简单有效,提高运算效率。
③减少算法处理带来的语音延迟。原通道轮询时间片内依次处理所有通道,对于每一通道而言,总的算法处理延时为前面所有通道处理占用时间加上本通道处理延时,通道号越高,延迟越大。在相同实现总通道数的条件下,本发明通过平均各通道占用时间片。因此在一时间片内,需求处理通道数降低,也即降低各通道的算法处理带来的语音延迟。


下面结合附图和具体实施例进一步对本发明进行详细说明。
图1是目前典型语音编解码器调度处理流程示意图。
图2是以语音编解码器G711和G723为例的典型处理时序和通道调用对应示意图。
图3是DSP芯片运行图2对应时序处理中运算能力瓶颈示意图。
图4是本发明提供的多语音编解码器调度的时序和通道对应示意图。
图5是本发明对于通道循环周期分配的算法流程示意图。
图6是本发明具体实施例中通道轮询处理流程示意图。
具体实施例方式
首先,说明本发明的核心思想在DSP芯片总处理能力保证下,在依处理桢长保证实时处理各通道数据桢的基础上,通过同步循环周期中每个时间片内各语音编解码器分配通道数的平均或最可能平均来实现DSP运行负荷的均衡。本发明在以一定时长处理为单位的多通道多语音编解码器结构各种语音处理系统中都具有可实现性。
第二步,说明本发明的出发点采用通道轮询调度方法的程序架构清晰,而多任务调度方法成功解决通道轮询带来的运算负荷瓶颈。本发明解决方法正是结合两种方法的各自优点,即沿用通道简单轮询调度结构,又保证时间片内即时间片内各通道运算实时完成,提高VoIP语音处理系统处理性能。语音编解码器之间不同处理帧长和不同运算负荷是引起时间片即时间片内运算瓶颈的直接原因。本发明的具体办法是如VoIP语音处理系统中需求实现m种语音编解码器,其中各语音编解码器运算帧长分别为L1,L2......Lm,计算各处理帧长的最大公约数T作为程序时间片,对常用语音编解码器类型而言公约数T为5ms或10ms。各语音编解码器处理帧长占用的时间片倍数P为循环计数周期,例入语音编解码器处理帧长30ms,时间片10ms,则循环计数周期P=3,即每3个时间片,也是使用该语音编解码器各通道的同步循环周期,调用一次对应语音编解码器处理该通道传输过来的数据,保证实时处理该通道数据桢。设VoIP语音处理系统中一类型语音编解码器的所有开启通道数n,在保证对于任一通道的处理时间间隔等于对应语音编解码器处理帧长的基础上将n个通道尽量平均分配到同步循环周期中每个时间片中调用,即每个时间片中应该调用该语音编解码器的通道数为n/P,当n/P不是整数时,此时同步循环周期中每个时间片的具体该语音编解码器的通道数是不同的,是大于或小于n/P的最接近整数,可以采用依次对同步循环周期中第一时间片分配INT(n/P), 第二时间片分配INT((n-INT(n/P))/(P-1)).......。在DSP芯片总的处理能力保证下,通过同步循环周期中每个的时间片内各语音编解码器分配通道数的平均或最可能平均来实现DSP芯片运行负荷的均衡。
第三步,说明本发明VoIP语音处理系统,由以下模块组成(一)时间片长决策模块根据VoIP语音处理系统要实现各语音编解码器处理帧长决定时间片及对应语音编解码器的循环计数周期,保证对通道的实时处理,进一步为平均分配提供基准。
(二)通道调用循环计数周期分配模块语音通道开启后判断当前配置语音编解码器类型及相应帧长,分配该通道调用在循环计数周期内的具体时隙。
一个具体语音编解码器分配实现如下,定义CHANNELNUM为VoIP语音处理系统最大实现通道密度,P为该语音编解码器的循环计数周期,包括以下步骤1)定义语音编解码器处理时隙start_frame[CHANNELNUM],用于记录每个通道语音处理的时间片应占用的时隙;计数器变量frame_1、frame_2......frame_P为循环周期1、2、3......P个时隙中分配到的通道数。
2)初始化framl_1、frame_2......frame_P变量值为0。
3)实时开启通道后,比较找出frame_1、frame_2......frame_P最小值,最小的值表示对应时隙内分配的调用通道数最少,返回该时间片断值j,计数器frame_j加1。当有大于1个相等最小值时,选择其中任一时隙值,同时该计数器加1。
4)分配当前通道在循环计数周期中的处理时隙start_frame[]=j。
(三)通道轮询调度同步模块通道轮询时判断以P为周期大小的当前时间片的循环计数是否与上步骤中分配的通道处理时隙start_frame[]一致,若一致,则表明当前时间片应执行该通道的语音处理;否则跳过继续下一通道号的处理。
(四)通道分配周期关闭模块通道实时关闭后更新该通道分配占用时隙,frame_j计数器减1。
最后,以本发明在三个语音编解码器CodecA、CodecB、CodecC多通道VoIP语音处理系统的具体应用详细说明本发明语音编解码器CodecA、CodecB、CodecC的处理帧长假定分别为10ms、20ms、30ms,三个语音编解码器处理帧长最大公约数为10ms,即VoIP语音处理系统时间片为10ms,取同步循环周期为3个时间片,有frame_1、frame_2和frame_3三个时隙。语音编解码器CodecA、CodecB、CodecC的循环计数周期分别为1、2和3。语音编解码器CodecA的循环计数周期为1,表示每个时间片中使用语音编解码器CodecA的所有通道都需调用处理。
假定已开启配置语音编解码器CodecC的通道总数为13,根据时隙分配原理,此时按平均分配原则同步循环周期三个时隙分配给语音编解码器CodecC的通道数量分别为frameC_1=4,frameC_2=4,frameC_3=5。
当前VoIP语音处理系统要求打开一个新通道n配置语音编解码器CodeC,如图5所示,此时通道具体时隙配置过程包括以下步骤510)通道开启;520)判断语音编解码器类型为CodecC,循环计数周期P=3;530)找出CodecC均分时间片中有效开启通道数最小时隙,此时frameC_1=frameC_2<frameC_3,最小时隙通道计数为frameC_2;540)通道计数frameC_2++,frameC_2=5,返回时隙2;550)将返回时隙2分配给当前通道启动时隙start_frame[n]=2;560)当前通道其他初始化程序。
进一步,通道调用的一个时间片内主处理流程,具体如图6所示,包括以下步骤610)当前时间片开始,设置Channel Num=1即从通道一开始轮询;620)判断当前Channel_Num通道语音编解码器类型,读取当前通道时隙分配start_frame[];读取当前同步循环周期的时隙global_timeCount,对于CodecC而言,global_timeCount的循环周期为3;630)判断start_frame[]=global_timeCount,即通道启动时隙分配值与当前同步循环周期时隙相同,进入步骤640);否则跳到步骤650);640)对该Channel_Num通道相关语音信号进行处理;650)Channel_Num++,即通道号加1;660)判断是否所有通道循环处理完毕,如果是进入步骤670),否则返回步骤620);670)global_timeCoun++,即同步循环周期的时隙global_timeCount加1;680)判断循环周期时隙是否一个周期结束,如果否,直接进入步骤690);如果是,进入步骤691);691)重置初始时隙global_timeCount=1,进入步骤690)690)等待下一时间片的开始,重复步骤610)~690)。
进一步,当VoIP语音处理系统关闭通道号n时,程序返回该通道轮询起始时隙2,并将该时隙累计通道计数器frameC_2减1,即frameC_2=frameC_2-1,实时更新通道配置的改变,而后利用该新配置开启新通道实现负担均衡。
发明人通过在应用VoIP语音处理系统进行实际性能验证和效果对比分析,进一步证明本发明结果确实可靠可行。
权利要求
1.一种基于DSP单芯片多通道多语音编解码器的通道开启方法,在每个该通道同步循环周期的具体时隙使用对应语音编解码器处理该通道,其特征在于,包括以下步骤1.1)根据新开启通道使用语音编解码器类型选择对应同步循环周期;1.2)选择分配所述同步循环周期内开启通道数最少的时隙给所述新开启通道,所述最少的时隙开启通道数加一;1.3)在所述最少的时隙使用对应语音编解码器处理该新开启通道。
2.根据权利要求1所述通道开启方法,其特征在于,所述时隙是一个时间片,DSP单芯片在每一时间片内按顺序询问每一通道。
3.根据权利要求2所述通道开启方法,其特征在于,所述时间片是各语音编解码器处理桢长的最大公约数。
4.根据权利要求1所述通道开启方法,其特征在于,所述通道进行统一编号,记录所述时隙和对应语音编解码器。
5.根据权利要求1所述通道开启方法,其特征在于,所述最少的时隙是一个。
6.根据权利要求1所述通道开启方法,其特征在于,所述最少的时隙是多个,任选其中之一作为最少的时隙。
7.根据权利要求1所述通道开启方法,其特征在于,所述语音编解码器是二种或二种以上,包括G711、G723、G728和G729语音编解码中的一种或多种。
8.根据权利要求1所述通道开启方法,其特征在于,该方法应用在VOIP语音处理系统中。
9.根据权利要求1所述通道开启方法,其特征在于,该方法应用在媒体网关、无线语音编解码处理系统中。
10.根据权利要求1所述通道开启方法,其特征在于,该方法应用在以一定时长为处理单位的多通道多语音编解码器结构的系统中。
全文摘要
本发明涉及一种基于DSP单芯片多通道多语音编解码器的通道开启方法,在每个该通道同步循环周期的具体时隙使用对应语音编解码器处理该通道,包括以下步骤根据新开启通道使用语音编解码器类型选择对应同步循环周期;选择分配所述同步循环周期内开启通道数最少的时隙给所述新开启通道,所述最少的时隙开启通道数加一;在所述最少的时隙使用对应语音编解码器处理该新开启通道。这种方法在循环计数周期P的各时隙平均分配对应通道,将各对应通道平均分配到时间片内,最大实现VoIP语音处理系统通道密度,能够对于任意语音编解码器组合进行实现,无需实时监测DSP芯片运算负荷,解决了传统语音编解码器调度中带来的运算能力瓶颈和复杂程度。
文档编号H03M7/30GK1972308SQ20061016196
公开日2007年5月30日 申请日期2006年12月8日 优先权日2006年12月8日
发明者马俊, 王欣, 王侃, 赵心宇 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1