一种用于放音服务器的定时器以及定时控制方法

文档序号:7963187阅读:221来源:国知局
专利名称:一种用于放音服务器的定时器以及定时控制方法
技术领域
本发明涉及放音服务器的放音以及放音定时,特别涉及一种用于放音服务器的定时器以及定时控制方法、放音服务器及其放音方法。
背景技术
放音功能在VoIP语音业务中广泛应用,目前大多数的语音网关、带语音功能的路由器基本都具有放音功能,例如提供用来进行话费查询、修改密码等与用户交互的提示音,提供彩铃业务中的回铃音等。例如,在
公开日为2006年1月25日、公开号为CN1725790、名称为“一种播放彩色回铃音的方法”的中国专利申请中公开了一种向主叫用户播放彩色回铃音的方法,在该方法中,预先设置一定的时间段以用于播放回铃音。此外,在
公开日为2006年2月22日、公开号为CN1738338、名称为“VoIP语音通信系统的回铃音和提示音实现方法及装置”中国专利申请中公开了一种在VoIP系统中实现回铃音和提示音的方法。
目前,一些VoIP设备使用定时器来实现放音功能,即,对于每一路放音都启动一个定时器,根据国际电联ITU G.711、G.723、G.729标准等编码的速率每隔一定时间从文件或内存中读取一个语音包,写到DSP(数据信号处理器)或以RTP(实时传输协议)语音包的方式发送到其他VoIP设备上,从而实现放音功能。例如,在
公开日为2004年12月8日、公开号为CN1553666、名称为“一种语音网关通讯设备和方法”的中国专利申请中公开了语音网关的硬件实现及DSP对RTP语音包的放音处理。此外,在IETF(互联网工程任务组,Internet Engineering Task Force)组织制定的RFC(请求注解)1889文档中对RTP(实时传输协议)进行了详尽的描述,RTP是针对因特网上多媒体数据流的一个传输协议,其为某些具有实时属性的数据(例如交互式的音频和视频)提供了端到端的传输服务。
在现有技术中,利用定时器实现上述放音功能的现有放音服务器存在如下缺点首先,定时器超时时间设置的很短,每次超时只发送一个语音包,由此引起定时器超时过于频繁、占用大量系统资源的问题;其次,每一路放音均需要单独启动一个定时器,如果在大中型网关中同时对大量呼叫进行放音,则会占用大量语音设备资源,效率不高,并限制可同时支持放音的路数。

发明内容
本发明的一个目的在于通过延长定时器超时时间,并在每次超时时发送多个语音包,来节省系统资源。
本发明的另一个目的在于通过利用一个定时器同时处理多路放音,来提高放音效率。
为实现上述上述目的,本发明提供一种用于放音服务器的定时控制方法,用于进行放音定时的控制,该方法包括如下步骤确定一个RTP语音包的放音时间;以及设置超时间隔时间T,使该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
上述定时控制方法中,一个RTP语音包的放音时间通过将每个RTP语音包包含的样本数除以语音采样率而得到。
上述定时控制方法中,每个RTP语音包包含的样本数由放音服务器通过媒体协商而确定的编码模式决定。
为实现上述目的,本发明还提供一种用于放音服务器的定时器,用于进行放音定时,该定时器包括定时器处理模块,该定时器处理模块连接到该放音服务器,用于设置该定时器的超时间隔时间T,其中该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
上述定时器中,该定时器处理模块具有计算装置,用于在放音未到达超时间隔时间T时继续计时,在放音到达超时间隔时间时间T时根据所设置的超时间隔时间T和每个RTP语音包的放音时间来计算第i路当前次发送的RTP语音包个数,以供所述放音服务器按照所计算的RTP语音包个数进行放音。
上述定时器中,该定时器处理模块具有判断装置,用于在判断将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值是否为整数,并在其不是整数时根据如下公式来计算第i路当前次发送的RTP语音包个数NiNi≥Navi×Ci-Sumi其中,Navi表示平均每次定时器超时发送的RTP语音包个数,其为将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值;Ci表示第i路放音开始时到当前定时器超时的次数,Sumi表示第i路放音开始时到上次定时器超时总共发送的RTP个数;i表示路数。
为实现上述目的,本发明还提供一种用于放音服务器的放音方法,该放音服务器具有定时器,包括如下步骤a.利用定时器设置放音的超时间隔时间T,使该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数;b.根据该超时间隔时间T和每个RTP语音包的放音时间来计算第i路当前次发送的RTP语音包个数Ni;以及c.在该超时间隔时间T内读取并发送所述Ni个RTP语音包进行放音。
上述放音方法中,所述步骤b进一步包括判断将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值是否为整数,若为整数,则继续进行步骤c;若不为整数,则在根据如下公式来计算第i路当前次发送的RTP语音包个数Ni后执行步骤cNi≥Navi×Ci-Sumi其中,Navi表示平均每次定时器超时发送的RTP语音包个数,其为将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值;Ci表示第i路放音开始时到当前定时器超时的次数,Sumi表示第i路放音开始时到上次定时器超时总共发送的RTP个数;i表示路数。
上述放音方法中,所述步骤c进一步包括判断每一路放音的开始放音时间是否位于该超时间隔时间T的整数倍位置处,若判断结果为是,则在所述开始放音时间发送语音包;若判断结果为否,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处发送语音包。
为实现上述目的,本发明还提供一种放音服务器,其具有如上所述的定时器。
为实现上述目的,本发明还提供一种放音服务器,其具有定时器,该放音服务器还具有定时器处理模块,该定时器处理模块连接到该定时器,用于设置该定时器的超时间隔时间T,其中该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
上述放音服务器还包括用于控制放音的放音控制模块,该放音控制模块连接到该定时器,用于判断每一路放音的开始放音时间是否位于该超时间隔时间T的整数倍位置处,若判断结果为是,则在所述开始放音时间发送语音包;若判断结果为否,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处发送语音包。
通过采用根据本发明的定时器、定时控制方法、放音服务器以及放音方法,可以在不添加硬件的情况下利用一个定时器同时支持更多的放音路数,放音效果并未受到影响,同时节省系统资源、提高放音效率。


图1是示出根据本发明的放音服务器的示意性系统框图;图2是示出根据本发明的放音方法的示意性流程图;以及图3是示出根据本发明的放音方法的一个实例的流程图。
具体实施例方式
首先简要说明放音的基本过程。放音服务器与客户端(语音网关或带有放音功能的路由器)进行媒体协商,确定放音的编码模式、双方的IP和UDP(用户数据报协议)端口号、每个RTP语音包的特性等等,从而在与语音媒体有关的属性方面通过协商达成一致。放音服务器通过文件系统读取一段语音数据,即采用某种编码模式的音频数据,然后把这段语音数据以RTP(实时传输协议)的格式通过IP网络发送到客户端,客户端收到RTP(脉冲编码调制)语音包后将其传送给相应的处理模块处理,将其中的语音信息还原成PCM语音信号,接着通过客户终端(如电话机)放音。
图1示出根据本发明的放音服务器的示意性系统框图。
根据本发明,使用定时器实现多路高效放音的放音服务器包括定时器、数据库模块、读写模块、RTP发送模块以及放音控制模块。
定时器连接到放音控制模块,用于进行放音定时。数据库模块用于存储RTP语音包。读写模块连接到数据库模块,用于从数据库模块中读取RTP语音包。放音控制模块连接到读写模块,用于控制与多个客户端进行媒体协商,通过确定编码模式而决定每一路中每个RTP语音包包含的样本数Mi(Mi表示第i路中每个RTP语音包包含的样本数);以及用于控制读写模块的读写操作。RTP发送模块连接到读写模块和放音控制模块,用于为RTP语音包设置时间戳,并发送RTP语音包。
定时器中含有定时器处理模块,该定时器处理模块是本发明利用一个定时器实现多路放音的关键模块,其具有计算装置和判断装置,用于设置定时器的超时间隔时间T、判断是否到达超时间隔时间T以及基于超时间隔时间T计算每一路每次发送RTP语音包的个数Ni(Ni表示第i路每次发送RTP语音包的个数),并将Ni发送到放音控制模块。该定时器处理模块也可与定时器分开设置并与定时器相连接,而不限于内置于定时器中。
定时器的超时间隔时间T是一个很灵活的参数,可以根据接收RTP语音包的放音设备的缓存、放音服务器的处理能力以及网络情况等来决定。例如,对于放音服务器而言,定时器的超时间隔时间越长越好,这样系统切换所耗资源会越少;然而对于网络和放音设备而言,定时器的超时间隔时间越短越好。根据本发明,每当到达定时器的超时间隔时间T时,则一次发送多个RTP语音包,因此,超时间隔时间T至少应大于一个RTP语音包的放音时间M/S,即T>M/S,其中M为每个RTP语音包包含的样本数,S为语音采样率;并且T不大于Ni个RTP语音包所需要的放音时间,其中Ni为第i路每次发送RTP语音包的个数。一般地,可以根据经验值将T设置为30毫秒≤T≤3秒,优选地将T设为1~2秒。此外,在公用电话系统中,语音采样率S为8kHz。
在本发明中,基于以下公式(1)计算第i路每次发送RTP语音包的个数NiNi≥T/(Mi/S) 公式(1)
其中T表示定时器的超时间隔时间,Mi表示第i路每个RTP语音包包含的样本数,S表示语音采样率,i表示路数。
在根据上述公式(1)计算的Ni不为整数的情况下,根据下述两个公式计算第i路当前次放音需要发送的RTP个数NiNavi=T/(Mi/S) 公式(2)Ni≥Navi×Ci-Sumi公式(3)其中,Navi表示平均每次定时器超时发送的RTP语音包个数,T表示定时器的超时间隔时间,Mi表示第i路每个RTP语音包包含的样本数,S表示语音采样率,Ci表示第i路放音开始时到当前定时器超时的次数,Sumi表示第i路放音开始时到上次定时器超时总共发送的RTP个数,Ni表示第i路当前次放音需要发送的RTP个数,i表示路数。
读写模块根据定时器处理模块计算出的Ni,从数据库中分别为每一路读取Ni个RTP语音包。然后,RTP发送模块分别发送每一路的Ni个RTP语音包。
优选地,当定时器处理模块判断到达定时间隔时间T时,读写模块从数据库模块中分别为每一路读取Ni个RTP语音包,并分别对每一路的Ni个RTP语音包进行编组。然后,RTP发送模块对所述多个编组中每一个编组的Ni个RTP语音包按照先后顺序设置时间戳,并分别发送所述多个编组。在此,需要说明,根据RFC1889文档中的定义,RTP数据包中包括一个32比特的数据域“timestamp”,称为时标或时间戳。时间戳反映RTP数据包中首字节的采样时间。RTP发送模块可以对同一RTP语音包编组中的每个RTP语音包填充正确的时间戳,然后无需考虑接收端的情况和实际放音的速度,将该编组中的所有RTP语音包一起发出。客户端接收到RTP语音包编组后,可以根据时间戳对该编组中的RTP语音包进行排序,从而能够正确地播放多个语音包的语音。
另外,当利用一个定时器同时处理多路放音时可能会遇到如下三种典型情况(1)如果多个客户端放音的开始时间相同,采用的编码模式相同,也就是说对于多个客户端,每次发送RTP语音包的个数彼此相同,则到达定时器超时间隔时间T时,只需从数据库模块中分别为每一路读取相同数量的RTP语音包,并分别发送。
(2)如果多个客户端放音的开始时间相同,而采用的编码模式不同,那么根据上述的公式(1)分别计算每一路每次发送RTP语音包的数量,然后从数据库模块中分别为每一路读取相应数量个RTP语音包,并分别发送。
(3)如果多个客户端放音的开始时间不同,例如定时器超时间隔时间为1秒,一个客户端已经开始放音且放了5.5秒,这时如果有一个新的呼叫需要放音,则可以把这路放音的起点定在6秒处(也就是0.5秒后定时器的超时时间),这样就可以把新加入的这一路放音处理放到同一个定时器中。
因此,鉴于以上几种情况,在放音控制模块中还包括判断模块(未示出),用于判断每一路放音的开始放音时间是否位于超时间隔时间T的整数倍位置处。当判断模块判断出每一路放音的开始放音时间都位于超时间隔时间T的整数倍位置处时,放音控制模块控制上述其他模块进行操作。当判断模块判断某一路放音的开始放音时间不位于超时间隔时间T的整数倍位置处时,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处,然后放音控制模块控制上述其他模块进行操作。
图2是示出根据本发明的放音方法的示意性流程图。
在步骤S1,设置定时器的超时间隔时间T,其中超时间隔时间T至少应大于一个RTP语音包的放音时间M/S,即T>M/S,其中M为每个RTP语音包包含的样本数,S为语音采样率;并且T不大于Ni个RTP语音包所需要的放音时间,其中Ni为第i路每次发送RTP语音包的个数,例如可以根据经验值取30毫秒≤T≤3秒。在步骤S2,基于超时间隔时间T,计算第i路每次发送RTP语音包的个数Ni。在步骤S3,每当到达超时间隔时间T时,分别读取并发送第i路的Ni个RTP语音包。
其中,在步骤S2,可以基于如下公式计算第i路每次发送RTP语音包的个数Ni,即Ni≥[T/(Mi/S)]。
在步骤S3,可以分别为第i路读取Ni个RTP语音包,并分别对第i路的Ni个RTP语音包进行编组;以及按照先后顺序对每个编组所包含的Ni个RTP语音包设置时间戳,并分别发送各个编组。
此外,可选地,在步骤S1和步骤S2之间还可以包括判断每一路放音的开始放音时间是否位于超时间隔时间T的整数倍位置处的步骤。当判断每一路放音的开始放音时间都位于超时间隔时间T的整数倍位置处时,继续执行所述步骤S2。当判断某一路的开始放音时间不位于超时间隔时间T的整数倍位置处时,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处,然后继续执行步骤S2。
下面,举出根据本发明的放音方法的一个具体实例。在图3中示出根据本发明放音方法的一个实例的流程图。
在步骤S11,定时器中的定时器处理模块设置定时器的超时间隔时间T,其中30毫秒≤T≤3秒。
在步骤S12,放音服务器分别与多个客户端进行媒体协商,确定每一路的编码模式,并从而决定每一路每个RTP语音包包含的样本数Mi。
在步骤S13,定时器开始计时。
在步骤S14,定时器中的定时器处理模块判断是否到达超时间隔时间T。
在步骤S15,如果未到达超时间隔时间T,则继续计时;如果到达超时间隔时间T,则定时器处理模块根据超时间隔时间T、语音采样率S和每一路每个RTP语音包包含的样本数Mi来计算每一路每次发送RTP语音包的个数Ni,基于如下公式进行计算Ni≥[T/(Mi/S)],即Ni大于等于对T/(Mi/S)取整,i表示路数。
在步骤S16,读写模块分别为每一路读取Ni个RTP语音包,并各自组成一个编组。
在步骤S17,RTP发送模块按照先后顺序对每个编组所包含的Ni个RTP语音包设置时间戳。
在步骤S18,RTP发送模块分别发送多个编组;在步骤S19,判断放音控制模块是否指令停止读取RTP语音包。如果判断为否,则返回到步骤S13;如果判断为是,则结束。
综上所述,根据本发明的使用定时器实现多路高效放音的放音服务器及方法,可以通过延长定时器超时时间,在每次超时时发送多个语音包,并利用一个定时器同时处理多路放音,来节省系统资源并提高放音效率。
以上所述仅为本发明的优选实施例,并非用来限定本发明。在本发明权利要求范围内所作的各种修改和变形都将包含在本发明的保护范围中。
权利要求
1.一种用于放音服务器的定时控制方法,用于进行放音定时的控制,其特征在于,该方法包括如下步骤确定一个RTP语音包的放音时间;以及设置超时间隔时间T,使该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
2.如权利要求1所述的定时控制方法,其特征在于,一个RTP语音包的放音时间通过将每个RTP语音包包含的样本数除以语音采样率而得到。
3.如权利要求2所述的定时控制方法,其特征在于,每个RTP语音包包含的样本数由放音服务器通过媒体协商而确定的编码模式决定。
4.一种用于放音服务器的定时器,用于进行放音定时,其特征在于,该定时器包括定时器处理模块,该定时器处理模块连接到该放音服务器,用于设置该定时器的超时间隔时间T,其中该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
5.如权利要求4所述的定时器,其特征在于,该定时器处理模块具有计算装置,用于在放音未到达超时间隔时间T时继续计时,在放音到达超时间隔时间时间T时根据所设置的超时间隔时间T和每个RTP语音包的放音时间来计算第i路当前次发送的RTP语音包个数,以供所述放音服务器按照所计算的RTP语音包个数进行放音。
6.如权利要求5所述的定时器,其特征在于,该定时器处理模块具有判断装置,用于在判断将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值是否为整数,并在其不是整数时根据如下公式来计算第i路当前次发送的RTP语音包个数NiNi≥Navi×Ci-Sumi其中,Navi表示平均每次定时器超时发送的RTP语音包个数,其为将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值;Ci表示第i路放音开始时到当前定时器超时的次数,Sumi表示第i路放音开始时到上次定时器超时总共发送的RTP个数;i表示路数。
7.一种用于放音服务器的放音方法,该放音服务器具有定时器,其特征在于,包括如下步骤a.利用定时器设置放音的超时间隔时间T,使该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数;b.根据该超时间隔时间T和每个RTP语音包的放音时间来计算第i路当前次发送的RTP语音包个数Ni;以及c.在该超时间隔时间T内读取并发送所述Ni个RTP语音包进行放音。
8.如权利要求7所述的放音方法,其特征在于,所述步骤b进一步包括判断将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值是否为整数,若为整数,则继续进行步骤c;若不为整数,则在根据如下公式来计算第i路当前次发送的RTP语音包个数Ni后执行步骤cNi≥Navi×Ci-Sumi其中,Navi表示平均每次定时器超时发送的RTP语音包个数,其为将超时间隔时间时间T除以每个RTP语音包的放音时间所得的值;Ci表示第i路放音开始时到当前定时器超时的次数,Sumi表示第i路放音开始时到上次定时器超时总共发送的RTP个数;i表示路数。
9.如权利要求7所述的放音方法,其特征在于,所述步骤c进一步包括判断每一路放音的开始放音时间是否位于该超时间隔时间T的整数倍位置处,若判断结果为是,则在所述开始放音时间发送语音包;若判断结果为否,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处发送语音包。
10.一种放音服务器,其具有定时器,其特征在于,该放音服务器还具有定时器处理模块,该定时器处理模块连接到该定时器,用于设置该定时器的超时间隔时间T,其中该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。
11.一种放音服务器,其特征在于,具有如权利要求4-6任一项所述的定时器。
12.如权利要求11所述的放音服务器,其特征在于,还包括用于控制放音的放音控制模块,该放音控制模块连接到该定时器,用于判断每一路放音的开始放音时间是否位于该超时间隔时间T的整数倍位置处,若判断结果为是,则在所述开始放音时间发送语音包;若判断结果为否,则将该路放音的开始放音时间延迟到下一次定时器的超时间隔时间处发送语音包。
全文摘要
本发明提供一种用于放音服务器的定时器以及定时控制方法,该定时控制方法包括确定一个RTP语音包的放音时间;以及设置超时间隔时间T,使该超时间隔时间T至少大于一个RTP语音包的放音时间,并且不大于Ni个RTP语音包所需要的放音时间,其中Ni为每路每次发送的RTP语音包个数且Ni大于1,i表示路数。本发明通过延长定时器超时时间,在每次超时时发送多个语音包,并可利用一个定时器同时处理多路放音,可以节省系统资源并提高放音效率。
文档编号H04M11/10GK1905459SQ20061009102
公开日2007年1月31日 申请日期2006年9月8日 优先权日2006年9月8日
发明者宋海宾 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1