在网络系统中播放存储语音的方法及其装置的制作方法

文档序号:7952084阅读:243来源:国知局
专利名称:在网络系统中播放存储语音的方法及其装置的制作方法
技术领域
本发明涉及语音播放技术领域,尤其是涉及一种在网络系统中播放存储语音的方法及其装置。
背景技术
目前,在IP网络系统中播放存储语音的技术在很多网络环境中已经得到了极为普遍的应用,如存储语音播放技术在基于IP的语音通信系统中(VoIP,Voice Over IP)、计算机语音集成(CTI,Computer Tone Intergrated)、IP呼叫中心或网络收音机等非常时尚的网络应用中都已经得到了广泛的部署,从而使得这些网络应用都能够将一些预存的语音文件通过网络系统播放给网络客户端。
通常情况下将大部分语音文件以MP3、WAV或WMA等格式预先存储在相应的网络服务器中,同时网络系统通常采用实时传输协议(RTP,Real-timeTransport Protocol)对语音媒体流进行传输;这样为了提高在网络系统中播放存储语音的有效性,需要首先对预先存储的语音文件进行语音编码处理,然后将语音编码处理后的语音数据作为RTP的负载传送到网络客户端。其中常用的语音编码方式包括G.711、G.723、G.728和gsm等多种方式,不同的语音编码方式可以分别支持不同的传输速率和语音质量。
现有技术中,在网络系统中进行播放存储语音的过程通常如下在网络系统中首先将语音文件以通常使用的波形文件WAV格式进行预先存储,在需要进行语音播放的时候,网络系统侧选择一种接收客户端能够支持的语音编码方式,然后按照所选择的语音编码方式将预先存储的WAV格式的语音文件读取出来进行实时的对应编码处理,最后将编码处理后的语音数据封装处理成为RTP形式进行传输,从而实现将预先存储的语音播放给网络客户端的目的。
但是采用上述在网络系统中播放存储语音的处理方式,却通常存在着如下的缺陷在需要进行语音播放的时候,需要对预先存储的语音文件进行实时语音编码处理,而在实际的应用环境中,实时进行语音编码处理是比较耗费网络系统处理资源的,尤其是在网络收音机或者IP呼叫中心网络应用中,一个集中服务器往往需要同时为多路网络客户端提供语音播放服务,而且有可能不同的网络客户端能够支持的语音编码方式是各不相同的,而且相互之间的播放进度也不同步,这样如果在语音播放过程中实时进行语音编码处理将会占用大量的网络系统处理资源,从而使得网络系统能够保证同时接收到语音的用户数量将大大降低。

发明内容
本发明要解决的技术问题在于提出一种在网络系统中播放存储语音的方法及其装置,以避免在存储语音的播放过程中实时语音编码处理占用网络系统的处理资源,使得网络系统保证更多的用户能够同时接收到播放语音。
为解决上述问题,本发明提出的技术方案如下一种在网络系统中播放存储语音的方法,包括步骤将同一语音内容分别基于不同的语音编码类型编码成为对应的语音编码数据预先在网络侧进行存储;后续网络侧通过与用户客户端进行交互获知用户客户端支持的语音编码类型;并根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据播放给用户客户端。
较佳地,将对同一语音内容分别基于不同语音编码类型编码的各个语音编码数据放置到基于资源交换文件格式框架的文件中预先在网络侧进行存储。
较佳地,网络侧通过会话初始协议信令、H.323信令或自定义信令和用户客户端进行会话交互,获知用户客户端支持的语音编码类型。
较佳地,网络侧在和用户客户端进行交互过程中,通过对用户客户端发来的数据包进行解析处理获知用户客户端支持的语音编码类型。
较佳地,所述根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据的过程具体包括预先在网络侧存储语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;网络侧根据用户客户端支持的语音编码类型在所述对应关系中索引到对应的地址偏移值;并根据索引到的地址偏移值查找到对应用户客户端支持的语音编码类型的语音编码数据。
较佳地,网络侧通过将语音编码数据封装成实时传输协议数据包的形式发送给用户客户端,实现将语音编码数据播放给用户客户端。
其中所述语音编码类型包括下述语音编码类型中的至少一种G.711语音编码类型;G.723语音编码类型;G.728语音编码类型;gsm语音编码类型。
一种在网络系统中播放存储语音的装置,包括存储单元,用于预先存储将同一语音内容分别基于不同的语音编码类型编码的各个语音编码数据;获知单元,用于网络侧通过与用户客户端进行交互获知用户客户端支持的语音编码类型;选择单元,用于根据所述获知单元获知的用户客户端支持的语音编码类型在所述存储单元存储的各个语音编码数据中选择相应语音内容的对应语音编码数据;播放单元,用于将所述选择单元选择的语音编码数据播放给用户客户端。
较佳地,所述选择单元具体包括存储子单元,用于预先存储语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;索引子单元,用于根据所述获知单元获知的用户客户端支持的语音编码类型在所述存储子单元存储的对应关系中索引到对应的地址偏移值;查找子单元,用于根据所述索引子单元索引到的地址偏移值在所述存储单元存储的各个语音编码数据中查找到对应用户客户端支持的语音编码类型的语音编码数据。
较佳地,所述播放单元具体包括封装子单元,用于将所述选择单元选择的语音编码数据封装成实时传输协议数据包;发送子单元,用于将所述封装子单元封装处理后的实时传输协议数据包发送给用户客户端,实现将语音编码数据播放给用户客户端。
本发明能够达到的有益效果如下本发明技术方案通过预先将基于同一语音内容的不同语音编码数据存储在网络系统侧,这样后续网络侧可以通过和用户客户端进行交互来获知用户客户端支持的语音编码类型,进而根据用户客户端支持的语音编码类型在预先存储的各个语音编码数据中查找到对应的语音编码数据,直接封装到RTP负载数据包中播放给用户客户端,而无需实时的进行语音编码转换处理,从而可以避免由于实时语音编码处理占用的网络系统处理资源,使得网络系统能够保证更多的用户同时接收到播放语音,增加了用户容量。


图1为本发明在网络系统中播放存储语音的方法的主要实现原理流程图;
图2为本发明方法在IP呼叫中心中进行实施的实施例处理流程图;图3为本发明在网络系统中播放存储语音的装置的主要组成结构框图;图4为本发明装置中选择单元的具体组成结构框图;图5为本发明装置中播放单元的具体组成结构框图。
具体实施例方式
本发明技术方案提出的主要目的是为了在网络系统播放预先存储的语音文件过程中,将实时语音编码处理过程避免掉,以防止实时语音编码处理占用网络系统过多的处理资源,从而保证能够接收到网络系统播放的语音的用户数量增加。为了达到上述目的,本发明技术方案的主要设计构思是首先定义一种语音文件保存格式,然后将所有待播放语音文件转换为本发明所定义的保存格式,后续在此保存格式的基础上进行快速生成网络播放语音数据包发送到用户接收端,其中本发明技术方案可以适用于所有的将存储语音文件生成RTP数据包进行传输的领域。
下面将结合各个附图对本发明技术方案的主要实现原理、具体实施过程及其对应的有益效果进行详细的阐述。
请参照图1,该图是本发明在网络系统中播放存储语音的方法的主要实现原理流程图,其主要实现过程如下步骤S10,首先将同一语音内容分别基于不同的语音编码类型编码成为对应的语音编码数据预先在网络侧进行存储;其中可以将对同一语音内容分别基于不同语音编码类型编码的各个语音编码数据放置到基于资源交换文件格式框架(RIFF,Resource Interchange File Format)的文件中预先在网络侧进行存储。
即这里首先对RIFF文件格式进行扩展,以形成本发明方案定义的新的语音文件保存格式,将表示同一语音内容但语音编码格式不相同的任意多个语音编码数据放置到这个扩展后的RIFF文件中。
其中一个RIFF文件可以由多个chunks组成,每个基本的chunk定义如下typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef DWORD FOURCC; //Four-character codetypedef FOURCC CKID; //Four-character-code chunk identifiertypedef DWORD CKSIZE; //32-bit unsigned sizetypedef struct{//Chunk structureCKID ckID;//Chunk type identifierCKSIZEckSize; //Chunk size field(size of ckData)BYTE ckData[ckSize]; //Chunk data}CK;
通常的RIFF语音文件定义如下(以WAVE语音文件为例)<WAVE-form>->
RIFF(′WAVE′<fmt-ck>//Format[<fact-ck>] //Fact chunk[<cue-ck>] //Cue points[<playlist-ck>] //Playlist[<assoc-data-list>] //Associated data list<wave-data>)//Wave data这里在RIFF文件中新定义一种chunk,用来描述本发明所提出的基于同一语音内容的各种语音编码数据列表,其中ckID等于“mct”,ckData由如下mctArray[n]表示typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef struct{ //语音编码格式
BYTE mctType;//语音编码类型BYTE mctMinLenth;//最小帧长度BYTE mctReserved[2]; //保留DWORD mctLocation;//语音编码数据的相对偏移位置}MCT;
metType为语音编码类型,与RTP的负载类型(PT,Payload Type)值一致;mctMinLenth 为该语音编码类型的最小帧长度;mctLocation 每种语音编码数据相对第一个语音编码数据的偏移量,第一个语音编码数据的偏移量为0;mctReserveed保留,作为后续扩展使用。
MCT mctArray[n];n表示本chunk所支持的语音编码类型个数。
本发明这里提出的基于同一语音内容的多种语音编码类型数据组成的多语音编码数据存储格式具体如下所示<WAVE-form>->RIFF((′WAVE′<mct-ck>
<fmt-ck>//type1 Format<wave-data> //type1 Wave data<fmt-ck>//type2 Format<wave-data> //type2 Wave data.......
<fmt-ck>//type n Format<wave-data> //type n Wave data)如上RIFF扩展文件结构所示,<mct-ck>中保存了所有n个mct结构;接下来的一组<fmt-ck>和<wave-data>用来表示基于一种语音编码类型的语音编码数据,这两个chunk表示与wave文件中定义相同,一个RIFF文件中可包含多组<fmt-ck>和<wave-data>。这样,按照该扩展格式即可以使一个RIFF文件中同时保存基于同一语音内容的任意多种语音编码数据。
步骤S20,后续网络侧通过与用户客户端进行交互来获知用户客户端支持的语音编码类型;其中网络侧可以通过会话初始协议(SIP,Session InitialProtocol)信令、H.323信令或自定义的信令和用户客户端进行会话交互,以获知用户客户端支持的语音编码类型;同时还可以在和用户客户端进行交互的过程中,通过对用户客户端发来的数据包进行解析处理来获知用户客户端支持的语音编码类型。
步骤S30,网络侧根据上述获知的用户客户端支持的语音编码类型来选择相应语音内容的对应语音编码数据,其中网络侧根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据的过程具体如下由上述扩展后的RIFF文件结构所示,已经预先在网络侧存储了语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;这样网络侧就可以根据上述获知的用户客户端支持的语音编码类型来在该些对应关系中索引到对应的地址偏移值,并根据索引到的地址偏移值来在数据库中查找到对应该用户客户端支持的语音编码类型的语音编码数据;然后网络侧将上述选择的语音编码数据播放给该用户客户端,其中网络侧可以通过将选择的语音编码数据封装成RTP数据包的形式发送给该用户客户端,从而实现将上述选择的语音编码数据播放给该用户客户端。
其中本发明上述方法中所提及的语音编码类型包括G.711语音编码类型、G.723语音编码类型、G.728语音编码类型或gsm语音编码类型等中的至少一种语音编码类型。
下面以IP呼叫中心网络播放存储语音文件为例对本发明上述方法的主要实施过程进行详细说明。请参照图2,该图是本发明方法在IP呼叫中心中进行实施的实施例处理流程图,在IP呼叫中心网络中,预先将待播放的语音文件基于不同的语音编码类型进行编码处理成不同的语音编码数据,将各个处理后的语音编码数据按照本发明上述所提出的RIFF文件保存格式在网络侧进行保存,下面将通过IP呼叫中心的网络播放实例来介绍整个语音播放流程。假设该IP呼叫中心包含IP电话终端、IP呼叫中心服务器两大部分,两者分别支持SIP协议;其中IP呼叫中心语音提示文件(即待网络播放的语音文件)保存在服务器中,基于上述基础条件的具体实施过程如下步骤S100,IP呼叫中心要播放语音文件给用户客户端时,打开对应的RIFF语音文件,并定位到mct-ck字段;步骤S110,IP呼叫中心服务器通过SIP信令和IP电话终端进行会话协商,获得IP电话终端与服务器进行会话所需的各个参数,如包括媒体通道地址、语音传输所需要的语音编码类型等等,然后根据协商结果在上述定位到的mct-ck字段中找到和IP电话终端匹配的语音编码类型所在的MCT结构;步骤S120,然后IP呼叫中心服务器根据上述查找到的MCT结构中的mctLocation字段值定位到对应该IP电话终端支持的语音编码类型的fmt-ck字段值和wave-data字段值;步骤S130,IP呼叫中心服务器在定位到的wave-data字段值中读取出整数倍个mctMinLenth字段值的数据封装到RTP负载数据包中;步骤S140,服务器判断是否将定位到的wave-data字段值中的数据读取完全,如果是,关闭该打开的RIFF语音文件,进而IP呼叫中心服务器将上述生成的RTP负载数据包传输给IP电话终端,实现将IP电话终端支持的语音编码类型对应的语音编码数据播放给该IP电话终端;否则返回继续执行步骤S130。
从上述实施过程可以看出本发明技术方案并没有进行复杂的实时语音编码处理,而只是在网络播放语音文件的过程中,仅从扩展后的RIFF文件中根据用户客户端支持的语音编码类型查找到对应的语音编码数据,并直接封装到RTP负载数据包中进行播放即可,因此大大节约了网络系统的处理资源。
综上所述,本发明技术方案通过将基于同一语音内容的不同语音编码数据存储到扩展后的RIFF文件中,这样在网络播放语音过程中,便可以根据用户客户端支持的语音编码类型从RIFF文件中读取到对应的语音编码数据,直接封装到RTP负载数据包中播放给用户客户端,而无需实时的进行语音编码转换处理,从而可以大大的节约网络系统播放服务器的处理资源,增加用户的容量;此外本发明这里所提出的语音文件保存格式和其他保存格式一样可以基于普通的语音播放器进行播放,比如基于MediaPlayer语音播放器进行播放等。
基于本发明上述提出的在网络系统中播放存储语音的方法的设计原理,本发明这里还提出了一种在网络系统中播放存储语音的装置,请参照图3,该图是本发明在网络系统中播放存储语音的装置的主要组成结构框图,其主要包括存储单元10、获知单元20、选择单元30和播放单元40,其中各个组成单元的主要作用如下存储单元10,主要用于预先存储将同一语音内容分别基于不同的语音编码类型编码的各个语音编码数据;获知单元20,主要用于网络侧通过与用户客户端进行交互来获知用户客户端支持的语音编码类型;选择单元30,主要用于根据上述获知单元20所获知的用户客户端支持的语音编码类型在上述存储单元10存储的各个语音编码数据中选择相应语音内容的对应语音编码数据;播放单元40,主要用于将上述选择单元30所选择出的语音编码数据播放给用户客户端。
请参照图4,该图是本发明装置中选择单元的具体组成结构框图,其中本发明装置中的选择单元30主要包括存储子单元301、索引子单元302和查找子单元303,各个组成部分的主要作用如下存储子单元301,用于预先存储语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;索引子单元302,用于根据上述获知单元20所获知的用户客户端支持的语音编码类型在上述存储子单元301存储的对应关系中索引到对应的地址偏移值;
查找子单元303,用于根据上述索引子单元302索引到的地址偏移值在上述存储单元10所存储的各个语音编码数据中查找到对应该用户客户端支持的语音编码类型的语音编码数据,播放单元40进而将查找子单元303所查找到的语音编码数据封装成RTP负载数据包的形式播放给用户客户端。
请参照图5,该图是本发明装置中播放单元的具体组成结构框图,其中本发明装置中的播放单元40具体包括封装子单元401和发送子单元402,其中各个组成单元的具体作用如下封装子单元401,用于将上述选择单元30所选择的语音编码数据封装成RTP负载数据包;发送子单元402,用于将上述封装子单元401封装处理后的RTP负载数据包发送给用户客户端,从而实现将选择单元30所选择的对应语音编码数据播放给用户客户端的目的。
此外本发明这里提出的在网络系统中播放存储语音的装置的其他具体技术实现细节和本发明上述提出的在网络系统中播放存储语音的方法的相应技术实现细节相同或相似,请参照上述方法中相关技术实现细节的具体描述,这里不再过多赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种在网络系统中播放存储语音的方法,其特征在于,包括步骤将同一语音内容分别基于不同的语音编码类型编码成为对应的语音编码数据预先在网络侧进行存储;后续网络侧通过与用户客户端进行交互获知用户客户端支持的语音编码类型;并根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据播放给用户客户端。
2.如权利要求1所述的方法,其特征在于,将对同一语音内容分别基于不同语音编码类型编码的各个语音编码数据放置到基于资源交换文件格式框架的文件中预先在网络侧进行存储。
3.如权利要求1所述的方法,其特征在于,网络侧通过会话初始协议信令、H.323信令或自定义信令和用户客户端进行会话交互,获知用户客户端支持的语音编码类型。
4.如权利要求1所述的方法,其特征在于,网络侧在和用户客户端进行交互过程中,通过对用户客户端发来的数据包进行解析处理获知用户客户端支持的语音编码类型。
5.如权利要求1所述的方法,其特征在于,所述根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据的过程具体包括预先在网络侧存储语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;网络侧根据用户客户端支持的语音编码类型在所述对应关系中索引到对应的地址偏移值;并根据索引到的地址偏移值查找到对应用户客户端支持的语音编码类型的语音编码数据。
6.如权利要求1所述的方法,其特征在于,网络侧通过将语音编码数据封装成实时传输协议数据包的形式发送给用户客户端,实现将语音编码数据播放给用户客户端。
7.如1~6任一权利要求所述的方法,其特征在于,所述语音编码类型包括下述语音编码类型中的至少一种G.711语音编码类型;G.723语音编码类型;G.728语音编码类型;gsm语音编码类型。
8.一种在网络系统中播放存储语音的装置,其特征在于,包括存储单元,用于预先存储将同一语音内容分别基于不同的语音编码类型编码的各个语音编码数据;获知单元,用于网络侧通过与用户客户端进行交互获知用户客户端支持的语音编码类型;选择单元,用于根据所述获知单元获知的用户客户端支持的语音编码类型在所述存储单元存储的各个语音编码数据中选择相应语音内容的对应语音编码数据;播放单元,用于将所述选择单元选择的语音编码数据播放给用户客户端。
9.如权利要求8所述的装置,其特征在于,所述选择单元具体包括存储子单元,用于预先存储语音编码类型和能够查找到对应该语音编码类型的语音编码数据的地址偏移值之间的对应关系;索引子单元,用于根据所述获知单元获知的用户客户端支持的语音编码类型在所述存储子单元存储的对应关系中索引到对应的地址偏移值;查找子单元,用于根据所述索引子单元索引到的地址偏移值在所述存储单元存储的各个语音编码数据中查找到对应用户客户端支持的语音编码类型的语音编码数据。
10.如权利要求8所述的装置,其特征在于,所述播放单元具体包括封装子单元,用于将所述选择单元选择的语音编码数据封装成实时传输协议数据包;发送子单元,用于将所述封装子单元封装处理后的实时传输协议数据包发送给用户客户端,实现将语音编码数据播放给用户客户端。
全文摘要
本发明公开了一种在网络系统中播放存储语音的方法,包括将同一语音内容分别基于不同的语音编码类型编码成为对应的语音编码数据预先在网络侧进行存储;后续网络侧通过与用户客户端进行交互获知用户客户端支持的语音编码类型;并根据用户客户端支持的语音编码类型选择相应语音内容的对应语音编码数据播放给用户客户端。相应的本发明还提出了一种在网络系统中播放存储语音的装置。本发明可以避免在存储语音的播放过程中实时语音编码处理占用网络系统的处理资源,使得网络系统保证更多的用户能够同时接收到播放语音。
文档编号H04L29/06GK1852110SQ200610003578
公开日2006年10月25日 申请日期2006年2月15日 优先权日2006年2月15日
发明者刘利锋, 于锋, 刘廷永, 郑志彬 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1