CN104702576B - 语音传输方法、装置和语音服务系统 - Google Patents
语音传输方法、装置和语音服务系统 Download PDFInfo
- Publication number
- CN104702576B CN104702576B CN201310661738.8A CN201310661738A CN104702576B CN 104702576 B CN104702576 B CN 104702576B CN 201310661738 A CN201310661738 A CN 201310661738A CN 104702576 B CN104702576 B CN 104702576B
- Authority
- CN
- China
- Prior art keywords
- voice
- request message
- speech data
- data fragment
- voice request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种语音传输方法、装置和语音服务系统,属于通信技术领域。所述方法包括:接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有语音流中的一个语音数据片段、偏移位置和数据长度;根据语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,语音响应报文携带有期望偏移位置和期望数据长度;将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送。本发明解决了因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种语音传输方法、装置和语音服务系统。
背景技术
随着语音服务技术的成熟与进步,许多应用程序都提供了语音服务的功能。语音服务系统通常包括终端和服务器。
以语音识别为例,终端向服务器发送携带有待识别的语音数据的语音请求;对应地,服务器识别语音数据后向终端反馈携带有识别结果的语音响应。为了缩短服务器对语音请求的响应时间,流式传输模式是一种较为优选的语音传输方式。在流式传输模式下,一个语音流的传输和识别并非由一次语音请求完成,而是按照一定规则将整个语音流分割成若干个语音数据片段,在用户说话的同时终端就开始逐个将携带有语音数据片段的语音请求发送给服务器进行语音识别。这样就将终端与服务器之间进行语音传输的时间与用户说话的时间进行了复用,也即在用户说话时服务器就已经开始进行语音识别,因此显著缩短了服务器对语音请求的响应时间。
请参考图1,其示出了一种典型的流式传输模式下终端和服务器之间进行语音传输的流程图。在对一个语音流进行识别的过程中,将该语音流分割成3个语音数据片段,终端先后3次向服务器发送了3个语音请求报文,且第3个语音请求报文中包含请求结束标识;对应地,服务器先后3次向终端反馈了3个语音响应报文,且第3个语音响应报文中包含对整个语音流的识别结果。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:随着移动终端的普及,由于移动终端所使用的是移动网络或者无线网络,而移动网络或者无线网络的网络环境相对较差,移动终端与服务器之间采用流式传输模式进行语音传输时会出现丢包、重复和乱序的问题,这就会导致对语音流的处理结果不准确甚至无法处理。
发明内容
为了解决现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确甚至无法处理的问题,本发明实施例提供了一种语音传输方法、装置和语音服务系统。所述技术方案如下:
第一方面,提供了一种语音传输方法,用于服务器中,所述方法包括:
接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有所述语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
第二方面,提供了一种语音传输方法,用于终端中,所述方法包括:
向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
根据所述语音响应报文决策所述下一个语音请求报文的发送。
第三方面,提供了一种语音传输装置,用于服务器中,所述装置包括:
请求接收模块,用于接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有所述语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
响应生成模块,用于对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
响应反馈模块,用于将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
第四方面,提供了一种语音传输装置,用于终端中,所述装置包括:
请求发送模块,用于向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
响应接收模块,用于接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
请求决策模块,用于根据所述语音响应报文决策所述下一个语音请求报文的发送。
第五方面,提供了一种语音服务系统,所述系统包括服务器和终端;
所述服务器包括如第三方面所述的语音传输装置;
所述终端包括如第四方面所述的语音传输装置。
本发明实施例提供的技术方案带来的有益效果是:
对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种典型的流式传输模式下终端和服务器之间进行语音传输的流程图;
图2是本发明实施例提供的语音传输方法所涉及的一种实施环境的结构示意图;
图3是本发明一个实施例提供的语音传输方法的方法流程图;
图4是在正常情况下语音传输的流程图;
图5A是本发明另一实施例提供的语音传输方法的方法流程图;
图5B是本发明另一实施例提供的语音传输方法中步骤502的子步骤流程图;
图5C是在语音请求报文发生重复时语音传输的流程图;
图5D是在语音请求报文发生丢包时语音传输的流程图;
图5E是在语音请求报文发生乱序时语音传输的流程图;
图5F是在语音请求报文和语音响应报文均发生丢包时语音传输的流程图;
图6A是本发明再一实施例提供的语音传输方法的方法流程图;
图6B是本发明再一实施例提供的语音传输方法中步骤603的子步骤流程图;
图6C是本发明所涉及的一种语音传输的流程图;
图7是本发明一个实施例提供的语音传输装置的结构方框图;
图8是本发明另一实施例提供的语音传输装置的结构方框图;
图9是本发明一个实施例提供的语音服务系统的结构方框图;
图10是本发明一个实施例提供的服务器的结构示意图;
图11是本发明一个实施例提供的终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图2,其示出了本发明实施例提供的语音传输方法所涉及的一种实施环境的结构示意图。该实施环境包括终端220和服务器240。
终端220可以是手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机和台式计算机等等。
终端220与服务器240之间可以通过无线网络或者有线网络相连。
服务器240可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
当然,通常情况下服务器240还可以包括语音接入设备(图中未示出),终端220和服务器240之间通过语音接入设备建立连接,实现终端和服务器之间的通信。
请参考图3,其示出了本发明一个实施例提供的语音传输方法的方法流程图,该语音传输方法应用于图2所示的实施环境中。该语音传输方法包括如下步骤:
步骤302,终端向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度。
对应地,服务器接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有语音流中的一个语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度。
步骤304,对于每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于该语音请求报文的语音响应报文,语音响应报文携带有期望偏移位置和期望数据长度,期望偏移位置是服务器期望在下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置,期望数据长度是服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度。
步骤306,服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送。
对应地,终端接收服务器反馈的对应于语音请求报文的语音响应报文,语音响应报文是服务器根据语音请求报文和已经接收到的对应于语音流的其它语音请求报文生成的,语音响应报文包括期望偏移位置和期望数据长度,期望偏移位置是服务器期望在下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置,期望数据长度是服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度。
步骤308,终端根据语音响应报文决策下一个语音请求报文的发送。
其中,上述步骤302和步骤308可以单独实现成为终端侧的语音传输方法,上述步骤304和步骤306可以单独实现成为服务器侧的语音传输方法。
综上所述,本实施例提供的语音传输方法,对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
在本发明实施例中,终端与服务器之间进行语音传输时,终端发送的语音请求报文中涉及的参数以及服务器反馈的语音响应报文中涉及的参数说明如下:
语音请求报文中涉及的参数如下表-1所示:
表-1
其中,Speech stream data是指语音数据片段;Offset是指偏移位置,用于表示语音数据片段在整个语音流中的偏移位置;Len是指数据长度,用于表示语音数据片段的数据长度;Is_end是指请求结束标识,用于表示语音请求报文中携带的语音数据片段是否为语音流中的最后一个片段,比如Is_end=1表示是,Is_end=0表示否。
语音响应报文中涉及的参数如下表-2所示:
表-2
其中,Ret是指处理情况标识,用于表示语音请求报文是否处理成功,比如成功返回0,否则返回错误码;Act_offset是指期望偏移位置,用于表示服务器期望在下一个语音请求报文中接收到的语音数据片段在整个语音流中的偏移位置;Ack_len是指期望数据长度,用于表示服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度;Recognition results是指语音流的处理结果,比如Results=XXX。
在对本发明实施例提供的语音传输方法在对语音传输时出现的丢包、重复或者乱序的情况进行处理的详细介绍和说明之前,首先介绍在正常情况下,也即不出现丢包、重复或者乱序的情况下语音传输的处理流程。请结合参考图4,其示出了在正常情况下语音传输的流程图。假设终端将整个语音流分为三个语音数据片段,也即终端分别在Step1、Step3和Step5按序向服务器发送了三个语音请求报文;对应地,服务器分别在Step2、Step4和Step6反馈了与该三个语音请求报文分别一一对应的3个语音响应报文。
其中,终端在Step1发送的第1个语音请求报文携带有第一个语音数据片段Speechstream data1(图中未示出)、偏移位置Offset=0、数据长度Len=100以及请求结束标识Is_end=0。由于第1个语音请求报文携带的语音数据片段位于整个语音流中的起始位置,所以Offset=0;Len=100是说明该第1个语音请求报文携带的语音数据片段的数据长度为100;而Is_end=0表示第1个语音请求报文中携带的语音数据片段不是语音流中的最后一个片段。如图4右侧所示,服务器从第1个语音请求报文中接收到的第一个语音数据片段为从偏移位置0至99的语音数据片段。
终端在Step3发送的第2个语音请求报文携带有第二个语音数据片段Speechstream data2(图中未示出)、偏移位置Offset=100、数据长度Len=100以及请求结束标识Is_end=0。由于第2个语音请求报文携带的语音数据片段在语音序列中是紧接着第1个语音请求报文携带的语音数据片段排列的,第1个语音请求报文携带的语音数据片段从偏移位置0排列至99,所以第2个语音请求报文的Offset=100;Len=100是说明该第2个语音请求报文携带的语音数据片段的数据长度仍为100;而Is_end=0表示第2个语音请求报文中携带的语音数据片段不是语音流中的最后一个片段。如图4右侧所示,服务器从第2个语音请求报文中接收到的第二个语音数据片段为从偏移位置100至199的语音数据片段,结合第一个语音数据片段,总共为从偏移位置0至199的语音数据片段。
以此类推,终端在Step5发送的第3个语音请求报文中Offset=200;而Len=100是说明该第3个语音请求报文携带的语音数据片段的数据长度仍为100。与之前两个语音请求报文所不同的是,第3个语音请求报文中的请求结束标识Is_end=1,说明该第3个语音请求报文中携带的语音数据片段是语音流中的最后一个片段。如图4右侧所示,服务器从第3个语音请求报文中接收到的第三个语音数据片段为从偏移位置200至299的语音数据片段,结合前两个语音数据片段,总共为从偏移位置0至299的语音数据片段。
服务器在Step2反馈的第1个语音响应报文是对应于第1个语音请求报文做出的响应。第1个语音响应报文包含处理情况标识Ret=0、期望偏移位置Act_offset=100以及期望数据长度Ack_len=0。由于第1个语音请求报文中的语音数据片段位于整个语音流中的起始位置,且Offset=0,Len=100,也即第一个语音数据片段从偏移位置0向后排列至99。所以,第1个语音响应报文的期望偏移位置Act_offset=100,表明服务器期望下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置为100。另外,在正常情况下,期望数据长度Ack_len设置为预定值0。
服务器在Step4反馈的第2个语音响应报文是对应于第2个语音请求报文做出的响应。第2个语音响应报文包含处理情况标识Ret=0、期望偏移位置Act_offset=200以及期望数据长度Ack_len=0。由于第2个语音请求报文中的Offset=100且Len=100,也即第二个语音数据片段从偏移位置100向后排列至199。所以,第2个语音响应报文的期望偏移位置Act_offset=200,表明服务器期望下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置为200。
服务器在Step6反馈的第3个语音响应报文是对应于第3个语音请求报文做出的响应。第3个语音响应报文包含处理情况标识Ret=0、期望偏移位置Act_offset=300、期望数据长度Ack_len=0以及语音流的处理结果Results=XXX。由于第3个语音请求报文中的Offset=200且Len=100,也即第三个语音数据片段从偏移位置200向后排列至299。所以,第3个语音响应报文的期望偏移位置Act_offset=300,表明服务器期望下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置为300。另外,由于第3个语音请求报文携带的请求结束标识Is_end=1,说明该第3个语音请求报文中携带的语音数据片段是语音流中的最后一个片段,所以第3个语音响应报文需要携带有语音流的处理结果Results=XXX。
下面,分别从服务器侧和终端侧对本发明实施例提供的语音传输方法进行详细介绍和说明。
请参考图5A,其示出了本发明另一实施例提供的语音传输方法的方法流程图,该语音传输方法应用于图2所示的实施环境的服务器侧。该语音传输方法包括如下步骤:
步骤501,接收终端依次发送的至少一个语音请求报文。
对于一个语音流来讲,终端会将该语音流切割为若干个语音数据片段,然后顺序携带在不同的语音请求报文中发送。对应地,服务器接收终端依次发送的至少一个语音请求报文。如图4所示,每个语音请求报文携带有语音流中的一个语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度。
可选地,每个语音请求报文还可以携带有请求结束标识。比如,请求结束标识Is_end=1表示语音请求报文中携带的语音数据片段为语音流中的最后一个片段;Is_end=0表示语音请求报文中携带的语音数据片段不是语音流中的最后一个片段。当然,语音请求报文中也可以不携带请求结束标识,比如仅在携带的语音数据片段为语音流中的最后一个片段的语音请求报文中添加一个预定标识用于标注即可。
由于各个语音请求报文在传输过程中可能因为网络原因而发生乱序、丢包和重复问题。服务器接收到每个语音请求报文后,进行相应处理后生成相应的语音响应报文来指导终端的下一个语音请求报文的发送。具体如下步骤502及其各个子步骤所示。
步骤502,对于每一个语音请求报文,根据语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文。
对于每一个语音请求报文,服务器根据语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文。如图4所示,语音响应报文携带有期望偏移位置和期望数据长度,期望偏移位置是服务器期望在下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置,期望数据长度是服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度。
可选地,每个语音响应报文还可以携带有处理情况标识,处理情况标识用于表示语音请求报文是否处理成功。比如,处理情况标识Ret=0表示语音请求报文处理成功;当Ret为错误码时表示语音请求报文处理失败,诸如因网络或者逻辑出错之类的问题导致的处理失败。
具体来讲,如图5B所示,本步骤包括如下几个子步骤:
步骤502a,检测语音请求报文中所携带的语音数据片段是否已经在其它语音请求报文中接收到。
为了处理重复的语音请求报文,在每接收到一个语音请求报文时,服务器检测该语音请求报文中所携带的语音数据片段是否已经在其它语音请求报文中接收到。服务器可以根据语音数据片段的偏移位置和数据长度检测语音请求报文中所携带的语音数据片段是否已经在其它语音请求报文中接收到。比如,在对一个语音流进行处理的过程中,当接收到两个语音请求报文携带的偏移位置和数据长度相同时,说明该两个语音请求报文携带的语音数据片段是相同的。
当然,由于不同的语音数据片段的数据长度不同,还有可能存在两个语音请求报文所携带的语音数据片段是部分重复的,或者一个语音请求报文所携带的语音数据片段包含了另一语音请求报文所携带的语音数据片段。不论语音数据片段发生重复的情况如何,服务器都可以通过语音数据片段的偏移位置和数据长度检测发现。
步骤502b,若检测结果为已经在其它语音请求报文中接收到,则将语音请求报文中所携带的语音数据片段进行去重复处理。
若检测结果为已经在其它语音请求报文中接收到,则服务器将语音请求报文中所携带的语音数据片段进行去重复处理。服务器选取重复的语音数据片段,只保留一份该重复的语音数据片段,对该重复的语音数据片段进行一次处理,而不会进行重复的处理。
不过考虑到语音响应报文在传输过程中可能发生丢包,终端因为没收到对应于某一语音请求报文的语音响应报文而重发该语音请求报文。因此,服务器仍然发送对应于该携带有重复的语音数据片段的语音请求报文的语音响应报文。
请结合参考图5C,在图5C中服务器在Step6反馈的语音响应报文在传输过程中发生了丢包。终端在一段时间未接收到语音响应报文之后,在Step7向服务器重发了在Step5发送的语音请求报文。服务器接收到终端重发的语音请求报文之后,在Step8再一次发送在Step6反馈的语音响应报文。
步骤502c,对于每一个语音请求报文,根据偏移位置对语音请求报文和其它语音请求报文各自携带的语音数据片段进行排序得到语音序列。
每个语音请求报文中携带的偏移位置用于表示该语音请求报文中的语音数据片段在整个语音流中的偏移位置。服务器根据偏移位置对语音请求报文和其它语音请求报文各自携带的语音数据片段进行排序得到语音序列。
请结合参考图4,当服务器在接收到Step3的第2个语音请求报文之后,根据Offset=100以及之前第1个语音请求报文Step1中的Offset=0确定两个语音请求报文携带的语音数据片段在语音流中的前后位置顺序,进而得到一个从偏移位置0至199的语音序列。
或者,请结合参考图5D,在图5D中终端在Step3发送的语音请求报文在传输过程中发生了丢包而接着又按序在Step4发送了下一个语音请求报文。服务器根据接收到的Step4的语音请求报文中的Offset=200以及之前接收到的Step1的语音请求报文中的Offset=0确定两个语音请求报文携带的语音数据片段在语音流中的前后位置顺序,进而得到一个从偏移位置0至99以及200至299的语音序列。
步骤502d,判断语音序列中是否存在空缺语音数据片段。
服务器判断语音序列中是否存在空缺语音数据片段。语音序列存在空缺语音数据片段是指服务器排序得到的语音序列为一不完整的语音序列。
比如,在图5D所示的流程图中,服务器在接收到Step4的语音请求报文后排序得到的语音序列为一个从偏移位置0至99以及200至299的语音序列,空缺了从偏移位置100至199的语音数据片段。
再比如,请结合参考图5E,在图5E中终端在Step3和Step5发送的两个语音请求报文在传输过程中发生了乱序,服务器根据接收到的Step3的语音请求报文中的Offset=200以及之前接收到的Step1的语音请求报文中的Offset=0确定两个语音请求报文携带的语音数据片段在语音流中的前后位置顺序,进而得到一个从偏移位置0至99以及200至299的语音序列。该语音序列也同样空缺了从偏移位置100至199的语音数据片段。
步骤502e,若判断结果为语音序列中存在空缺语音数据片段,则根据空缺语音数据片段在语音流中的偏移位置生成期望偏移位置,根据空缺语音数据片段的数据长度生成期望数据长度。
当判断结果为语音序列中存在空缺语音数据片段时,服务器根据空缺语音数据片段在语音流中的偏移位置生成期望偏移位置,根据空缺语音数据片段的数据长度生成期望数据长度。
在第一种可能的实施方式中,在空缺语音数据片段为一个时,比如上述图5D中服务器在接收到Step4的语音请求报文后排序得到的语音序列,空缺语音数据片段为从偏移位置100至199的一个语音数据片段,服务器可以将期望偏移位置设置为空缺语音数据片段的偏移位置100,期望数据长度设置为空缺语音数据片段的数据长度100。之后,如图5D中Step5所示,服务器反馈携带有Act_offset=100以及Ack_len=100的语音响应报文。
在第二种可能的实施方式中,在空缺语音数据片段为两个或者两个以上时,服务器根据排列在语音序列中最前面的空缺语音数据片段在语音流中的偏移位置生成期望偏移位置,根据排列在语音序列中最前面的空缺语音数据片段的数据长度生成期望数据长度。
请结合参考图5F,由于网络环境很差,终端按序在Step3以及Step6发送的语音请求报文相继发生了丢包,且服务器在Step5反馈的语音响应报文也发生了丢包。服务器在接收到终端发送的Step6的语音请求报文之后,排序得到的语音序列为一个从偏移位置0至99、200至299、400至499的语音序列。此时存在两个空缺语音数据片段:从偏移位置100至199的语音数据片段以及从偏移位置300至399的语音数据片段。服务器根据排列在语音序列中最前面的空缺语音数据片段在语音流中的偏移位置生成期望偏移位置,也即期望偏移位置为100。服务器根据排列在语音序列中最前面的空缺语音数据片段的数据长度生成期望数据长度,也即期望数据长度为100。之后,如图5F中Step8所示,服务器反馈携带有Act_offset=100以及Ack_len=100的语音响应报文。
由于在语音传输过程中,尤其是手机之类的移动终端与服务器之间进行语音传输时,一个语音流所包含的语音数据都较短。因此,将语音流分隔得到的语音数据片段的数量也不会很多,通常一个语音流的传输分为10个以内的语音请求报文发送就已足够。所以本发明实施例采用了一种较为简洁的处理机制,也即在空缺语音数据片段为两个或者两个以上时,服务器只计算最前面的空缺语音数据片段在语音流中的偏移位置和数据长度,并不考虑之后的空缺语音数据片段。这样既可以加快服务器的响应速度,还可以使得服务器将计算和处理的重点放在对语音数据片段的处理方面,节约服务器的系统开销。
步骤502f,若判断结果为语音序列中不存在空缺语音数据片段,则根据语音序列的末尾位置生成期望偏移位置,将预定值设置为期望数据长度。
当判断结果为语音序列中不存在空缺语音数据片段时,服务器根据语音序列的末尾位置生成期望偏移位置,将预定值设置为期望数据长度。
请结合参考图5D,服务器在接收到终端发送的Step6的语音请求报文之后,对语音数据片段进行排序得到的语音序列为一个从偏移位置0至299的完整的语音序列。此时,服务器根据语音序列的末尾位置生成期望偏移位置,将预定值设置为期望数据长度。
服务器在判断结果为语音序列中不存在空缺语音数据片段时,可以由如下两种可能的实施方式生成期望偏移位置:
在第一种可能的实施方式中,在判断结果为语音序列中不存在空缺语音数据片段时,总是根据语音序列的末尾位置加一生成期望偏移位置。
服务器根据语音序列的末尾位置加一生成期望偏移位置,也即服务器期望按序接收到语音数据片段。如图5D中Step7所示,服务器反馈携带有Act_offset=300以及Ack_len=0的语音响应报文。
在第二种可能的实施方式中,在判断结果为语音序列中不存在空缺语音数据片段,且在接收到的所有请求结束标识均为否时,根据语音序列的末尾位置加一生成期望偏移位置。
在上述步骤501中已经介绍,每个语音请求报文中还可以携带有请求结束标识,该请求结束标识指示了语音请求报文中携带的语音数据片段是否为语音流中的最后一个片段。当接收到的请求结束标识均为否时,也即所有Is_end=0,该语音流的最后一个语音数据片段还未收到时,服务器将语音序列的末尾位置加一作为期望偏移位置;当接收到的请求结束标识为是时,也即Is_end=1时,服务器可以用一个预设标识代替期望偏移位置,甚至可以不生成期望偏移位置,因为此时服务器已经收到一个完整的语音流,其只需将语音流的处理结果反馈给终端即可。
步骤502g,在语音请求报文携带的请求结束标识为是,且语音流中的各个语音数据片段都已经接收到时,将语音流的处理结果添加入语音响应报文。
当语音请求报文携带的请求结束标识为是,且语音流中的各个语音数据片段都已经接收到时,说明服务器接收到了一个完整的语音流。此时,服务器将该语音流的处理结果添加入语音响应报文。如图5D中Step7所示,服务器反馈的语音响应报文中还包含有语音流的处理结果Results=XXX。
步骤502h,将语音流的处理结果缓存预定时长。
优选地,服务器生成语音流的处理结果之后,还可以将语音流的处理结果缓存预定时长。预定时长可以根据实际需求预先设定,比如20秒。这样可以在服务器向终端反馈的携带有语音流的处理结果的语音响应报文在传输过程中发生丢包时,服务器在再次接收到终端重发的携带有最后一个片段的语音请求报文时,服务器可以直接从缓存中获取语音流的处理结果并重新向终端反馈。否则,服务器还需重新获取语音流,并对语音流进行再次处理,这会影响服务器的响应效率且加大服务器的计算压力。
总结来讲,在网络状况异常的情况下,语音请求报文会出现丢包、重复或者乱序的情况。服务器产生的语音响应报文主要有三种作用:第一,在发现因丢包或者乱序造成的语音序列中存在空缺语音数据片段时,在语音响应报文中指示终端重新发送空缺语音数据片段;第二,在未发现因丢包或者乱序造成的语音序列中存在空缺语音数据片段时,在语音响应报文中指示终端正常发送下一个语音数据片段;第三,在语音请求报文携带的是语音流中最后一个片段时,在相应的语音响应报文中反馈语音流的处理结果。
步骤503,将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送。
服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送。不论是基于对重复的语音请求报文的生成的语音响应报文,还是在语音请求报文发生丢包或者乱序的情况下生成的语音响应报文,还是在未出现重复、丢包或者乱序的情况下生成的语音响应报文,服务器均将语音响应报文反馈给终端。
终端接收到服务器反馈的语音响应报文之后,根据语音响应报文决策下一个语音请求报文的发送,包括:决策是否需要发送下一个语音请求报文、发送的下一个语音请求报文携带的语音数据片段是多少、偏移位置是多少、数据长度是多少等等。终端侧的处理机制将在下述图6A所示实施例中进行详细介绍和说明。
需要说明的是,为了提高服务器的并发能力,使得服务器同时处理语音请求报文的个数尽可能增大,服务器可以不用每接收到一个语音请求报文就立即进行处理,可以在不影响响应时间的情况下适当地缓存语音请求报文一段时间,待接收到一定数量的语音请求报文之后再同时对多个语音请求报文进行处理。
综上所述,本实施例提供的语音传输方法,对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
另外,对于多个语音请求报文发生丢包或者乱序的情况,服务器在得到语音序列之后,不论语音序列中存在多少个空缺语音数据片段,只根据排列在语音序列中最前面的空缺语音数据片段生成期望偏移位置和期望数据长度,加快了服务器的响应速度,而且使得服务器将计算和处理的重点放在对语音数据片段的处理方面,节约服务器的系统开销。
请参考图6A,其示出了本发明再一实施例提供的语音传输方法的方法流程图,该语音传输方法应用于图2所示的实施环境的终端侧。该语音传输方法包括如下步骤:
步骤601,向服务器依次发送至少一个语音请求报文。
对于一个语音流来讲,终端会将该语音流切割为若干个语音数据片段,然后顺序携带在不同的语音请求报文中发送。终端向服务器依次发送的至少一个语音请求报文。如图4所示,每个语音请求报文携带有语音流中的一个语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度。
可选地,每个语音请求报文还可以携带有请求结束标识。比如,请求结束标识Is_end=1表示语音请求报文中携带的语音数据片段为语音流中的最后一个片段;Is_end=0表示语音请求报文中携带的语音数据片段不是语音流中的最后一个片段。当然,语音请求报文中也可以不携带请求结束标识,比如仅在携带的语音数据片段为语音流中的最后一个片段的语音请求报文中添加一个预定标识用于标注即可。
步骤602,接收服务器反馈的对应于语音请求报文的语音响应报文。
终端接收服务器反馈的对应于语音请求报文的语音响应报文。语音响应报文是服务器根据语音请求报文和已经接收到的对应于语音流的其它语音请求报文生成的。如图4所示,语音响应报文携带有期望偏移位置和期望数据长度,期望偏移位置是服务器期望在下一个语音请求报文中接收到的语音数据片段在语音流中的偏移位置,期望数据长度是服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度。
可选地,每个语音响应报文还可以携带有处理情况标识,处理情况标识用于表示语音请求报文是否处理成功。比如,处理情况标识Ret=0表示语音请求报文处理成功;当Ret为错误码时表示语音请求报文处理失败,诸如因网络或者逻辑出错之类的问题导致的处理失败。
服务器如何根据语音请求报文生成语音响应报文具体在图5A所示实施例中已经详细介绍和说明,本实施例中不再赘述。
步骤603,根据语音响应报文决策下一个语音请求报文的发送。
终端根据语音响应报文决策下一个语音请求报文的发送,包括:决策是否需要发送下一个语音请求报文、发送的下一个语音请求报文携带的语音数据片段是多少、偏移位置是多少、数据长度是多少等等。
具体来讲,请参考图6B,本步骤包括如下几个子步骤:
步骤603a,检测语音响应报文携带的期望数据长度是否为预定值。
终端检测语音响应报文携带的期望数据长度是否为预定值。终端通过检测语音响应报文携带的期望数据长度是否为预定值,确定自身发送的语音请求报文在传输过程中是否发生了丢包或者乱序。
期望数据长度用于表示服务器期望在下一个语音请求报文中接收到的语音数据片段的数据长度。当期望数据长度为预定值时,也即当Ack_len=0时,表明服务器得到的语音序列中不存在空缺语音数据片段,也即服务器尚未发现丢包或者乱序的情况;当期望数据长度不为预定值时,也即当Ack_len≠0时,表明服务器得到的语音序列中存在空缺语音数据片段,也即发生了丢包或者乱序的情况。
步骤603b,若检测结果为期望数据长度不是预定值,则将与期望偏移位置和期望数据长度对应的语音数据片段的全部或者部分携带在下一个语音请求报文中发送。
若检测结果为期望数据长度不是预定值,则服务器将与期望偏移位置和期望数据长度对应的语音数据片段的全部或者部分携带在下一个语音请求报文中发送。期望偏移位置和期望数据长度反映了服务器所需要的空缺语音数据片段,终端可以将该空缺语音数据片段在一个语音请求报文中发送,也可以分多个语音请求报文进行发送。
请结合参考图5D,由于终端在Step3发送的语音请求报文发生丢包,之后服务器在Step5反馈的语音响应报文所携带的Ack_offset=100且Ack_len=100,表明服务器缺少偏移位置从100至199的语音数据片段。终端接收到服务器在Step5反馈的语音响应报文之后,在Step6将偏移位置从100至199的语音数据片段携带在一个语音请求报文中发送。
当然,终端也可以分多个语音请求报文进行发送,比如一个语音请求报文中Offset=100,Len=50,而另一个语音请求报文中Offset=150,Len=50。
步骤603c,若检测结果为期望数据长度是预定值,则判断与语音响应报文携带的期望偏移位置所对应的语音数据片段是否已经发送过。
若检测结果为期望数据长度是预定值,则终端判断与语音响应报文携带的期望偏移位置所对应的语音数据片段是否已经发送过。若判断结果为已经发送过,则执行下述步骤603d;若判断结果为还未发送过,则执行下述步骤603e。
步骤603d,若判断结果为已经发送过,且语音流中存在未发送的其它语音数据片段时,将其它语音数据片段携带在下一个语音请求报文中发送。
请结合参考图6C,终端在接收到服务器在Step3反馈的对应于Step1的语音请求报文的语音响应报文时,终端已经在Step2将携带有语音数据片段的Offset=100的语音请求报文发送给了服务器。此时,终端检测发现该语音流中还存在Offset=200且Len=100的语音数据片段未发送过,终端将该Offset=200且Len=100的语音数据片段携带在Step4发送的语音请求报文中发送。
而当终端接收到服务器在Step5反馈的对应于Step2的语音请求报文的语音响应报文时,终端读取期望偏移位置Ack_offset=200发现该语音请求报文已经发送,且检测发现语音流中不存在未发送的其它语音数据片段,则终端不发送下一个语音请求报文,等待服务器反馈对语音流的处理结果。
步骤603e,若判断结果为还未发送过,且语音流中存在与期望偏移位置所对应的语音数据片段时,将与期望偏移位置所对应的语音数据片段携带在下一个语音请求报文中发送。
请结合参考图4,终端在接收到服务器在Step2反馈的对应于Step1的语音请求报文的语音响应报文时,终端读取期望偏移位置Ack_offset=100发现该语音请求报文还未发送,且语音流中存在与期望偏移位置100所对应的语音数据片段,此时终端将偏移位置为100的语音数据片段携带在Step3发送的语音请求报文中发送。
另外,在步骤601之后还可以包括如下步骤:
步骤604,对于每个语音请求报文,在发送语音请求报文后的预定时间间隔内,检测是否接收到与语音请求报文所对应的语音响应报文。
针对服务器反馈的语音响应报文在传输过程中也可能发生丢包和乱序的情况,终端在发送语音请求报文后的预定时间间隔内,检测是否接收到与语音请求报文所对应的语音响应报文。
在一种可能的实施方式中,终端根据接收到的语音响应报文中携带的期望偏移位置检测是否接收到与语音请求报文所对应的语音响应报文。在语音请求报文不发生乱序或者丢包的情况下,对于每个语音请求报文,服务器反馈的对应于该语音请求报文的期望偏移位置等于该语音请求报文携带的语音数据片段的末尾位置加一。因此,终端可以根据接收到的语音响应报文中的期望偏移位置检测是否接收到与语音请求报文所对应的语音响应报文。
虽然本实施方式在语音请求报文发生乱序或者丢包的情况下会存在一定误差,因为当发生乱序或者丢包时,服务器反馈的期望偏移位置等于空缺语音数据片段的偏移位置,此时服务器反馈的期望偏移位置并不能准确地反映语音响应报文与语音请求报文之间的对应关系,可能导致终端重发一些不必要的语音请求报文。但是,由于服务器侧也只需进行去重复处理,也不会给服务器带来很大的计算压力。通过本实施方式可以使得语音传输更加简单。
在另一种可能的实施方式中,终端在发送语音请求报文时可以给不同的语音请求报文添加不同的标记,比如给第1个语音请求报文添加A标记,给第2个语音请求报文添加B标记。服务器处理完成第1个语音请求报文之后,反馈的第1个语音响应报文也携带有A标记;在处理完成第2个语音请求报文之后,反馈的第2个语音响应报文也携带有B标记。这样终端就可以根据接收到的语音响应报文中的标记确定语音响应报文与语音请求报文之间的对应关系,以此检测在预定时间间隔内是否接收到与语音请求报文所对应的语音响应报文。本实施方式虽然可以明确地确定语音请求报文与语音响应报文之间的对应关系,但会增加服务器的计算量。
在实际应用中,可以权衡服务器的计算处理能力之后选取上述两种实施方式中的任意一种。
步骤605,若检测结果为未接收到与语音请求报文所对应的语音响应报文,则重发语音请求报文。
若在预定时间间隔内未接收到与语音请求报文所对应的语音响应报文,则说明该语音响应报文在传输过程中发生了丢包,终端重发语音请求报文,告知服务器语音响应报文发生丢包,请求服务器重新处理语音请求报文。
请结合参考图5C,由于服务器在Step6反馈的语音响应报文丢包,终端在预定时间间隔内未收到响应,终端在Step7重发Step5的语音请求报文。对应地,服务器接收到重发的语音请求报文之后,从缓存中获取语音流的处理结果Results=XXX,重发携带有Results=XXX的语音响应报文。
可选地,终端还可以在每个语音请求报文中添加请求结束标识,请求结束标识指示了语音请求报文中携带的语音数据片段是否为语音流中的最后一个片段。比如,请求结束标识Is_end=1表示语音请求报文中携带的语音数据片段为语音流中的最后一个片段;Is_end=0表示语音请求报文中携带的语音数据片段不是语音流中的最后一个片段。当然,语音请求报文中也可以不携带请求结束标识,比如仅在携带的语音数据片段为语音流中的最后一个片段的语音请求报文中添加一个预定标识用于标注即可。
综上所述,本实施例提供的语音传输方法,终端通过向服务器发送携带有语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度的语音请求报文,然后在接收到服务器反馈的携带有期望偏移位置和期望数据长度的语音响应报文之后,终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
另外,本实施例提供了一种更为完善的语音传输机制,终端通过在发送语音请求报文后的预定时间间隔内,检测是否接收到与语音请求报文所对应的语音响应报文,并在检测结果为未接收到与语音请求报文所对应的语音响应报文时重发语音请求报文,以此避免了因语音响应报文发生丢包所带来的影响。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图7,其示出了本发明一个实施例提供的语音传输装置的结构方框图,该语音传输装置可以通过软件、硬件或者两者的结合实现成为服务器的部分或者全部。该语音传输装置包括:请求接收模块710、响应生成模块720和响应反馈模块730。
请求接收模块710,用于接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有所述语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度。
响应生成模块720,用于对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度。
响应反馈模块730,用于将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
综上所述,本实施例提供的语音传输装置,对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
请参考图8,其示出了本发明另一实施例提供的语音传输装置的结构方框图,该语音传输装置可以通过软件、硬件或者两者的结合实现成为终端的部分或者全部。该语音传输装置包括:请求发送模块810、响应接收模块820和请求决策模块830。
请求发送模块810,用于向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度。
响应接收模块820,用于接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度。
请求决策模块830,用于根据所述语音响应报文决策所述下一个语音请求报文的发送。
综上所述,本实施例提供的语音传输装置,终端通过向服务器发送携带有语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度的语音请求报文,然后在接收到服务器反馈的携带有期望偏移位置和期望数据长度的语音响应报文之后,终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
请参考图9,其示出了本发明一个实施例提供的语音服务系统的结构方框图,该语音服务系统包括服务器700和终端800。
服务器700可以包括语音传输装置,该语音传输装置可以通过软件、硬件或者两者的结合实现。该语音传输装置包括:请求接收模块710、响应生成模块720、结果缓存模块722和响应反馈模块730。
请求接收模块710,用于接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有所述语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度。
响应生成模块720,用于对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度。
具体来讲,所述响应生成模块720,可以包括:语音检测单元720a和去重处理单元720b。
语音检测单元720a,用于检测所述语音请求报文中所携带的语音数据片段是否已经在所述其它语音请求报文中接收到。
去重处理单元720b,若检测结果为已经在所述其它语音请求报文中接收到,则将所述语音请求报文中所携带的语音数据片段进行去重复处理。
所述响应生成模块720,还可以包括:语音排序单元720c、空缺判断单元720d、第一执行单元720e和第二执行单元720f。
所述语音排序单元720c,用于对于每一个语音请求报文,根据所述偏移位置对所述语音请求报文和所述其它语音请求报文各自携带的所述语音数据片段进行排序得到语音序列。
所述空缺判断单元720d,用于判断所述语音序列中是否存在空缺语音数据片段。
所述第一执行单元720e,用于若判断结果为所述语音序列中存在所述空缺语音数据片段,则根据所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据所述空缺语音数据片段的数据长度生成所述期望数据长度。
所述第一执行单元720e,还用于在所述空缺语音数据片段为两个或者两个以上时,根据排列在所述语音序列中最前面的所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据排列在所述语音序列中最前面的所述空缺语音数据片段的数据长度生成所述期望数据长度。
所述第二执行单元720f,用于若判断结果为所述语音序列中不存在所述空缺语音数据片段,则根据所述语音序列的末尾位置生成所述期望偏移位置,将预定值设置为所述期望数据长度。
在一种可能的实现方式中,每个语音请求报文中还携带有请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段。
所述第二执行单元720f,还用于在接收到的所述请求结束标识均为否时,根据所述语音序列的末尾位置加一生成所述期望偏移位置。
所述响应生成模块720,还可以包括:结果添加单元720g。
所述结果添加单元720g,用于在所述语音请求报文携带的所述请求结束标识为是,且所述语音流中的各个语音数据片段都已经接收到时,将所述语音流的处理结果添加入所述语音响应报文。
结果缓存模块722,用于将所述语音流的处理结果缓存预定时长。
响应反馈模块730,用于将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
终端800可以包括语音传输装置,该语音传输装置可以通过软件、硬件或者两者的结合实现。该语音传输装置包括:请求发送模块810、响应接收模块820、请求决策模块830、响应检测模块840、请求重发模块850和标识添加模块860。
请求发送模块810,用于向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度。
响应接收模块820,用于接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度。
请求决策模块830,用于根据所述语音响应报文决策所述下一个语音请求报文的发送。
具体来讲,所述请求决策模块830,包括:长度检测单元830a和数据处理单元830b。
所述长度检测单元830a,用于检测所述语音响应报文携带的所述期望数据长度是否为预定值。
所述数据处理单元830b,用于若检测结果为所述期望数据长度不是所述预定值,则将与所述期望偏移位置和所述期望数据长度对应的语音数据片段的全部或者部分携带在所述下一个语音请求报文中发送。
所述请求决策模块830,还包括:数据判断单元830c、第一判断单元830d和第二判断单元830e。
所述数据判断单元830c,用于若检测结果为所述期望数据长度是所述预定值,则判断与所述语音响应报文携带的所述期望偏移位置所对应的语音数据片段是否已经发送过。
所述第一判断单元830d,用于若判断结果为已经发送过,且所述语音流中存在未发送的其它语音数据片段时,将所述其它语音数据片段携带在所述下一个语音请求报文中发送。
所述第二判断单元830e,用于若判断结果为还未发送过,且所述语音流中存在与所述期望偏移位置所对应的语音数据片段时,将与所述期望偏移位置所对应的语音数据片段携带在所述下一个语音请求报文中发送。
响应检测模块840,用于对于每个语音请求报文,在发送所述语音请求报文后的预定时间间隔内,检测是否接收到与所述语音请求报文所对应的语音响应报文。
请求重发模块850,用于若检测结果为未接收到与所述语音请求报文所对应的语音响应报文,则重发所述语音请求报文。
标识添加模块860,用于在每个语音请求报文中添加请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段。
综上所述,本实施例提供的语音服务系统,对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
另外,对于多个语音请求报文发生丢包或者乱序的情况,服务器在得到语音序列之后,不论语音序列中存在多少个空缺语音数据片段,只根据排列在语音序列中最前面的空缺语音数据片段生成期望偏移位置和期望数据长度,加快了服务器的响应速度,而且使得服务器将计算和处理的重点放在对语音数据片段的处理方面,节约服务器的系统开销。本实施例提供了一种更为完善的语音传输机制,终端通过在发送语音请求报文后的预定时间间隔内,检测是否接收到与语音请求报文所对应的语音响应报文,并在检测结果为未接收到与语音请求报文所对应的语音响应报文时重发语音请求报文,以此避免了因语音响应报文发生丢包所带来的影响。
需要说明的是:上述实施例提供的语音传输装置和语音服务系统在提供语音服务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的语音传输装置和语音服务系统与语音传输方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图10,其示出了本发明一个实施例提供的服务器的结构示意图,该服务器可以用于实施上述实施例中提供的服务器侧的语音传输方法。所述服务器1000包括中央处理单元(CPU)1001、包括随机存取存储器(RAM)1002和只读存储器(ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。所述服务器1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。
所述基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中所述显示器1008和输入设备1009都通过连接到系统总线1005的输入/输出控制器1010连接到中央处理单元1001。所述基本输入/输出系统1006还可以包括输入/输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。所述大容量存储设备1007及其相关联的计算机可读介质为服务器1000提供非易失性存储。也就是说,所述大容量存储设备1007可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。
根据本发明的各种实施例,所述服务器1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1000可以通过连接在所述系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上中央处理单元1001执行。上述一个或者一个以上程序包含用于进行以下操作的指令:
接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有所述语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
对于每一个语音请求报文,根据所述偏移位置对所述语音请求报文和所述其它语音请求报文各自携带的所述语音数据片段进行排序得到语音序列;
判断所述语音序列中是否存在空缺语音数据片段;
若判断结果为所述语音序列中存在所述空缺语音数据片段,则根据所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据所述空缺语音数据片段的数据长度生成所述期望数据长度;
若判断结果为所述语音序列中不存在所述空缺语音数据片段,则根据所述语音序列的末尾位置生成所述期望偏移位置,将预定值设置为所述期望数据长度。
在第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
在所述空缺语音数据片段为两个或者两个以上时,根据排列在所述语音序列中最前面的所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据排列在所述语音序列中最前面的所述空缺语音数据片段的数据长度生成所述期望数据长度。
在第二种可能的实施方式作为基础而提供的第四种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
所述根据所述语音序列的末尾位置生成所述期望偏移位置,包括:
在接收到的所述请求结束标识均为否时,根据所述语音序列的末尾位置加一生成所述期望偏移位置。
在第一种可能的实施方式作为基础而提供的第五种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
检测所述语音请求报文中所携带的语音数据片段是否已经在所述其它语音请求报文中接收到;
若检测结果为已经在所述其它语音请求报文中接收到,则将所述语音请求报文中所携带的语音数据片段进行去重复处理。
在第一至第五种可能的实施方式中的任意一种可能的实施方式作为基础而提供的第六种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
所述对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,还包括:
在所述语音请求报文携带的所述请求结束标识为是,且所述语音流中的各个语音数据片段都已经接收到时,将所述语音流的处理结果添加入所述语音响应报文。
在第六种可能的实施方式作为基础而提供的第七种可能的实施方式中,所述服务器的存储器中,还包含用于执行以下操作的指令:
将所述语音流的处理结果缓存预定时长。
综上所述,本实施例提供的服务器,对于从终端接收到的每一个语音请求报文,服务器根据该语音请求报文和已经接收到的对应于语音流的其它语音请求报文,生成对应于语音请求报文的语音响应报文,且该语音响应报文携带有期望偏移位置和期望数据长度;服务器将语音响应报文反馈给终端,以便终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
另外,对于多个语音请求报文发生丢包或者乱序的情况,服务器在得到语音序列之后,不论语音序列中存在多少个空缺语音数据片段,只根据排列在语音序列中最前面的空缺语音数据片段生成期望偏移位置和期望数据长度,加快了服务器的响应速度,而且使得服务器将计算和处理的重点放在对语音数据片段的处理方面,节约服务器的系统开销。
请参考图11,其示出了本发明一个实施例提供的终端的结构示意图,该终端可以用于实施上述实施例中提供的终端侧的语音传输方法。具体来讲:
终端1100可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图11中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括图像输入设备131以及其他输入设备132。图像输入设备131可以是摄像头,也可以是光电扫描设备。除了图像输入设备131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1100的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。
终端1100还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1100移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1100还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端1100之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1100的通信。
WiFi属于短距离无线传输技术,终端1100通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了WiFi模块170,但是可以理解的是,其并不属于终端1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端1100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端1100还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1100还可以包括蓝牙模块等,在此不再赘述。具体在本实施例中,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于进行以下操作的指令:
向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度;
接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
根据所述语音响应报文决策所述下一个语音请求报文的发送。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,所述终端的存储器中,还包含用于执行以下操作的指令:
检测所述语音响应报文携带的所述期望数据长度是否为预定值;
若检测结果为所述期望数据长度不是所述预定值,则将与所述期望偏移位置和所述期望数据长度对应的语音数据片段的全部或者部分携带在所述下一个语音请求报文中发送。
在第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,所述终端的存储器中,还包含用于执行以下操作的指令:
若检测结果为所述期望数据长度是所述预定值,则判断与所述语音响应报文携带的所述期望偏移位置所对应的语音数据片段是否已经发送过;
若判断结果为已经发送过,且所述语音流中存在未发送的其它语音数据片段时,将所述其它语音数据片段携带在所述下一个语音请求报文中发送;
若判断结果为还未发送过,且所述语音流中存在与所述期望偏移位置所对应的语音数据片段时,将与所述期望偏移位置所对应的语音数据片段携带在所述下一个语音请求报文中发送。
在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,所述终端的存储器中,还包含用于执行以下操作的指令:
对于每个语音请求报文,在发送所述语音请求报文后的预定时间间隔内,检测是否接收到与所述语音请求报文所对应的语音响应报文;
若检测结果为未接收到与所述语音请求报文所对应的语音响应报文,则重发所述语音请求报文。
在第一至第四种可能的实施方式中的任意一种可能的实施方式作为基础而提供的第五种可能的实施方式中,所述终端的存储器中,还包含用于执行以下操作的指令:
在每个语音请求报文中添加请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段。
综上所述,本实施例提供的终端,终端通过向服务器发送携带有语音数据片段、语音数据片段在语音流中的偏移位置和语音数据片段的数据长度的语音请求报文,然后在接收到服务器反馈的携带有期望偏移位置和期望数据长度的语音响应报文之后,终端根据语音响应报文决策下一个语音请求报文的发送;解决了现有语音传输过程中因丢包、重复和乱序导致对语音流的处理结果不准确,甚至无法处理的问题;避免了因丢包、重复或者乱序导致处理结果不准确甚至无法处理这类情况的发生。
另外,本实施例提供了一种更为完善的语音传输机制,终端通过在发送语音请求报文后的预定时间间隔内,检测是否接收到与语音请求报文所对应的语音响应报文,并在检测结果为未接收到与语音请求报文所对应的语音响应报文时重发语音请求报文,以此避免了因语音响应报文发生丢包所带来的影响。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (25)
1.一种语音传输方法,其特征在于,用于服务器中,所述方法包括:
接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度,所述数据长度用于指示所述语音数据片段对应的偏移位置的个数;
对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
2.根据权利要求1所述的方法,其特征在于,所述对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,包括:
对于每一个语音请求报文,根据所述偏移位置对所述语音请求报文和所述其它语音请求报文各自携带的所述语音数据片段进行排序得到语音序列;
判断所述语音序列中是否存在空缺语音数据片段;
若判断结果为所述语音序列中存在所述空缺语音数据片段,则根据所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据所述空缺语音数据片段的数据长度生成所述期望数据长度;
若判断结果为所述语音序列中不存在所述空缺语音数据片段,则根据所述语音序列的末尾位置生成所述期望偏移位置,将预定值设置为所述期望数据长度。
3.根据权利要求2所述的方法,其特征在于,所述根据所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据所述空缺语音数据片段的数据长度生成所述期望数据长度,包括:
在所述空缺语音数据片段为两个或者两个以上时,根据排列在所述语音序列中最前面的所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据排列在所述语音序列中最前面的所述空缺语音数据片段的数据长度生成所述期望数据长度。
4.根据权利要求2所述的方法,其特征在于,每个语音请求报文中还携带有请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段;
所述根据所述语音序列的末尾位置生成所述期望偏移位置,包括:
在接收到的所述请求结束标识均为否时,根据所述语音序列的末尾位置加一生成所述期望偏移位置。
5.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
检测所述语音请求报文中所携带的语音数据片段是否已经在所述其它语音请求报文中接收到;
若检测结果为已经在所述其它语音请求报文中接收到,则将所述语音请求报文中所携带的语音数据片段进行去重复处理。
6.根据权利要求1至5任一所述的方法,其特征在于,每个语音请求报文中还携带有请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段;
所述对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,还包括:
在所述语音请求报文携带的所述请求结束标识为是,且所述语音流中的各个语音数据片段都已经接收到时,将所述语音流的处理结果添加入所述语音响应报文。
7.根据权利要求6所述的方法,其特征在于,所述方法,还包括:
将所述语音流的处理结果缓存预定时长。
8.一种语音传输方法,其特征在于,用于终端中,所述方法包括:
向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度,所述数据长度用于指示所述语音数据片段对应的偏移位置的个数;
接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
根据所述语音响应报文决策所述下一个语音请求报文的发送。
9.根据权利要求8所述的方法,其特征在于,所述根据所述语音响应报文决策下一个语音请求报文的发送,包括:
检测所述语音响应报文携带的所述期望数据长度是否为预定值;
若检测结果为所述期望数据长度不是所述预定值,则将与所述期望偏移位置和所述期望数据长度对应的语音数据片段的全部或者部分携带在所述下一个语音请求报文中发送。
10.根据权利要求9所述的方法,其特征在于,所述检测所述期望数据长度是否为预定值之后,还包括:
若检测结果为所述期望数据长度是所述预定值,则判断与所述语音响应报文携带的所述期望偏移位置所对应的语音数据片段是否已经发送过;
若判断结果为已经发送过,且所述语音流中存在未发送的其它语音数据片段时,将所述其它语音数据片段携带在所述下一个语音请求报文中发送;
若判断结果为还未发送过,且所述语音流中存在与所述期望偏移位置所对应的语音数据片段时,将与所述期望偏移位置所对应的语音数据片段携带在所述下一个语音请求报文中发送。
11.根据权利要求8所述的方法,其特征在于,所述方法,还包括:
对于每个语音请求报文,在发送所述语音请求报文后的预定时间间隔内,检测是否接收到与所述语音请求报文所对应的语音响应报文;
若检测结果为未接收到与所述语音请求报文所对应的语音响应报文,则重发所述语音请求报文。
12.根据权利要求8至11任一所述的方法,其特征在于,所述方法,还包括:
在每个语音请求报文中添加请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段。
13.一种语音传输装置,其特征在于,用于服务器中,所述装置包括:
请求接收模块,用于接收终端依次发送的至少一个语音请求报文,每个语音请求报文携带有语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度,所述数据长度用于指示所述语音数据片段对应的偏移位置的个数;
响应生成模块,用于对于每一个语音请求报文,根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文,生成对应于所述语音请求报文的语音响应报文,所述语音响应报文携带有期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
响应反馈模块,用于将所述语音响应报文反馈给所述终端,以便所述终端根据所述语音响应报文决策所述下一个语音请求报文的发送。
14.根据权利要求13所述的装置,其特征在于,所述响应生成模块,包括:语音排序单元、空缺判断单元、第一执行单元和第二执行单元;
所述语音排序单元,用于对于每一个语音请求报文,根据所述偏移位置对所述语音请求报文和所述其它语音请求报文各自携带的所述语音数据片段进行排序得到语音序列;
所述空缺判断单元,用于判断所述语音序列中是否存在空缺语音数据片段;
所述第一执行单元,用于若判断结果为所述语音序列中存在所述空缺语音数据片段,则根据所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据所述空缺语音数据片段的数据长度生成所述期望数据长度;
所述第二执行单元,用于若判断结果为所述语音序列中不存在所述空缺语音数据片段,则根据所述语音序列的末尾位置生成所述期望偏移位置,将预定值设置为所述期望数据长度。
15.根据权利要求14所述的装置,其特征在于,
所述第一执行单元,还用于在所述空缺语音数据片段为两个或者两个以上时,根据排列在所述语音序列中最前面的所述空缺语音数据片段在所述语音流中的偏移位置生成所述期望偏移位置,根据排列在所述语音序列中最前面的所述空缺语音数据片段的数据长度生成所述期望数据长度。
16.根据权利要求14所述的装置,其特征在于,每个语音请求报文中还携带有请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段;
所述第二执行单元,还用于在接收到的所述请求结束标识均为否时,根据所述语音序列的末尾位置加一生成所述期望偏移位置。
17.根据权利要求13所述的装置,其特征在于,所述响应生成模块,还包括:语音检测单元和去重处理单元;
所述语音检测单元,用于检测所述语音请求报文中所携带的语音数据片段是否已经在所述其它语音请求报文中接收到;
所述去重处理单元,若检测结果为已经在所述其它语音请求报文中接收到,则将所述语音请求报文中所携带的语音数据片段进行去重复处理。
18.根据权利要求13至17任一所述的装置,其特征在于,每个语音请求报文中还携带有请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段;
所述响应生成模块,还包括:结果添加单元;
所述结果添加单元,用于在所述语音请求报文携带的所述请求结束标识为是,且所述语音流中的各个语音数据片段都已经接收到时,将所述语音流的处理结果添加入所述语音响应报文。
19.根据权利要求18所述的装置,其特征在于,所述装置,还包括:
结果缓存模块,用于将所述语音流的处理结果缓存预定时长。
20.一种语音传输装置,其特征在于,用于终端中,所述装置包括:
请求发送模块,用于向服务器依次发送至少一个语音请求报文,每个语音请求报文包括语音流中的一个语音数据片段、所述语音数据片段在所述语音流中的偏移位置和所述语音数据片段的数据长度,所述数据长度用于指示所述语音数据片段对应的偏移位置的个数;
响应接收模块,用于接收所述服务器反馈的对应于所述语音请求报文的语音响应报文,所述语音响应报文是所述服务器根据所述语音请求报文和已经接收到的对应于所述语音流的其它语音请求报文生成的,所述语音响应报文包括期望偏移位置和期望数据长度,所述期望偏移位置是所述服务器期望在下一个语音请求报文中接收到的语音数据片段在所述语音流中的偏移位置,所述期望数据长度是所述服务器期望在所述下一个语音请求报文中接收到的语音数据片段的数据长度;
请求决策模块,用于根据所述语音响应报文决策所述下一个语音请求报文的发送。
21.根据权利要求20所述的装置,其特征在于,所述请求决策模块,包括:长度检测单元和数据处理单元;
所述长度检测单元,用于检测所述语音响应报文携带的所述期望数据长度是否为预定值;
所述数据处理单元,用于若检测结果为所述期望数据长度不是所述预定值,则将与所述期望偏移位置和所述期望数据长度对应的语音数据片段的全部或者部分携带在所述下一个语音请求报文中发送。
22.根据权利要求21所述的装置,其特征在于,所述请求决策模块,还包括:数据判断单元、第一判断单元和第二判断单元;
所述数据判断单元,用于若检测结果为所述期望数据长度是所述预定值,则判断与所述语音响应报文携带的所述期望偏移位置所对应的语音数据片段是否已经发送过;
所述第一判断单元,用于若判断结果为已经发送过,且所述语音流中存在未发送的其它语音数据片段时,将所述其它语音数据片段携带在所述下一个语音请求报文中发送;
所述第二判断单元,用于若判断结果为还未发送过,且所述语音流中存在与所述期望偏移位置所对应的语音数据片段时,将与所述期望偏移位置所对应的语音数据片段携带在所述下一个语音请求报文中发送。
23.根据权利要求20所述的装置,其特征在于,所述装置,还包括:
响应检测模块,用于对于每个语音请求报文,在发送所述语音请求报文后的预定时间间隔内,检测是否接收到与所述语音请求报文所对应的语音响应报文;
请求重发模块,用于若检测结果为未接收到与所述语音请求报文所对应的语音响应报文,则重发所述语音请求报文。
24.根据权利要求20至23任一所述的装置,其特征在于,所述装置,还包括:
标识添加模块,用于在每个语音请求报文中添加请求结束标识,所述请求结束标识指示了所述语音请求报文中携带的语音数据片段是否为所述语音流中的最后一个片段。
25.一种语音服务系统,其特征在于,所述系统包括服务器和终端;
所述服务器包括如权利要求13至19任一所述的语音传输装置;
所述终端包括如权利要求20至24任一所述的语音传输装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310661738.8A CN104702576B (zh) | 2013-12-09 | 2013-12-09 | 语音传输方法、装置和语音服务系统 |
TW103142885A TWI570707B (zh) | 2013-12-09 | 2014-12-09 | 語音傳輸方法、裝置和語音服務系統 |
PCT/CN2015/072378 WO2015085964A1 (zh) | 2013-12-09 | 2015-02-06 | 语音传输方法、装置和语音服务系统 |
US15/177,478 US10516622B2 (en) | 2013-12-09 | 2016-06-09 | Speech transmission method and apparatus and speech service system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310661738.8A CN104702576B (zh) | 2013-12-09 | 2013-12-09 | 语音传输方法、装置和语音服务系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104702576A CN104702576A (zh) | 2015-06-10 |
CN104702576B true CN104702576B (zh) | 2018-02-09 |
Family
ID=53349350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310661738.8A Active CN104702576B (zh) | 2013-12-09 | 2013-12-09 | 语音传输方法、装置和语音服务系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10516622B2 (zh) |
CN (1) | CN104702576B (zh) |
TW (1) | TWI570707B (zh) |
WO (1) | WO2015085964A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330845A (zh) * | 2015-07-02 | 2017-01-11 | 中兴通讯股份有限公司 | 一种传输流媒体数据的方法和装置 |
CN106357883B (zh) * | 2016-08-24 | 2019-11-15 | 北京小米移动软件有限公司 | 音频播放的方法及装置、播放系统 |
CN106792048B (zh) * | 2016-12-20 | 2020-08-14 | Tcl科技集团股份有限公司 | 一种识别智能电视用户语音命令的方法和装置 |
CN106971723B (zh) * | 2017-03-29 | 2021-02-12 | 北京搜狗科技发展有限公司 | 语音处理方法和装置、用于语音处理的装置 |
US10258295B2 (en) * | 2017-05-09 | 2019-04-16 | LifePod Solutions, Inc. | Voice controlled assistance for monitoring adverse events of a user and/or coordinating emergency actions such as caregiver communication |
CN110493302A (zh) * | 2019-07-01 | 2019-11-22 | 联想(北京)有限公司 | 一种文件传输方法、设备及计算机可读存储介质 |
CN111081247A (zh) * | 2019-12-24 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 语音识别的方法以及终端、服务器和计算机可读存储介质 |
US11404062B1 (en) | 2021-07-26 | 2022-08-02 | LifePod Solutions, Inc. | Systems and methods for managing voice environments and voice routines |
US11410655B1 (en) | 2021-07-26 | 2022-08-09 | LifePod Solutions, Inc. | Systems and methods for managing voice environments and voice routines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1513252A (zh) * | 2001-06-04 | 2004-07-14 | �ʼҷ����ֵ�������˾ | 在流式传输应用中的实时分组化和重发 |
CN101272519A (zh) * | 2007-03-21 | 2008-09-24 | 上海贝尔阿尔卡特股份有限公司 | 生成协议数据单元的方法及其设备和基站 |
CN101699840A (zh) * | 2009-11-09 | 2010-04-28 | 南京希华通信技术有限公司 | 融合通信中智能语音交互系统及其实现方法 |
CN101911064A (zh) * | 2007-12-31 | 2010-12-08 | 摩托罗拉公司 | 用于实现分布式多模态应用的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805153A (en) * | 1995-11-28 | 1998-09-08 | Sun Microsystems, Inc. | Method and system for resizing the subtitles of a video |
BR0108899A (pt) * | 2000-03-03 | 2005-10-18 | Qualcomm Inc | Método e aparelho para participação em serviços de comunicação em grupo em um sistema de comunicação existente |
US20050102371A1 (en) * | 2003-11-07 | 2005-05-12 | Emre Aksu | Streaming from a server to a client |
US7979557B2 (en) * | 2008-04-11 | 2011-07-12 | Mobitv, Inc. | Fast setup response prediction |
KR20120119790A (ko) * | 2011-04-22 | 2012-10-31 | 삼성전자주식회사 | 미디어 데이터 전송 방법 및 장치와 미디어 데이터 수신 방법 및 장치 |
JP5942706B2 (ja) * | 2012-08-29 | 2016-06-29 | 富士通株式会社 | 監視装置,監視プログラム,監視方法 |
-
2013
- 2013-12-09 CN CN201310661738.8A patent/CN104702576B/zh active Active
-
2014
- 2014-12-09 TW TW103142885A patent/TWI570707B/zh active
-
2015
- 2015-02-06 WO PCT/CN2015/072378 patent/WO2015085964A1/zh active Application Filing
-
2016
- 2016-06-09 US US15/177,478 patent/US10516622B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1513252A (zh) * | 2001-06-04 | 2004-07-14 | �ʼҷ����ֵ�������˾ | 在流式传输应用中的实时分组化和重发 |
CN101272519A (zh) * | 2007-03-21 | 2008-09-24 | 上海贝尔阿尔卡特股份有限公司 | 生成协议数据单元的方法及其设备和基站 |
CN101911064A (zh) * | 2007-12-31 | 2010-12-08 | 摩托罗拉公司 | 用于实现分布式多模态应用的方法和装置 |
CN101699840A (zh) * | 2009-11-09 | 2010-04-28 | 南京希华通信技术有限公司 | 融合通信中智能语音交互系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US10516622B2 (en) | 2019-12-24 |
TWI570707B (zh) | 2017-02-11 |
CN104702576A (zh) | 2015-06-10 |
WO2015085964A1 (zh) | 2015-06-18 |
US20160294717A1 (en) | 2016-10-06 |
TW201523583A (zh) | 2015-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104702576B (zh) | 语音传输方法、装置和语音服务系统 | |
CN105788612B (zh) | 一种检测音质的方法和装置 | |
CN104598263B (zh) | 应用程序运行方法、配置文件生成方法和装置 | |
CN106201191A (zh) | 一种图标的批量处理方法、装置和移动终端 | |
CN104902531B (zh) | 连接网络的方法、应用认证服务器、终端及路由器 | |
CN103678605B (zh) | 一种信息传输的方法、装置及终端设备 | |
CN103678502B (zh) | 信息收藏方法和装置 | |
CN103905885A (zh) | 视频直播方法及装置 | |
CN107172477A (zh) | 投票方法及装置 | |
CN104852885A (zh) | 一种进行验证码验证的方法、装置和系统 | |
CN103699309B (zh) | 一种同步视频的录制方法、装置及移动终端 | |
CN104239332A (zh) | 网页内容处理方法、装置及浏览器客户端 | |
CN107436948A (zh) | 文件搜索方法、装置及终端 | |
CN106034114A (zh) | 多媒体信息分享方法及装置 | |
CN104216915A (zh) | 网页处理方法、装置和终端设备 | |
CN103475914A (zh) | 视频播放方法、装置、终端设备和服务器 | |
CN106570001B (zh) | 一种音译文字的方法及装置 | |
CN104598542A (zh) | 多媒体信息的显示方法及装置 | |
CN104731782B (zh) | 一种信息处理的方法及移动终端 | |
CN107622137A (zh) | 查找语音消息的方法和装置 | |
CN106371797A (zh) | 配置音效的方法及装置 | |
CN104166899B (zh) | 语音互动的方法及终端 | |
CN103399745A (zh) | 一种发送即时通讯信息的方法、装置及终端设备 | |
CN106228994B (zh) | 一种检测音质的方法和装置 | |
CN107622234A (zh) | 一种显示萌脸礼物的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |