CN109731345B - 语音处理方法及装置、电子设备、存储介质 - Google Patents
语音处理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN109731345B CN109731345B CN201910099729.1A CN201910099729A CN109731345B CN 109731345 B CN109731345 B CN 109731345B CN 201910099729 A CN201910099729 A CN 201910099729A CN 109731345 B CN109731345 B CN 109731345B
- Authority
- CN
- China
- Prior art keywords
- game
- type
- node
- type node
- voice
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开是关于一种语音处理方法及装置、电子设备、存储介质,涉及计算机技术领域,该方法包括:将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点;响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。本公开能够为游戏用户准确分配节点,实现实时语音交互。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种语音处理方法、语音处理装置、电子设备以及计算机可读存储介质。
背景技术
随着游戏在海外发布及全球同服部署,语音服务需要提供支持全球用户接入使用。在复杂的网络下部署服务与分配用户接入是最大的难点。
相关技术中,全球同服架构受限于网络,会在各大洲区域部署代理节点,用户连接代理节点,代理节点为每个用户创建一条连接,与实际服务器走网络专线交互。庞大的用户量需要大量的代理机器与高额的网络专线费用,导致代理节点以及数量过多,且成本较大。除此之外,对于分区域同服构架,一般在各区域独立部署一套完整的系统,其无法共用资源,导致各类资源的浪费,且维护成本高。这两种方式中,无法准确地为游戏用户分配语音服务器,因此在进行语音转发时,可能增加网络带宽成本,增加语音延迟,不能进行实时语音交互,降低了用户体验。
需要说明的是,在上述背景技术部分公开的数据仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的数据。
发明内容
本公开的目的在于提供一种语音处理方法及装置、电子设备、存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的无法准确分配语音服务器以及无法进行实时语音交互的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种语音处理方法,包括:
将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发;
响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;
根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
在本公开的一种示例性实施例中,所述游戏类型为全球同服游戏时,所述第一类型节点部署在多个区域,且所述第二类型节点部署在公共资源;或
所述游戏类型为分区部署游戏时,所述第一类型节点以及所述第二类型节点随所述游戏的游戏服务器部署在多个独立区域。
在本公开的一种示例性实施例中,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点包括:
根据所述游戏客户端的位置,为所述游戏用户分配离所述位置距离最近的第一类型节点的集合;
根据所述游戏用户所属的语音流,从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点。
在本公开的一种示例性实施例中,根据所述游戏客户端的位置,为所述游戏用户分配离所述位置距离最近的集合包括:
根据多个预设参数确定与所述游戏客户端所在位置距离最近的所述集合;其中,所述预设参数包括游戏编号、游戏服务器所在区域、空间标识、游戏客户端标识、所述游戏客户端的版本发行地中的至少一种。
在本公开的一种示例性实施例中,根据多个预设参数确定与所述游戏客户端所在位置距离最近的所述集合包括:
根据所述游戏编号确定所述游戏的配置文件,所述配置文件中包括所述游戏对应的可分配的集合;
对于分区部署游戏,根据所述游戏服务器所在区域确定所述集合;
对于全球同服游戏,根据所述游戏客户端标识和所述游戏客户端的版本发行地来确定所述游戏客户端所在区域,并在所述配置文件中确定离所述区域最近的集合。
在本公开的一种示例性实施例中,所述方法还包括:
若无法确定所述集合,则将通用集合作为与所述游戏客户端的位置距离最近的所述集合。
在本公开的一种示例性实施例中,根据所述游戏用户所属的语音流,从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点包括:
为所述游戏用户分配预设数量的第一类型节点;
根据所述集合中的所有第一类型节点得到哈希环,基于空间标识进行哈希操作,以为所述游戏用户分配所述第一类型节点;
将按照预设顺序排列在第一位的第一类型节点作为主节点,将预设数量中的其他第一类型节点作为备用节点。
在本公开的一种示例性实施例中,所述方法还包括:
若所述集合中所有第一类型节点的负载超过预设值,则从下一集合为所述游戏用户分配所述第一类型节点。
在本公开的一种示例性实施例中,所述方法还包括:
对所述集合中所有第一类型节点的负载进行监控,并在所述负载超过所述预设值时进行预警,以便于进行扩容操作。
在本公开的一种示例性实施例中,根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发包括:
若接收到所述游戏用户上传的语音数据,则根据所述游戏用户所属的语音流中多个游戏用户的分布情况转发所述语音数据。
在本公开的一种示例性实施例中,根据所述游戏用户所属的语音流中多个游戏用户的分布情况转发所述语音数据包括:
若所述语音流中多个游戏用户处于相同的第一类型节点,则通过所述第一类型节点对所述语音数据进行转发;
若所述语音流中多个游戏用户处于不同的第一类型节点,则通过为所述语音流分配的处于公共资源中的第二类型节点对所述语音数据进行转发。
根据本公开的一个方面,提供一种语音处理装置,包括:
节点划分模块,用于将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发;
节点分配模块,用于响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;
语音转发模块,用于根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的语音处理方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的语音处理方法。
本公开示例性实施例中提供的语音处理方法、语音处理装置、电子设备以及计算机可读存储介质中,一方面,根据语音服务器确定第一类型节点和第二类型节点,并根据游戏客户端的目标信息为对应游戏客户端的游戏用户分配第一类型节点,能够根据游戏客户端的目标信息准确地为每一个游戏用户分配第一类型节点,以对语音数据进行转发,拆分了游戏服务器的架构,能够独立部署节点,实现资源共用,避免浪费资源,降低维护成本。另一方面,由于根据游戏用户使用的游戏客户端的目标信息准确分配第一类型节点,并根据第一类型节点或第二类型节点对语音数据进行转发,能够减少网络带宽成本,减少语音延迟,从而实现实时语音交互,提高了用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本公开示例性实施例中一种语音处理方法的示意图;
图2示意性示出本公开示例性实施例中节点部署的示意图;
图3示意性示出本公开示例性实施例中一种语音处理装置的框图;
图4示意性示出本公开示例性实施例中一种电子设备的框图;
图5示意性示出本公开示例性实施例中一种程序产品。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本示例实施方式中首先提供了一种语音处理方法,可以应用于游戏应用中进行语音交互的应用场景。接下来,参考图1中所示对本示例性实施例中的语音处理方法进行具体说明。
在步骤S110中,将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发。
本示例性实施例中,语音服务器指的是对游戏用户发送的语音数据进行处理的服务器。为了避免相关技术中每个区域对应一套服务器系统,且无法共用资源而导致的各类资源浪费的问题,本示例性实施例中,可将语音服务器的架构拆分为公共资源和非公共资源两部分。其中,公共资源可以处理或实现预设功能,预设功能可以包括但不限于服务发现、负载管理、节点分配、语音流管理、系统监控等功能,例如图2中的公共资源所示。公共资源可以集中部署在同一机房,与其他服务器通过网络专线进行交互。将语音服务器划分为公共资源和非公共资源,使得公共资源通过网络专线与其他服务器进行交互,避免了每个代理节点均与服务器通过网络专线交互,避免了由于网络专线而导致的成本较高的问题,降低了成本。
非公共资源是语音服务器的核心层,其主要作用是负责语音数据转发和语音流的维护。非公共资源划分成2层,分别为两种类型的节点,具体包括第一类型节点和第二类型节点。其中,第一类型节点为Audionode节点,即语音节点;第二类型节点为Audiosrc节点。游戏用户指的是通过游戏客户端登录游戏服务器的游戏账户。游戏用户可通过所使用的游戏客户端连接Audionode节点并上传或发送语音数据,与此同时,Audionode节点可对语音数据进行归并和转发操作等。需要说明的是,第一类型节点和第二类型节点均可以为服务器。语音数据指的是语音包,可以为游戏用户定时发送或者是实时发送的语音。
在步骤S120中,响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点。
本示例性实施例中,游戏类型例如可以为全球同服游戏或者是分区部署游戏,全球同服游戏指的是所有游戏用户或玩家处于同一游戏服务器,分区部署游戏指的是每个区域对应一个游戏服务器。通过不同的游戏类型为游戏的第一类型节点和第二类型节点进行部署,能够更符合游戏本身的特性,使得节点(即语音服务器)部署更合理。
通过游戏的游戏类型对所述第一类型节点以及所述第二类型节点进行部署的具体情况包括以下两种:第一种,若所述游戏类型为全球同服游戏,则所述第一类型节点部署在多个区域,且所述第二类型节点部署在公共资源;第二种,若所述游戏类型为分区部署游戏,则所述第一类型节点以及所述第二类型节点均随游戏的游戏服务器独立部署在多个独立区域。也即是说,如果游戏A为全球同服游戏,多个区域可以为各大洲,则Audionode节点部署在各大洲,并且Audionode节点可以作为接入节点。参考图2中所示,多个Audionode节点可分别部署在日本、美国以及中国,每个区域中部署的Audionode节点的数量可以相同,也可以不同,此处不作特殊限定。对于全球同服游戏,可将第二类型节点(Audiosrc节点)部署在公共资源中。
对于分区部署游戏而言,可将第一类型节点以及第二类型节点一起随游戏服务器部署在多个独立区域。参考图2中所示,对于需要分区部署的游戏B而言,可将Audionode节点和Audiosrc节点一起随游戏服务器部署在多个区域,多个区域可以为独立区域,例如北美区域等等。Audionode节点和Audiosrc节点的数量可以相同,也可以不同。
通过游戏的类型对非公共资源中的第一类型节点和第二类型节点进行部署,能够更符合游戏的特性和要求,使得服务器节点部署更加合理和准确,提高节点部署的准确性。
本示例性实施例中,目标信息可以包括游戏用户所使用的游戏客户端所在的位置以及游戏用户所属的语音流。此处的位置指的是游戏用户所处的真实地理位置,例如中国,A城市。语音流可以是RTP(Real-time Transport Protocol,实时传送协议)报文形式,一个语音流中可包括多个游戏用户的语音包。本示例性实施例中,节点分配的主要目标包括:尽可能把属于同一个语音流的游戏用户分配到同一个Audionode节点、尽可能按游戏客户端的地理位置为游戏用户就近分配Audionode节点、不同游戏的游戏用户需要分开Audionode节点和Audiosrc节点。
在确定目标信息后,首先可根据游戏客户端的位置为所述游戏用户分配离所述位置距离最近的集合。具体过程包括:根据多个预设参数确定与所述游戏客户端所在位置距离最近的所述集合。其中,所述预设参数包括游戏编号、游戏服务器所在区域、空间标识、游戏客户端标识、所述游戏客户端的版本发行地中的至少一种。游戏编号可以用Gameid表示,游戏服务器所在区域可用region来表示,空间标识spaceid,游戏用户的游戏客户端标识clientip、游戏客户端版本发行地issue。需要说明的是,如果多个游戏用户处于同一个游戏场景中,则这些游戏用户具有相同的空间标识。
在确定离游戏客户端的位置距离最近的集合时,可依次执行以下几个步骤:首先,根据所述游戏编号确定所述游戏的配置文件,所述配置文件中包括所述游戏可分配的集合。一个游戏可对应的一个配置文件。每个Audionode节点和Audiosrc节点有一个集合group的配置项,一个集合group下有多个Audionode和Audiosrc节点,一个Audionode节点只能属于一个group。可在配置文件中配置各个游戏所能分配的group集合,以Audionode为例进行说明。
接下来,在确定配置文件后,可对不同类型的游戏确定离该游戏用户所使用的游戏客户端位置距离最近的集合。对于分区部署游戏,根据所述游戏服务器所在区域确定所述集合。例如,根据gameid找到配置文件,再优先根据游戏服务器所在区域找到游戏服务器的集合group,对于分区部署的游戏,配置文件中游戏服务器所在区域region可以随游戏服务器在各区域部署而调整配置,例如从region1调整为region2。
对于全球同服游戏,根据所述游戏用户的游戏客户端标识和游戏客户端版本发行地来确定游戏客户端所在区域,并在所述配置文件中确定离所述区域最近的集合。由于游戏服务器处于同一个区域,因此不要配置游戏服务器所在区域。在这种情况下,以游戏用户的游戏客户端标识clientip和游戏客户端版本发行地issue来确定游戏用户的游戏客户端所在区域,此处的区域可以为游戏客户端所在国家以及所在城市,从而在配置文件中找到离游戏客户端所在区域最近的group集合。通过不同的方式,为全球同服游戏和分区部署游戏确定最近的语音服务器集合,能够实现用户就近接入的目的。通过地理位置就近接入节点,能更好地减少网络消息延迟,提高语音交互的实时性。
需要补充的是,如果通过游戏服务器所在区域或者是通过游戏用户的游戏客户端标识和游戏客户端版本发行地确定的游戏客户端所在区域均不能得到游戏对应的第一类型节点的集合,则可以将通用集合作为与所述游戏用户所在位置距离最近的所述集合。例如,可将亚洲作为离游戏用户的位置距离最近的集合。离游戏用户的位置距离最近的集合可以为一个,也可以为多个,此处不作特殊限定。
举例而言,为游戏用户分配最近的集合group的过程可参考如下代码:
“games”:{
“10001”:{//游戏id
“name”:“游戏名字ABC”,
“regions”:{//游戏服务器所在分区对应的group集合
“Japan”:[“10001-Japan”,“10001-Singapore”],
“Singapore”:[“10001-Singapore”,“10001-Japan”],
“NorthAmerica”:[“10001-NorthAmerica”]
},
“country”:{
“HongKong”:[“10001-Singapore”,“10001-Japan”],
“Macao”:[“10001-Singapore”,“10001-Japan”],
“Japan”:[“10001-Japan”,“10001-Singapore”],
“Taiwan”:[“10001-Japan”,“10001-Singapore”],
},
“default”:[common-Asia],
}
}
在确定集合后,可从集合中选择第一类型节点,以将其分配给游戏用户。具体的过程包括:根据所述游戏用户所属的语音流,从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点。例如,游戏用户A所属的语音流为语音流1,则可根据集合中属于语音流1的其他用户的第一类型节点为游戏用户A分配第一类型节点,例如可将属于语音流1的其他用户的第一类型节点1作为给游戏用户A分配的第一类型节点。如此一来,能让游戏用户的语音包在Audionode进程内转发,而不需要通过其他节点转发,减少了Audionode节点和Audiosrc节点之间的网络通信,从而降低网络带宽成本,并提高语音消息的实时性。需要说明的是,为了减少Audionode节点和Audiosrc节点之间的网络通信,本示例性实施例中可尽可能地将属于同一个语音流的用户分配到同一个Audionode节点。
从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点包括以下步骤:第一步,为所述游戏用户分配预设数量的第一类型节点。预设数量可根据实际需求进行设置,例如5个或者是8个等等。可根据节点分配请求为游戏用户分配预设数量的第一类型节点,举例而言,每次接收到节点分配请求时,均可为游戏用户分配5个Audionode节点。由于集合group是一个有序的集合,因此在分配节点时,首先在排列在前边的集合中选择第一类型节点。举例而言,若集合的排列顺序为group1小于group2,则可首先从group1中确定第一类型节点;进而从group2中确定第一类型节点。
第二步,根据所述集合中的所有第一类型节点得到哈希环,基于所述空间标识进行哈希操作,以为所述游戏用户分配所述第一类型节点。哈希环可以理解为一致性哈希算法,属于分布式算法。其基本原理在于,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,假设某哈希函数H的值空间为0至232-1(即哈希值是一个32位无符号整型数)。整个空间按顺时针方向组织,且0和232-1在零点中方向重合。下一步将各个服务器使用哈希函数H进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置。本示例性实施例中,可将空间标识spaceid作为参数做哈希,确定预设数量的Audionode节点在环空间的位置。接下来使用以下算法定位数据访问到相应服务器:将数据key使用相同的函数H计算出哈希值h,根据哈希值h确定此数据在环上的位置,从确定的位置沿环顺时针“行走”,第一台遇到的服务器就是其定位到的服务器。
举例而言,若根据每个第一类型节点的哈希值确定的5个Audionode节点按照顺时针方向在环上的分布位置依次为节点2、节点1、节点3、节点4、节点5,则可为游戏用户分配节点2。如此一来,可定位到一个Audionode节点在环空间的位置,并将定位到的Audionode节点分配给游戏用户。通过每个集合中所有Audionode节点的哈希环,并以空间标识为参数进行哈希操作,从而可以准确地为游戏用户分配Audionode节点。
除此之外,在为游戏用户分配第一类型节点之后,可将定位的Audionode节点作为主节点。在此基础上,可按照顺时针顺序依次将一次分配请求对应的预设数量中的其他Audionode节点作为备用节点。在确定主节点和备用节点之后,可通过主节点或者是备用节点对游戏用户的语音数据进行转发。备用节点的作用是为了避免主节点异常而导致的客户端和服务器无法连接的问题,从而提高连接质量。当主节点负载过大或者是主节点异常时,可通过按照顺时针方向排列在该主节点的下一个备用节点连接客户端。例如,在节点2发生异常时,通过节点1连接游戏客户端。一般情况下,游戏客户端连接第一个Audionode节点便可完成整场实时语音,为避免第一个Audionode节点异常导致游戏客户端无法连接的问题,本示例性实施例中通过分配多余的备用节点,以保障服务的可用性,避免由于第一节点出现故障而导致的无法传输语音数据,进行语音交互的问题,保证了语音交互过程的正常进行。
需要补充的是,如果集合中的所有第一类型节点的负载超过预设值,则需要从其它集合中为游戏用户分配第一类型节点。所有第一类型节点包括当前集合中的主节点和备用节点。负载指的是第一类型节点连接的游戏客户端。预设值可根据实际需求进行设置,用于表示集合中所有第一类型节点可连接的客户端的最大数量,例如可设置为较大的数值。重新分配第一类型节点时,可从与当前集合对应的下一集合中进行分配,下一集合指的是除了当前集合之外,与游戏用户的位置距离最近的集合。在下一集合中为游戏用户分配第一类型节点的步骤与在当前集合中分配的方法相同,此处不作详细描述。在下一集合中所有第一类型节点的负载超过预设值时,可将下一集合重新作为当前集合,并从重新确定的当前集合的下一集合中为游戏用户分配第一类型节点,依次类推。重新确定的当前集合的下一集合指的是除了重新确定的当前集合之外,离游戏用户的位置距离最近的集合。
在集合中第一类型节点的负载过高的情况下,相同的空间标识spaceid分配到相同Audionode节点的可能性降低,此时需要依赖监控系统来对集合中第一类型节点的负载进行实时监控,以避免出现负载过高的情况。若监控到整个集合group中的负载超过设置的预设值时,则进行预警,以提示进行扩容操作。例如可以通过文字提示、声音提示等方式进行预警,本示例性实施例中对预警方式不作特殊限定。在接收到预警消息后,可对每个集合进行扩容操作,以提高系统的稳定性。
对于高并发的分配请求,往往在Audionode节点2次汇报实时负载间隔内,负载已经发生了巨大的变化,因此,分配系统需要根据自身的分配情况,实时的预测Audionode节点的负载,以避免被分配节点因自身负载过高而拒绝服务。
为游戏用户分配第二类型节点的方式与分配第一类型节点的方法相同,此处不作特殊限定。需要补充的是,对于不同游戏而言,不同游戏的用户需要分开部署Audionode节点和Audiosrc节点,以对不同游戏进行隔离。如此一来,可避免一个游戏将资源耗尽而影响到其他游戏的使用,同时也更方便监控到各游戏的资源使用情况。
在步骤S130中,根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
本示例性实施例中,在步骤S120的基础上,可对游戏用户通过客户端发送的语音数据进行转发。具体地,若接收到所述游戏用户上传的语音数据,则根据所述游戏用户所属的语音流中多个游戏用户的分布情况转发所述语音数据。多个游戏用户的分布情况指的是多个游戏用户处于相同的第一类型节点或者是多个游戏用户处于不同的第一类型节点。对于不同的分布情况,可通过不同的方式进行语音转发。根据语音流中的不同游戏用户所分布的第一类型节点,能够为每个游戏用户分配合适的第一类型节点,从而直接通过第一类型节点进行语音转发,而不需要借助其他节点,减少不必要的网络转发、实现公共资源可共享、同时各游戏资源彼此隔离,很好的为全球同服和分区部署的游戏提供高效、稳定的服务的功能。
具体地,若所述语音流中多个游戏用户处于相同的第一类型节点,则通过所述第一类型节点对所述语音数据进行转发;若所述语音流中多个游戏用户处于不同的第一类型节点,则通过为所述语音流分配的处于公共资源中的第二类型节点对所述语音数据进行转发。
也就是说,如果游戏用户所属的语音流中,同一个语音流中的所有游戏用户都在同一个Audionode节点,则游戏用户发送的语音数据即语音包直接在此Audionode节点中完成转发。通过Audionode节点转发语音包,以在Audionode进程内完成语音数据转发操作,使得非公共资源与公共资源之间通讯频率远比语音包要小,能够减少Audionode节点和Audiosrc节点之间的网络通信,从而降低网络带宽成本,并提高语音消息的实时性。
如果游戏用户所属的语音流中,同一个语音流中的所有游戏用户分布在多个第一类型节点(Audionode节点),则通过为此语音流分配的位于公共资源中的第二类型节点即Audiosrc节点转发游戏用户的语音数据。
本示例性实施例中,通过为是否处于同一个第一类型节点等不同的分布情况设置不同的语音数据转发方式,能够更准确地确定合适的转发方式,快速准确地转发语音数据,从而使游戏中的所有游戏用户准确进行语音交互,能够提高语音交互的实时性和用户体验。
本公开还提供了一种语音处理装置。参考图3所示,该语音处理装置300可以包括:
节点划分模块301,用于将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发;
节点分配模块302,用于响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;
语音转发模块303,用于根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
需要说明的是,上述语音处理装置中各模块的具体细节已经在对应的语音处理方法中进行了详细描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图4来描述根据本发明的这种实施方式的电子设备400。图4显示的电子设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:上述至少一个处理单元410、上述至少一个存储单元420、连接不同系统组件(包括存储单元420和处理单元410)的总线430。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元410执行,使得所述处理单元410执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元410可以执行如图1中所示的步骤。
存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)4201和/或高速缓存存储单元4202,还可以进一步包括只读存储单元(ROM)4203。
存储单元420还可以包括具有一组(至少一个)程序模块4205的程序/实用工具4204,这样的程序模块4205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
显示单元440可以为具有显示功能的显示器,以通过该显示器展示由处理单元410执行本示例性实施例中的方法而得到的处理结果。显示器包括但不限于液晶显示器或者是其它显示器。
电子设备400也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备400交互的设备通信,和/或与使得该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口450进行。并且,电子设备400还可以通过网络适配器460与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器460通过总线430与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (13)
1.一种语音处理方法,其特征在于,包括:
将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发;
响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;其中,所述游戏类型为全球同服游戏时,所述第一类型节点部署在多个区域且所述第二类型节点部署在公共资源;或所述游戏类型为分区部署游戏时,所述第一类型节点以及所述第二类型节点随所述游戏的游戏服务器部署在多个独立区域;
根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
2.根据权利要求1所述的语音处理方法,其特征在于,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点包括:
根据所述游戏客户端的位置,为所述游戏用户分配离所述位置距离最近的第一类型节点的集合;
根据所述游戏用户所属的语音流,从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点。
3.根据权利要求2所述的语音处理方法,其特征在于,根据所述游戏客户端的位置,为所述游戏用户分配离所述位置距离最近的集合包括:
根据多个预设参数确定与所述游戏客户端所在位置距离最近的所述集合;其中,所述预设参数包括游戏编号、游戏服务器所在区域、空间标识、游戏客户端标识、所述游戏客户端的版本发行地中的至少一种。
4.根据权利要求3所述的语音处理方法,其特征在于,根据多个预设参数确定与所述游戏客户端所在位置距离最近的所述集合包括:
根据所述游戏编号确定所述游戏的配置文件,所述配置文件中包括所述游戏对应的可分配的集合;
对于分区部署游戏,根据所述游戏服务器所在区域确定所述集合;
对于全球同服游戏,根据所述游戏客户端标识和所述游戏客户端的版本发行地来确定所述游戏客户端所在区域,并在所述配置文件中确定离所述区域最近的集合。
5.根据权利要求4所述的语音处理方法,其特征在于,所述方法还包括:
若无法确定所述集合,则将通用集合作为与所述游戏客户端的位置距离最近的所述集合。
6.根据权利要求2所述的语音处理方法,其特征在于,根据所述游戏用户所属的语音流,从所述集合中为所述游戏用户分配所述语音流对应的第一类型节点包括:
为所述游戏用户分配预设数量的第一类型节点;
根据所述集合中的所有第一类型节点得到哈希环,基于空间标识进行哈希操作,以为所述游戏用户分配所述第一类型节点;
将按照预设顺序排列在第一位的第一类型节点作为主节点,将预设数量中的其他第一类型节点作为备用节点。
7.根据权利要求6所述的语音处理方法,其特征在于,所述方法还包括:
若所述集合中所有第一类型节点的负载超过预设值,则从下一集合为所述游戏用户分配所述第一类型节点。
8.根据权利要求7所述的语音处理方法,其特征在于,所述方法还包括:
对所述集合中所有第一类型节点的负载进行监控,并在所述负载超过所述预设值时进行预警,以便于进行扩容操作。
9.根据权利要求1所述的语音处理方法,其特征在于,根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发包括:
若接收到所述游戏用户上传的语音数据,则根据所述游戏用户所属的语音流中多个游戏用户的分布情况转发所述语音数据。
10.根据权利要求9所述的语音处理方法,其特征在于,根据所述游戏用户所属的语音流中多个游戏用户的分布情况转发所述语音数据包括:
若所述语音流中多个游戏用户处于相同的第一类型节点,则通过所述第一类型节点对所述语音数据进行转发;
若所述语音流中多个游戏用户处于不同的第一类型节点,则通过为所述语音流分配的处于公共资源中的第二类型节点对所述语音数据进行转发。
11.一种语音处理装置,其特征在于,包括:
节点划分模块,用于将语音服务器划分为用于处理预设功能的公共资源和用于转发语音数据的非公共资源,并从所述非公共资源中确定第一类型节点和第二类型节点,其中,所述第一类型节点用于对语音数据进行直接转发,所述第二类型节点用于对第一类型节点无法转发的语音数据进行转发;
节点分配模块,用于响应于根据游戏的游戏类型部署的所述第一类型节点以及所述第二类型节点,根据游戏客户端的目标信息为游戏用户分配所述第一类型节点;其中,所述游戏类型为全球同服游戏时,所述第一类型节点部署在多个区域且所述第二类型节点部署在公共资源;或所述游戏类型为分区部署游戏时,所述第一类型节点以及所述第二类型节点随所述游戏的游戏服务器部署在多个独立区域;
语音转发模块,用于根据为所述游戏用户分配的所述第一类型节点或所述第二类型节点,对所述游戏用户的语音数据进行转发,以便于所述游戏用户进行语音交互。
12.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-10任意一项所述的语音处理方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任意一项所述的语音处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910099729.1A CN109731345B (zh) | 2019-01-31 | 2019-01-31 | 语音处理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910099729.1A CN109731345B (zh) | 2019-01-31 | 2019-01-31 | 语音处理方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109731345A CN109731345A (zh) | 2019-05-10 |
CN109731345B true CN109731345B (zh) | 2022-03-04 |
Family
ID=66367129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910099729.1A Active CN109731345B (zh) | 2019-01-31 | 2019-01-31 | 语音处理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109731345B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1519531A2 (en) * | 2003-09-25 | 2005-03-30 | Microsoft Corporation | Server control of peer to peer communications |
CN104069637A (zh) * | 2002-04-26 | 2014-10-01 | 索尼电脑娱乐美国有限责任公司 | 在多用户网络游戏环境中管理用户的方法和系统 |
CN107911361A (zh) * | 2017-11-14 | 2018-04-13 | 网易(杭州)网络有限公司 | 支持多会话的语音管理方法、装置、终端设备及存储介质 |
CN108257590A (zh) * | 2018-01-05 | 2018-07-06 | 携程旅游信息技术(上海)有限公司 | 语音交互方法、装置、电子设备、存储介质 |
CN109224435A (zh) * | 2018-07-06 | 2019-01-18 | 北京金山安全软件有限公司 | 一种网络游戏加速方法、装置、电子设备及存储介质 |
-
2019
- 2019-01-31 CN CN201910099729.1A patent/CN109731345B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104069637A (zh) * | 2002-04-26 | 2014-10-01 | 索尼电脑娱乐美国有限责任公司 | 在多用户网络游戏环境中管理用户的方法和系统 |
EP1519531A2 (en) * | 2003-09-25 | 2005-03-30 | Microsoft Corporation | Server control of peer to peer communications |
CN107911361A (zh) * | 2017-11-14 | 2018-04-13 | 网易(杭州)网络有限公司 | 支持多会话的语音管理方法、装置、终端设备及存储介质 |
CN108257590A (zh) * | 2018-01-05 | 2018-07-06 | 携程旅游信息技术(上海)有限公司 | 语音交互方法、装置、电子设备、存储介质 |
CN109224435A (zh) * | 2018-07-06 | 2019-01-18 | 北京金山安全软件有限公司 | 一种网络游戏加速方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109731345A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3968605A1 (en) | Method for providing edge service, apparatus and device | |
US10171567B2 (en) | Load balancing computer device, system, and method | |
US9999030B2 (en) | Resource provisioning method | |
US10644952B2 (en) | VNF failover method and apparatus | |
JP5458308B2 (ja) | 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置 | |
US11432137B2 (en) | Service notification method for mobile edge host and apparatus | |
US20120167081A1 (en) | Application Service Performance in Cloud Computing | |
US11153269B2 (en) | On-node DHCP implementation for virtual machines | |
CN109621430A (zh) | 游戏服务端系统、游戏控制方法、装置、介质及电子设备 | |
CN110719273A (zh) | 回源节点的确定方法、服务器及计算机可读存储介质 | |
CN110830574A (zh) | 一种基于docker容器实现内网负载均衡的方法 | |
CN104506654A (zh) | 云计算系统及动态主机配置协议服务器备份方法 | |
CN114615268B (zh) | 基于Kubernetes集群的服务网络、监控节点、容器节点及设备 | |
CN115280288A (zh) | 服务器系统和管理服务器系统的方法 | |
WO2022116849A1 (zh) | 服务分配方法、装置、电子设备及存储介质 | |
JP2024529099A (ja) | コンテナグループを稼働させるためのノード、ならびにコンテナグループ管理システムおよび方法 | |
CN110958326B (zh) | 一种负载均衡方法、装置、系统、设备及介质 | |
US10592221B2 (en) | Parallel distribution of application services to virtual nodes | |
CN109731345B (zh) | 语音处理方法及装置、电子设备、存储介质 | |
US20230337018A1 (en) | Centralized unit user plane (cu-up) and centralized unit control plane (cu-cp) standby pods in a cloud-native fifth generation (5g) wireless telecommunication network | |
WO2019091284A1 (zh) | 设备升级方法及装置 | |
CN112655185A (zh) | 软件定义网络中的服务分配的设备、方法和存储介质 | |
JP2019041241A (ja) | 振り分けシステム | |
US20170116016A1 (en) | Screen compression service method and virtual network apparatus for performing the method | |
US20230336405A1 (en) | Failover of cloud-native network functions within node groups for high availability in a wireless telecommunication network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |