CN111524494B - 一种异地实时合唱方法及装置、存储介质 - Google Patents

一种异地实时合唱方法及装置、存储介质 Download PDF

Info

Publication number
CN111524494B
CN111524494B CN202010345610.0A CN202010345610A CN111524494B CN 111524494 B CN111524494 B CN 111524494B CN 202010345610 A CN202010345610 A CN 202010345610A CN 111524494 B CN111524494 B CN 111524494B
Authority
CN
China
Prior art keywords
chorus
time
user terminal
audio data
moment
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
Application number
CN202010345610.0A
Other languages
English (en)
Other versions
CN111524494A (zh
Inventor
刘腾飞
黄斯亮
雷勇
欧阳金凯
文绍斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Music Entertainment Technology Shenzhen Co Ltd
Original Assignee
Tencent Music Entertainment Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Music Entertainment Technology Shenzhen Co Ltd filed Critical Tencent Music Entertainment Technology Shenzhen Co Ltd
Priority to CN202010345610.0A priority Critical patent/CN111524494B/zh
Publication of CN111524494A publication Critical patent/CN111524494A/zh
Application granted granted Critical
Publication of CN111524494B publication Critical patent/CN111524494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/36Accompaniment arrangements
    • G10H1/361Recording/reproducing of accompaniment for use with an external source, e.g. karaoke systems

Abstract

本申请实施例公开了一种异地实时合唱方法及装置、存储介质,包括:播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,第二合唱用户的音频数据携带第二合唱用户终端录制干声音频数据时添加的伴奏时间戳;在第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据携带的伴奏时间戳,确定合唱延迟时长;若合唱延迟时长大于预设延迟时长阈值,则对目标音频数据进行加速播放。采用本申请,可以使参与合唱的合唱用户均有完整的实时合唱体验,提升K歌的互动性和趣味性。

Description

一种异地实时合唱方法及装置、存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种异地实时合唱方法及装置、存储介质。
背景技术
目前,异地合唱方案主要是通过在线直播和异步两种方式实现,上述两种方式均是合唱发起者播放合唱歌曲的伴奏并独自演唱自己的部分上传服务器,参与合唱者下载并播放合唱发起者的半合唱音频并进行合唱完成合唱成品。区别在于,在线直播方式是合唱发起者一边唱一边将自己的演唱音频发送给合唱参与者,异步方式则是合唱发起者将整首合唱歌曲唱完后再将自己整首歌曲的演唱音频发送给合唱参与者,上述两种方案均存在合唱发起者没有实时合唱体验的问题。
申请内容
本申请实施例提供一种异地实时合唱方法及装置、存储介质,以期使参与合唱的合唱用户均有完整的实时合唱体验,提升K歌的互动性和趣味性。
第一方面,为本申请实施例提供了一种异地实时合唱方法,上述方法应用于第一合唱用户终端,包括:
播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,上述第二合唱用户的音频数据携带第二合唱用户终端录制上述干声音频数据时添加的伴奏时间戳;
在上述第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;
根据上述目标时刻时上述第一合唱用户终端播放上述伴奏音频的播放进度时长与上述目标音频数据携带的伴奏时间戳,确定合唱延迟时长;
若上述合唱延迟时长大于预设延迟时长阈值,则对上述目标音频数据进行加速播放。
可选的,上述对上述目标音频数据进行加速播放,包括:
根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
根据上述待加速时长确定上述目标音频数据的同步合唱播放位置,从上述同步合唱播放位置处播放上述目标音频数据。
可选的,上述对上述目标音频数据进行加速播放,还包括:
根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
根据上述待加速时长和预设倍速确定上述目标音频数据中待加速播放音频数据,并确定上述目标音频数据中常速播放音频数据;
按照上述预设倍速开始播放上述待加速播放音频数据,并在上述待加速播放音频数据播放结束后按照常速开始播放上述常速播放音频数据。
可选的,上述目标时刻为上述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。
可选的,上述方法还包括:
将上述第一合唱用户的干声音频数据、上述至少一个干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段;
将上述合唱片段发送至流媒体服务器,以使上述流媒体服务器将上述合唱片段发送至听众用户终端。
可选的,上述播放合唱歌曲的伴奏音频之前,包括:
在第一时刻向第二合唱用户终端发送第一数据包;
在第二时刻接收到上述第二合唱用户终端发送的第二数据包及发送上述第二数据包的第三时刻,其中,上述第二数据包为上述第二合唱用户终端在上述第三时刻接收到第一合唱用户终端发送的上述第一数据包时向上述第一合唱用户终端返回的数据包;
基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,其中,上述第一合唱用户终端的合唱修正开始时间为上述第一合唱用户终端播放上述伴奏音频的时刻,上述初始合唱开始时间为上述第一合唱用户终端与上述第二合唱用户终端共同确定得到。
可选的,上述基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,包括:
计算上述第一时刻和上述第二时刻的中间时刻与上述第三时刻之间的时间差,得到上述基准时刻偏移量。
可选的,上述根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,包括:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为起始点向后延迟上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述起始点向前提前上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间。
可选的,上述根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,还包括:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为第二起始点向前提前第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间,其中,上述第一预设时长和上述第二预设时长之间的和为上述基准时刻偏移量的绝对值;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述第一起始点向前提前上述第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为上述第二起始点向后延迟上述第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间。
第二方面,为本申请实施例提供了一种异地实时合唱装置,包括:
播放获取模块,用于播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收生成模块,用于接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,所述第二合唱用户的音频数据携带第二合唱用户终端录制所述干声音频数据时添加的伴奏时间戳;
目标音频确定模块,用于在上述第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;
延迟时长确定模块,用于根据上述目标时刻时上述第一合唱用户终端播放上述伴奏音频的播放进度时长与上述目标音频数据携带的伴奏时间戳,确定合唱延迟时长;其中,上述目标时刻为上述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。
加速播放模块,用于若上述合唱延迟时长大于预设延迟时长阈值,则对上述目标音频数据进行加速播放。
可选的,上述加速播放模块,包括:
待加速时长确定单元,用于根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
第一播放目标音频单元,用于根据上述待加速时长确定上述目标音频数据的同步合唱播放位置,从上述同步合唱播放位置处播放上述目标音频数据。
可选的,上述加速播放模块,还包括:
上述待加速时长确定单元,用于根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
加速常速播放音频确定单元,用于根据上述待加速时长和预设倍速确定上述目标音频数据中待加速播放音频数据,并确定上述目标音频数据中常速播放音频数据;
第二播放目标音频单元,用于按照上述预设倍速开始播放上述待加速播放音频数据,并在上述待加速播放音频数据播放结束后按照常速开始播放上述常速播放音频数据。
可选的,上述装置还包括:
合成合唱片段模块,用于将上述第一合唱用户的干声音频数据、上述至少一个干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段;
发送合唱片段模块,用于将上述合唱片段发送至流媒体服务器,以使上述流媒体服务器将上述合唱片段发送至听众用户终端。
可选的,上述装置还包括:
发送模块,用于在第一时刻向上述第二合唱用户终端发送第一数据包;
接收模块,用于在第二时刻接收到上述第二合唱用户终端发送的第二数据包及发送上述第二数据包的第三时刻,其中,上述第二数据包为上述第二合唱用户终端在上述第三时刻接收到第一合唱用户终端发送的上述第一数据包时向上述第一合唱用户终端返回的数据包;
合唱修正开始时间确定模块,用于基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,其中,上述第一合唱用户终端的合唱修正开始时间为上述第一合唱用户终端播放上述伴奏音频的时刻,上述初始合唱开始时间为上述第一合唱用户终端与上述第二合唱用户终端共同确定得到。
可选的,上述合唱修正开始时间确定模块,具体用于:
计算上述第一时刻和上述第二时刻的中间时刻与上述第三时刻之间的时间差,得到上述基准时刻偏移量。
可选的,上述合唱修正开始时间确定模块,具体用于:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为起始点向后延迟上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述起始点向前提前上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间。
可选的,上述合唱修正开始时间确定模块,还具体用于:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为第二起始点向前提前第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间,其中,上述第一预设时长和上述第二预设时长之间的和为上述基准时刻偏移量的绝对值;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述第一起始点向前提前上述第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为上述第二起始点向后延迟上述第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间。
第三方面,为本申请实施例提供了一种异地实时合唱装置,包括处理器、存储器和收发器,所述处理器、所述存储器和所述收发器相互连接,其中,所述存储器用于存储支持所述电子设备执行上述异地实时合唱方法的计算机程序,所述计算机程序包括程序指令;所述处理器被配置用于调用所述程序指令,执行如上述本申请实施例一方面中所述的异地实时合唱方法。
第四方面,为本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令;所述程序指令当被处理器执行时使所述处理器执行如本申请实施例一方面中所述的异地实时合唱方法。
在本申请实施例中,播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据;在第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳,确定合唱延迟时长;若合唱延迟时长大于预设延迟时长阈值,则对目标音频数据进行加速播放。采用本申请,可以使参与合唱的合唱用户均有完整的实时合唱体验,提升K歌的互动性和趣味性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种可能的系统架构图;
图2是本申请实施例提供的一种异地实时合唱方法的流程示意图;
图3是本申请实施例提供的一种确定合唱修正开始时间的过程示意图;
图4a和图4b是本申请实施例提供的一种开始合唱的人机交互界面示意图;
图5是本申请实施例提供的另一种确定合唱修正开始时间的过程示意图;
图6a和图6b是本申请实施例提供的另一种异地实时合唱方法的流程示意图;
图7a和图7b是本申请实施例提供的另一种异地实时合唱方法的流程示意图;
图8a和图8b是本申请实施例提供的另一种异地实时合唱方法的流程示意图;
图9是本申请实施例提供的一种异地实时合唱装置的结构示意图;
图10是本申请实施例提供的另一种异地实时合唱装置的结构示意图;
图11是本申请实施例提供的另一种异地实时合唱装置的结构示意图;
图12是本申请实施例提供的另一种异地实时合唱装置的结构示意图;
图13是本申请实施例提供的另一种异地实时合唱装置的结构示意图;
图14是本申请实施例提供的另一种异地实时合唱装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请实施例提供的一种可能的系统架构图。目前,异地合唱方案主要是通过在线直播和异步两种方式实现,上述两种方式均是合唱发起者播放合唱歌曲的伴奏并独自演唱自己的部分上传服务器,参与合唱者下载并播放合唱发起者的半合唱音频并进行合唱完成合唱成品。区别在于,在线直播方式是合唱发起者一边唱一边将自己的演唱音频发送给合唱参与者,异步方式则是合唱发起者将整首合唱歌曲唱完后再将自己整首歌曲的演唱音频发送给合唱参与者,上述两种方案均存在合唱发起者没有实时合唱体验的问题。因此,本申请实施例提出一种异地实时合唱方法,使参与合唱的合唱用户均有完整的实时合唱体验,提升K歌的互动性和趣味性。如图1所示,该系统架构图包括第一合唱用户所使用的第一合唱用户终端101、第二合唱用户所使用的第二合唱用户终端102、流媒体服务器103和听众用户所使用的听众用户终端104。其中,第一合唱用户终端101和第二合唱用户终端102之间可以通过组网服务器建立点对点直连,直接相互发送数据,也可以通过流媒体服务器103进行数据的转发。
进一步地,如图1所示,在具体实施异地实时合唱方法的过程中,第一合唱用户终端101和第二合唱用户终端102均播放合唱歌曲的伴奏音频,并在播放伴奏音频的过程中分别通过麦克风对第一合唱用户演唱的干声音频数据和第二合唱用户演唱的干声音频数据进行录制,得到第一合唱用户的干声音频数据和第二合唱用户的干声音频数据,并将各自录制得到的干声音频数据直接发送至对方合唱终端,或者将各自录制得到的干声音频数据发送至流媒体服务器103,再由流媒体服务器103将各自录制的干声音频数据发送至对方合唱终端。第一合唱用户终端101和第二合唱用户终端102分别对接收到的第二合唱用户的干声音频数据和第一合唱用户的干声音频数据进行播放,之后,可以由第一合唱用户终端、流媒体服务器或者听众用户终端进行音频合成,下面以音频合成的执行主体为第一合唱用户终端进行举例介绍。例如,第一合唱用户终端101对录制获得的第一合唱用户的干声音频数据、接收到的第二合唱用户的干声音频数据和第一合唱用户终端101通过访问流媒体服务器获取的合唱歌曲的伴奏音频进行对齐合成,得到合唱歌曲的合唱片段,并将合唱片段发送至流媒体服务器103,流媒体服务器103将合唱片段发送至听众用户终端104,从而听众用户可以通过听众用户终端104实时获取并播放合唱片段,并且所有听众用户获得的合唱片段的合成对齐效果一致。
本申请涉及的第一合唱用户终端、第二合唱用户终端或听众用户终端可以指用户设备(user equipment,UE),可以为手持终端、笔记本电脑、用户单元(subscriber unit)、蜂窝电话(cellular phone)、智能电话(smart phone)、个人数字助理(personal digitalassistant,PDA)电脑、平板型电脑、无线调制解调器(modem)、手持设备(handheld)、膝上型电脑(laptop computer)、无绳电话(cordless phone)或者无线本地环路(wireless localloop,WLL)台、机器类型通信(machine type communication,MTC)终端或是其他设备。
本申请中的方法实施例均以异地实施合唱装置为执行主体进行介绍,其中,异地实时合唱装置可以为第一合唱用户终端、流媒体服务器和听众用户终端中的任意一个,至于异地实时合唱装置具体指代情况,请参见后续实施例的描述。
请参见图2,是本申请实施例提供的一种异地实时合唱方法的流程示意图。如图2所示,该方法实施例包括如下步骤:
S101,播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据。
在执行步骤S101之前,异地实时合唱装置(第一合唱用户终端)可以通过与第二合唱用户终端之间相互发送数据包协商的方式,确定异地实时合唱装置(第一合唱用户终端)和第二合唱用户终端播放伴奏音频的时刻,具体实现过程如下:
一种可能的实施方式中,所述播放合唱歌曲的伴奏音频之前,包括:
在第一时刻向第二合唱用户终端发送第一数据包;
在第二时刻接收到所述第二合唱用户终端发送的第二数据包及发送所述第二数据包的第三时刻,其中,所述第二数据包为所述第二合唱用户终端在所述第三时刻接收到第一合唱用户终端发送的所述第一数据包时向所述第一合唱用户终端返回的数据包;
基于所述第一时刻、所述第二时刻和所述第三时刻得到基准时刻偏移量,根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,其中,所述第一合唱用户终端的合唱修正开始时间为所述第一合唱用户终端播放所述伴奏音频的时刻,所述初始合唱开始时间为所述第一合唱用户终端与所述第二合唱用户终端共同确定得到。
其中,第一时刻可以为随机时间,第一时刻和第三时刻均为第一合唱用户终端上显示的本地时间,第二时刻为第二合唱用户终端上显示的本地时间。此外,本实施例中对第一数据包和第二数据包的内容不做限定。
此外,第一合唱用户终端在第一时刻向所述第二合唱用户终端发送第一数据包,可以通过以下方式实现:第一合唱用户终端在第一时刻直接向第二合唱用户终端发送第一数据包,该方式中第一合唱用户终端与第二合唱用户终端之间的点对点直连可以通过组网服务器实现;或者,第一合唱用户终端在第一时刻将第一数据包发送给流媒体服务器,以使流媒体服务器在接收到第一数据包后将第一数据包发送给第二合唱用户终端。
下面针对第一合唱用户终端与第二合唱用户终端点对点直连的情况,按照确定基准时刻偏移量、初始合唱开始时间和第一合唱用户终端的合唱修正开始时间的顺序进行详细介绍。
请参见图3,是本申请实施例提供的一种确定合唱修正开始时间的过程示意图。如图3所示,TA3为第一时刻TA1和第二时刻TA2的中间时刻,中间时刻TA3与第三时刻TB1之间的时间差即为基准时刻偏移量ΔT。
举例来说,在异地实时合唱装置(第一合唱用户终端)向第二合唱用户终端传输数据的网络延迟(如1秒)与第二合唱用户终端向异地实时合唱装置(第一合唱用户终端)传输数据的网络延迟(如0.5秒)均固定不变的情况下,异地实时合唱装置(第一合唱用户终端)在第一时刻TA1即14点50分向第二合唱用户终端发送第一数据包,第二合唱用户终端在第三时刻TB1即14点50分01秒时接收到异地实时合唱装置(第一合唱用户终端)发送的第一数据包,并立刻将第二数据包发送给异地实时合唱装置(第一合唱用户终端),异地实时合唱装置(第一合唱用户终端)在第二时刻TA2即14点50分1.5秒时接收到第二合唱用户终端发送的第二数据包,并计算得到第一时刻TA1即14点50分和第二时刻TA2即14点50分1.5秒的中间时刻TA3为14点50分0.75秒,之后计算中间时刻TA3即14点50分0.75秒与第三时刻TB1即14点50分01秒之间的时间差,得到基准时刻偏移量ΔT为-0.25秒。
需要说明的是,可以将中间时刻和第三时刻分别理解为异地实时合唱装置(第一合唱用户终端)的基准时刻和第二合唱用户终端的基准时刻,由于TA3为第一时刻TA1和第二时刻TA2的中间时刻,得到ΔT1=ΔT2,均等于异地实时合唱装置(第一合唱用户终端)第一接收延迟时长(第一合唱用户终端接收到第二数据包的时间即第二时刻TA2与第一合唱用户终端向第二合唱用户终端发送第一数据包的时间即第一时刻TA1之间的时间差)的一半,又由于异地实时合唱装置(第一合唱用户终端)向第二合唱用户终端传输数据的网络延时固定,根据平行四边形对边相等原理,得到异地实时合唱装置(第一合唱用户终端)的第二接收延迟时长ΔT2与第二合唱用户终端的接收延迟时长ΔT3相等,且接收延迟时长最小。
异地实时合唱装置(第一合唱用户终端)根据基准时刻偏移量与初始合唱开始时间确定异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间之前,异地实时合唱装置(第一合唱用户终端)确定初始合唱开始时间的具体实现过程如下:
一种可能的实现方式中,所述第一合唱用户终端向流媒体服务器发送第一合唱用户通过点击第一开始界面中的第一开始按键发送的第一开始信号,以使所述流媒体服务器在接收到所述第一合唱用户终端发送的所述第一开始信号和所述第二合唱用户终端发送的第二开始信号后,根据接收到所述第一开始信号和所述第二开始信号的时间确定所述初始合唱开始时间,并将所述初始合唱开始时间发送至所述第一合唱用户终端和所述第二合唱用户终端,其中,所述第二开始信号为第二合唱用户通过点击第二开始界面中的第二开始按键产生的开始信号。
举例来说,第一合唱用户点击异地实时合唱装置(第一合唱用户终端)第一开始界面中的第一开始按键,从而使异地实时合唱装置(第一合唱用户终端)向流媒体服务器发送第一开始信号,第二合唱用户点击第二合唱用户终端第二开始界面中的第二开始按键,从而使第二合唱用户终端向流媒体服务器发送第二开始信号,流媒体服务器分别在15点和15点01分接收到异地实时合唱装置(第一合唱用户终端)发送的第一开始信号和第二合唱用户终端发送的第二开始信号,则流媒体服务器根据接收到的第一开始信号和第二开始信号中最后接收到的第二开始信号的时间15点01分,向后延迟1分钟,得到初始合唱开始时间为15点02分,并将初始合唱开始时间分别发送至异地实时合唱装置(第一合唱用户终端)和第二合唱用户终端。
另一种可能的实施方式中,所述第一合唱用户终端接收第一合唱用户通过点击第一开始界面中的第一开始按键发送的第一开始信号;接收所述第二合唱用户终端发送的第二开始信号,所述第二开始信号为第二合唱用户通过点击第二开始界面中的第二开始按键产生的开始信号;在接收到所述第一开始信号和所述第二开始信号后,根据接收到所述第一开始信号和所述第二开始信号的时间确定所述初始合唱开始时间,并将所述初始合唱开始时间发送至所述第二合唱用户终端。
举例来说,第一合唱用户通过点击异地实时合唱装置(第一合唱用户终端)第一开始界面中的第一开始按键向异地实时合唱装置(第一合唱用户终端)发送第一开始信号,第二合唱用户点击第二合唱用户终端第二开始界面中的第二开始按键,从而使第二合唱用户终端向异地实时合唱装置(第一合唱用户终端)发送第二开始信号,异地实时合唱装置(第一合唱用户终端)分别在15点和14点59分接收到第一合唱用户发送的第一开始信号和第二合唱用户终端发送的第二开始信号,则异地实时合唱装置(第一合唱用户终端)根据接收到的第一开始信号和第二开始信号中最后接收到的第一开始信号的时间15点,向后延迟10秒,得到初始合唱开始时间为15点10秒,并将初始合唱开始时间发送至第二合唱用户终端。
异地实时合唱装置(第一合唱用户终端)在接收到第一合唱用户通过点击第一开始界面中的第一开始按键发送的第一开始信号之后,还执行以下操作:
若所述第一合唱用户终端接收到所述第一开始信号,并且未接收到所述第二开始信号,则通过所述第一开始界面向所述第一合唱用户展示第一等待消息,并向所述第二合唱用户终端发送第一提醒消息,所述第一提醒消息用于将所述第一合唱用户终端做好合唱准备的消息通知所述第二合唱用户终端;
若所述第一合唱用户终端接收到所述第二开始信号,并且未接收到所述第一开始信号,则通过所述第一开始界面向所述第一合唱用户展示第二提醒消息。
举例来说,请参见图4a,是本申请实施例提供的一种开始合唱的人机交互界面示意图。如图4a所示,异地实时合唱装置(第一合唱用户终端)接收到第一合唱用户通过点击第一开始界面400a中的“开始”按键产生的第一开始信号,并未接收到第二合唱用户终端发送的第二开始信号,则通过向第一合唱用户展示人机交互界面401a的第一等待消息“第二合唱用户未做好合唱准备,请耐心等待”,并向第二合唱用户终端发送第一提醒消息,第二合唱用户终端在接收到第一提醒消息后,通过人机交互界面402a将第一提醒消息“第一合唱用户已做好合唱准备,是否要现在开始进行合唱”展示给第二合唱用户,从而第二合唱用户可以通过点击人机交互界面402a中的“开始”按键进行合唱,也可以通过点击“取消”按键继续准备。
又举例来说,请参见图4b,是本申请实施例提供的一种开始合唱的人机交互界面示意图。如图4b所示,第二合唱用户终端接收到第二合唱用户通过点击第二开始界面400b中的“开始”按键产生的第二开始信号,并将第二开始信号发送给异地实时合唱装置(第一合唱用户终端),异地实时合唱装置(第一合唱用户终端)在接收到第二开始信号,并且未接收到第一合唱用户发送的第一开始信号,则向第一合唱用户展示人机交互界面401b的第二提醒消息“第二合唱用户已做好合唱准备,是否要现在开始进行合唱”展示给第一合唱用户,从而第一合唱用户可以通过点击人机交互界面401b中的“开始”按键进行合唱,也可以通过点击“取消”按键继续准备。
在第一合唱用户终端根据上述方式确定初始合唱开始时间后,根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,包括:
若所述基准时刻偏移量大于0,则以所述初始合唱开始时间为起始点向后延迟所述基准时刻偏移量的绝对值,得到所述第一合唱用户终端的合唱修正开始时间;或
若所述基准时刻偏移量小于0,则以所述初始合唱开始时间为所述起始点向前提前所述基准时刻偏移量的绝对值,得到所述第一合唱用户终端的合唱修正开始时间。
举例来说,如图3所示,异地实时合唱装置(第一合唱用户终端)在确定基准时刻偏移量ΔT为-0.25秒和初始合唱开始时间T为15点10秒后,由于基准时刻偏移量ΔT-0.25秒小于0,则异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间T即15点10秒为起始点向前提前0.25秒,得到异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间TA为15点9.75秒,进一步得到第二合唱用户终端的合唱修正开始时间TB为15点10秒,即异地实时合唱装置(第一合唱用户终端)开始播放合唱歌曲伴奏音频的时间为15点9.75秒,第二合唱用户终端播放合唱歌曲伴奏音频的时间为初始合唱开始时间即15点10秒。
又举例来说,异地实时合唱装置(第一合唱用户终端)在确定基准时刻偏移量ΔT为0.25秒和初始合唱开始时间T为15点10秒后,由于基准时刻偏移量ΔT0.25秒大于0,则异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间T即15点10秒为起始点向后延迟0.25秒,得到异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间TA为15点10.25秒,进一步得到第二合唱用户终端的合唱修正开始时间TB为15点10秒,即异地实时合唱装置(第一合唱用户终端)开始播放合唱歌曲伴奏音频的时间为15点10.25秒,第二合唱用户终端播放合唱歌曲伴奏音频的时间为初始合唱开始时间即15点10秒。
另一种可能的实施方式中,所述根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,还包括:
若所述基准时刻偏移量大于0,则以所述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到所述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给所述第二合唱用户终端,以使所述第二合唱用户终端以所述初始合唱开始时间为第二起始点向前提前第二预设时长,得到所述第二合唱用户终端的合唱修正开始时间,其中,所述第一预设时长和所述第二预设时长之间的和为所述基准时刻偏移量的绝对值;或
若所述基准时刻偏移量小于0,则以所述初始合唱开始时间为所述第一起始点向前提前所述第一预设时长,得到所述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给所述第二合唱用户终端,以使所述第二合唱用户终端以所述初始合唱开始时间为所述第二起始点向后延迟所述第二预设时长,得到所述第二合唱用户终端的合唱修正开始时间。
举例来说,请参见图5,是本申请实施例提供的另一种确定合唱修正开始时间的过程示意图。如图5所示,异地实时合唱装置(第一合唱用户终端)在确定基准时刻偏移量ΔT为-0.4秒和初始合唱开始时间T为15点10秒后,异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间T即15点10秒为起始点向前提前第一预设时长ΔT1′即0.1秒,得到异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间TA为15点09秒,并将提前消息发送给第二合唱用户终端,其中,提前消息包括异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间为起始点向前提前第一预设时长和基准时刻偏移量,第二合唱用户终端在接收到提前消息后,根据第一预设时长ΔT1′即0.1秒和基准时刻偏移量ΔT的绝对值0.4秒,得到第二预设时长ΔT2′为0.3秒,并以初始合唱开始时间T即15点10秒为起始点向后延迟第二预设时长ΔT2′即0.3秒,得到第二合唱用户终端的合唱修正开始时间TB为15点9.7秒,即异地实时合唱装置(第一合唱用户终端)开始播放合唱歌曲伴奏音频的时间为15点09秒,第二合唱用户终端播放合唱歌曲伴奏音频的时间为15点9.7秒。
又举例来说,异地实时合唱装置(第一合唱用户终端)在确定基准时刻偏移量ΔT为0.4秒和初始合唱开始时间T为15点10秒后,异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间T即15点10秒为起始点向后延迟第一预设时长ΔT1′即0.2秒,得到异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间TA为15点10.2秒,并将延迟消息发送给第二合唱用户终端,其中,延迟消息包括异地实时合唱装置(第一合唱用户终端)以初始合唱开始时间为起始点向后延迟第一预设时长和基准时刻偏移量,第二合唱用户终端在接收到延迟消息后,根据第一预设时长ΔT1′即0.2秒和基准时刻偏移量ΔT即0.4秒,得到第二预设时长ΔT2′为0.2秒,并以初始合唱开始时间T即15点10秒为起始点向前提前第二预设时长ΔT2′即0.2秒,得到第二合唱用户终端的合唱修正开始时间TB为15点9.8秒,即异地实时合唱装置(第一合唱用户终端)开始播放合唱歌曲伴奏音频的时间为15点10.2秒,第二合唱用户终端播放合唱歌曲伴奏音频的时间为15点9.8秒。
之后,异地实时合唱装置(第一合唱用户终端)在第一合唱用户终端的合唱修正开始时间播放存储的合唱歌曲的伴奏音频,并显示合唱歌曲的歌词,并在伴奏音频播放的过程中获取麦克风录制的第一合唱用户跟随伴奏音频和歌词字幕进行演唱的干声音频数据,同时根据第一合唱用户开始演唱该干声音频数据的时刻与伴奏音频开始播放时刻之间的时间间隔,得到该干声音频数据的伴奏播放进度时间,并将该伴奏播放进度时间写入上述干声音频数据中,从而得到第一合唱用户的干声音频数据,并向第二合唱用户终端发送第一合唱用户的干声音频数据。在这里,第一合唱用户的干声音频数据可以理解为音频帧,帧长可以为5ms。
需要说明的是,由于异地实时合唱装置(第一合唱用户终端)和第二合唱用户终端之间相互传输数据的网络延时固定,因此,图3和图5中异地实时合唱装置(第一合唱用户终端)接收到第二合唱用户的干声音频数据的时间TA5与异地实时合唱装置(第一合唱用户终端)向第二合唱用户终端发送第一合唱用户的干声音频数据的时间TA4之间的时间差ΔTA2与第二合唱用户终端接收到第一合唱用户的干声音频数据的时间TB3与第二合唱用户终端向异地实时合唱装置(第一合唱用户终端)发送第二合唱用户的干声音频数据的时间TB2之间的时间差ΔTB2相等,均等于第一合唱用户终端第二接收延迟时长,即异地实时合唱装置(第一合唱用户终端)和第二合唱用户终端分别在异地实时合唱装置(第一合唱用户终端)的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间向对方发送数据,则异地实时合唱装置(第一合唱用户终端)的接收延迟时长与第二合唱用户终端的接收延迟时长相等,等于第二时刻与第一时刻之间的时间差的一半,从而得到两端的接收延迟时长相等且最小,并且避免了双端存在时钟差异和端到端传输时间不一致的问题,其中,可以将第二时刻与第一时刻之间的时间差理解为第一合唱用户终端向第二合唱用户终端传输数据的网络延时与第二合唱用户终端向第一合唱用户终端传输数据的网络延时之间的和。
S102,接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,第二合唱用户的音频数据携带第二合唱用户终端录制干声音频数据时添加的伴奏时间戳。
具体的,第二合唱用户终端在第二合唱用户终端的合唱修正开始时间播放通过访问流媒体服务器获取的合唱歌曲的伴奏音频,并显示合唱歌曲的歌词,并在伴奏音频播放的过程中获取麦克风录制的第二合唱用户跟随伴奏音频和歌词字幕进行演唱的至少一个干声音频数据,同时根据第二合唱用户开始演唱该至少一个干声音频数据中每个干声音频数据的时刻与伴奏音频开始播放时刻之间的时间间隔,得到每个干声音频数据的伴奏时间戳,并将每个干声音频数据的伴奏时间戳写入其对应的干声音频数据中,从而得到至少一个第二合唱用户的干声音频数据,并向异地实时合唱装置(第一合唱用户终端)发送至少一个第二合唱用户的干声音频数据,异地实时合唱装置(第一合唱用户终端)接收至少一个第二合唱用户的干声音频数据,并生成第二合唱用户的音频数据。其中,第二合唱用户的每个干声音频数据可以理解为音频帧,帧长可以为5ms。
S103,在第二合唱用户的音频数据中确定目标时刻播放的目标音频数据。
其中,所述目标时刻为所述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。此外,第二合唱用户的音频数据中每个第二合唱用户的干声音频数据均包括各自干声音频数据的伴奏时间戳。
具体的,异地实时合唱装置(第一合唱用户终端)将当前正在播放的第二合唱用户的干声音频数据播放结束后,开始播放下一个第二合唱用户的干声音频数据的时刻确定为目标时刻,并将上述至少一个第二合唱用户的干声音频数据中伴奏时间戳对应的时长最短的第二合唱用户的干声音频数据确定为目标音频数据。
S104,根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳,确定合唱延迟时长。
具体的,异地实时合唱装置(第一合唱用户终端)计算目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳之间的时间间隔,得到合唱延迟时长。
S105,若合唱延迟时长大于预设延迟时长阈值,则对目标音频数据进行加速播放。
其中,预设延迟时长阈值可以为100ms。
具体的,若合唱延迟时长小于等于预设延迟时长阈值,则异地实时合唱装置(第一合唱用户终端)直接播放目标音频数据,否则,则对目标音频数据进行加速播放。
一种可能的实施方式中,所述对所述目标音频数据进行加速播放,包括:
根据所述合唱延迟时长和所述预设延迟时长阈值确定待加速时长;
根据所述待加速时长确定所述目标音频数据的同步合唱播放位置,从所述同步合唱播放位置处播放所述目标音频数据。
举例来说,异地实时合唱装置计算得到合唱延迟时长108ms与预设延迟时长阈值100ms之间的差值,得到待加速时长为8ms,则将目标音频数据中前面时长为待加速时长8ms的部分丢弃,将目标音频数据中第9ms对应的位置确定为目标音频数据的同步合唱播放位置,从目标音频数据中第9ms对应的位置处播放目标音频数据。
另一种可能的实施方式中,所述对所述目标音频数据进行加速播放,还包括:
根据所述合唱延迟时长和所述预设延迟时长阈值确定待加速时长;
根据所述待加速时长和预设倍速确定所述目标音频数据中待加速播放音频数据,并确定所述目标音频数据中常速播放音频数据;
按照所述预设倍速开始播放所述待加速播放音频数据,并在所述待加速播放音频数据播放结束后按照常速开始播放所述常速播放音频数据。
其中,预设倍速为大于1并且小于等于2之间的任意数。
具体的,异地实时合唱装置(第一合唱用户终端)计算合唱延迟时长与预设延迟时长阈值之间的差值,得到待加速时长,将目标音频数据中前面时长为待加速时长与预设倍速之间乘积的部分确定为待加速播放音频数据,将目标音频数据中除去待加速播放音频数据后剩下的音频数据确定为常速播放音频数据,按照预设倍速开始播放待加速播放音频数据,并在待加速播放音频数据播放结束后按照常速开始播放常速播放音频数据。
举例来说,异地实时合唱装置计算得到合唱延迟时长105ms与预设延迟时长阈值100ms之间的差值为5ms,即待加速时长为5ms,则将目标音频数据(时长为15ms)中前面时长为10ms(待加速时长5ms与预设倍速2倍速之间的乘积)的部分确定为待加速播放音频数据,并将目标音频数据中除去待加速播放音频数据后剩下的后5ms的部分确定为常速播放音频数据,并按照2倍速开始播放待加速播放音频数据,在待加速播放音频数据播放结束后按照常速(1倍速)开始播放常速播放音频数据。
可以理解的,上述两种对目标音频数据进行加速播放的方式,不论是将目标音频数据中前面时长为待加速时长的音频数据直接丢弃,还是将目标音频数据中待加速播放音频数据按照预设倍速进行加速播放,均是为了使合唱延迟时长尽可能减小,保持在预设延迟时长阈值100ms以内,从而使第一合唱用户听到的自己演唱的干声音频数据与播放的第二合唱用户演唱的干声音频数据是基本一致的,提升了第一合唱用户的实时合唱体验感。
进一步地,异地实时合唱装置(第一合唱用户终端)对第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行对齐合成。
一种可能的实施方式中,所述方法还包括:
将所述第一合唱用户的干声音频数据、所述至少一个第二合唱用户的干声音频数据和所述伴奏音频进行合成,得到所述合唱歌曲的合唱片段;
将所述合唱片段发送至流媒体服务器,以使所述流媒体服务器将所述合唱片段发送至听众用户终端。
其中,第一合唱用户的干声音频数据包括第一合唱用户的干声音频数据的伴奏时间戳,至少一个第二合唱用户的干声音频数据中的每个第二合唱用户的干声音频数据均包括各自干声音频数据的伴奏时间戳。
具体的,异地实时合唱装置(第一合唱用户终端)在得到第一合唱用户的干声音频数据和至少一个第二合唱用户的干声音频数据后,将伴奏时间戳相同的第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和合唱歌曲的伴奏音频进行对齐合成,得到合唱歌曲的合唱片段,并将合唱歌曲的合唱片段发送至流媒体服务器,流媒体服务器将接收到的合唱歌曲的合唱片段发送至听众用户终端,从而使听众用户通过听众用户终端能够实时获取第一合唱用户和第二合唱用户的合唱片段并播放。
可以理解的,在本申请实施例中第一合唱用户终端进行第一合唱用户的干声音频数据、第二合唱用户的至少一个干声音频数据和伴奏音频的对齐合成,流媒体服务器只对音频流进行转发,使得流媒体服务器的设备压力小。
在本申请实施例中,第一合唱用户终端(第二合唱用户终端)播放合唱歌曲的伴奏音频,获取第一合唱用户(第二合唱用户)的干声音频数据,并接收第二合唱用户(第一合唱用户)的至少一个干声音频数据,根据至少一个干声音频数据确定目标时刻及目标时刻播放的目标音频数据,将目标时刻时伴奏音频的播放进度时间与目标音频数据的伴奏播放进度时间之间的时间间隔,确定为合唱延迟时长,若合唱延迟时长大于预设延迟时长阈值,则对目标音频数据进行加速播放,使得合唱延迟时长保持在预设延迟时长阈值100ms以内,从而使第一合唱用户(第二合唱用户)听到的自己演唱的干声音频数据与播放的第二合唱用户(第一合唱用户)演唱的干声音频数据是基本一致的,提升了第一合唱用户(第二合唱用户)的实时合唱体验感,进而使参与合唱的合唱用户均有完整的实时合唱体验,提升了K歌的互动性和趣味性。
请参见图6a和图6b,是本申请实施例提供的另一种异地实时合唱方法的流程示意图。如图6a所示,该方法实施例包括如下步骤:
S201,第一合唱用户终端在第一时刻向流媒体服务器发送第一数据包。
S202,流媒体服务器向第二合唱用户终端发送第一数据包。
具体的,流媒体服务器在接收到第一合唱用户终端发送的第一数据包时向第二合唱用户终端发送第一数据包。
S203,第二合唱用户终端在第三时刻向流媒体服务器发送第二数据包及第三时刻。
具体的,第二合唱用户终端在第三时刻接收到第一合唱用户终端发送的第一数据包时,向流媒体服务器返回第二数据包及发送第二数据包的第三时刻。
S204,流媒体服务器向第一合唱用户终端发送第二数据包及第三时刻。
具体的,流媒体服务器在接收到第二合唱用户终端发送的第二数据包及发送第二数据包的第三时刻时,向第一合唱用户终端发送第二数据包及发送第二数据包的第三时刻。
S205,第一合唱用户终端在第二时刻接收到第二数据包及第三时刻,基于第一时刻、第二时刻和第三时刻得到基准时刻偏移量,根据基准时刻偏移量与初始合唱开始时间确定第一合唱用户终端的合唱修正开始时间。
这里,步骤S205的具体实现方式可参考图2对应的实施例中步骤S101中第一合唱用户终端确定第一合唱用户终端的合唱修正开始时间的描述,此处不再赘述。
S206,第一合唱用户终端在第一合唱用户终端的合唱修正开始时间播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据。
这里,步骤S206的具体实现方式可参考图2对应的实施例中步骤S101的描述,此处不再赘述。
S207,第一合唱用户终端向流媒体服务器发送第一合唱用户的干声音频数据。
S208,第二合唱用户终端向流媒体服务器发送至少一个第二合唱用户的干声音频数据。
具体的,第二合唱用户终端在第二合唱用户终端的合唱修正开始时间播放存储的合唱歌曲的伴奏音频,并显示合唱歌曲的歌词,并在伴奏音频播放的过程中获取麦克风录制的第二合唱用户跟随伴奏音频和歌词字幕进行演唱的至少一个干声音频数据,同时根据第二合唱用户开始演唱该至少一个干声音频数据中每个干声音频数据的时刻与伴奏音频开始播放时刻之间的时间间隔,得到每个干声音频数据的伴奏播放进度时间,并将每个干声音频数据的伴奏播放进度时间写入其对应的干声音频数据中,从而得到至少一个第二合唱用户的干声音频数据,并向流媒体服务器发送至少一个第二合唱用户的干声音频数据,流媒体服务器接收至少一个第二合唱用户的干声音频数据。其中,每个第二合唱用户的干声音频数据可以理解为音频帧,帧长可以为5ms。
S209,流媒体服务器向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
具体的,流媒体服务器在向听众用户终端发送至少一个第二合唱用户的干声音频数据的同时,向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
S210,第一合唱用户终端根据接收到的至少一个第二合唱用户的干声音频数据,确定目标时刻播放的目标音频数据。
S211,第一合唱用户终端根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳,确定合唱延迟时长。
S212,若合唱延迟时长大于预设延迟时长阈值,则第一合唱用户终端对目标音频数据进行加速播放。
这里,步骤S210-步骤S212的具体实现方式可参考图2对应的实施例中步骤S103-步骤S105的描述,此处不再赘述。
进一步地,如图6b所示,该方法实施例还包括如下步骤:
S301,流媒体服务器向听众用户终端发送第一合唱用户的干声音频数据。
其中,流媒体服务器向听众用户终端发送第一合唱用户的干声音频数据的时刻由流媒体服务器接收到第一合唱用户终端发送的第一合唱用户的干声音频数据的时刻决定,即流媒体服务器在接收到第一合唱用户终端发送的第一合唱用户的干声音频数据时,向听众用户终端发送第一合唱用户的干声音频数据。
S302,流媒体服务器向听众用户终端发送至少一个第二合唱用户的干声音频数据。
其中,流媒体服务器向听众用户终端发送至少一个第二合唱用户的干声音频数据的时刻由流媒体服务器接收到第二合唱用户终端发送的至少一个第二合唱用户的干声音频数据的时刻决定,即流媒体服务器在接收到第二合唱用户终端发送的至少一个第二合唱用户的干声音频数据时,向听众用户终端发送至少一个第二合唱用户的干声音频数据。
S303,听众用户终端将第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行合成,得到合唱歌曲的合唱片段,并播放合唱片段。
具体的,异地实时合唱装置(听众用户终端)接收到流媒体服务器发送的第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据,同时一边播放本地存储的合唱歌曲的伴奏音频,一边将伴奏时间戳与当前时刻下伴奏音频的播放进度时长相同的第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行对齐合成,得到合唱歌曲的合唱片段,并对合唱片段进行播放。
举例来说,听众用户终端在当前时刻下播放合唱歌曲的伴奏音频的播放进度时长为0分30秒,则将伴奏时间戳与0分30秒相同的第一合唱用户的干声音频数据、第二合唱用户的干声音频数据与伴奏音频进行合成,得到伴奏时间戳为0分30秒的合唱片段。
在本申请实施例中,由于第一合唱用户终端和第二合唱用户终端在合唱开始前通过流媒体服务器相互发送数据包的方式确定第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间,第一合唱用户终端和第二合唱用户终端分别在第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间开始播放伴奏音频,使得两端的接收延迟时长相等且最小,并且避免了双端存在时钟差异和端到端传输时间不一致的问题,第一合唱用户终端在播放伴奏音频的过程中,一边录制第一合唱用户的干声音频数据,一边接收第二合唱用户终端发送的至少一个干声音频数据,并在该至少一个干声音频数据确定目标时刻播放的目标音频数据,若目标时刻时伴奏音频的播放进度时长与目标音频数据的伴奏时间戳之间的时间间隔,即合唱延迟时长,大于100ms,则对目标音频数据进行加速播放,使得合唱延迟时长一直保持在100ms以内,进而使参与合唱的合唱用户均有完整的实时合唱体验,提升了K歌的互动性和趣味性。此外,听众用户终端对第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行对齐合成,流媒体服务器只进行用户干声音频数据的转发,使得流媒体服务器的设备压力小,第一合唱用户终端和第二合唱用户终端只进行用户干声音频数据的录制以及对方用户干声音频数据的接收和播放,从而对第一合唱用户终端和第二合唱用户终端的性能要求低。
请参见图7a和图7b,是本申请实施例提供的另一种异地实时合唱方法的流程示意图。如图7a所示,该方法实施例包括如下步骤:
S401,第一合唱用户终端在第一时刻向流媒体服务器发送第一数据包。
S402,流媒体服务器向第二合唱用户终端发送第一数据包。
具体的,流媒体服务器在接收到第一合唱用户终端发送的第一数据包时向第二合唱用户终端发送第一数据包。
S403,第二合唱用户终端在第三时刻向流媒体服务器发送第二数据包及第三时刻。
具体的,第二合唱用户终端在第三时刻接收到第一合唱用户终端发送的第一数据包时,向流媒体服务器返回第二数据包及发送第二数据包的第三时刻。
S404,流媒体服务器向第一合唱用户终端发送第二数据包及第三时刻。
具体的,流媒体服务器在接收到第二合唱用户终端发送的第二数据包及发送第二数据包的第三时刻时,向第一合唱用户终端发送第二数据包及发送第二数据包的第三时刻。
S405,第一合唱用户终端在第二时刻接收到第二数据包及第三时刻,基于第一时刻、第二时刻和第三时刻得到基准时刻偏移量,根据基准时刻偏移量与初始合唱开始时间确定第一合唱用户终端的合唱修正开始时间。
这里,步骤S405的具体实现方式可参考图2对应的实施例中步骤S101中第一合唱用户终端确定第一合唱用户终端的合唱修正开始时间的描述,此处不再赘述。
S406,第一合唱用户终端在第一合唱用户终端的合唱修正开始时间播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据。
这里,步骤S406的具体实现方式可参考图2对应的实施例中步骤S101的描述,此处不再赘述。
S407,第一合唱用户终端向流媒体服务器发送第一合唱用户的干声音频数据。
S408,第二合唱用户终端向流媒体服务器发送至少一个第二合唱用户的干声音频数据。
具体的,第二合唱用户终端在第二合唱用户终端的合唱修正开始时间播放存储的合唱歌曲的伴奏音频,并显示合唱歌曲的歌词,并在伴奏音频播放的过程中获取麦克风录制的第二合唱用户跟随伴奏音频和歌词字幕进行演唱的至少一个干声音频数据,同时根据第二合唱用户开始演唱该至少一个干声音频数据中每个干声音频数据的时刻与伴奏音频开始播放时刻之间的时间间隔,得到每个干声音频数据的伴奏时间戳,并将每个干声音频数据的伴奏时间戳写入其对应的干声音频数据中,从而得到至少一个第二合唱用户的干声音频数据,并向流媒体服务器发送至少一个第二合唱用户的干声音频数据,流媒体服务器接收至少一个第二合唱用户的干声音频数据。其中,每个第二合唱用户的干声音频数据可以理解为音频帧,帧长可以为5ms。
S409,流媒体服务器向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
具体的,流媒体服务器在接收到第二合唱用户终端发送的至少一个第二合唱用户的干声音频数据时,向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
S410,第一合唱用户终端根据接收到的至少一个第二合唱用户的干声音频数据,确定目标时刻播放的目标音频数据。
S411,第一合唱用户终端根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳,确定合唱延迟时长。
S412,若合唱延迟时长大于预设延迟时长阈值,则第一合唱用户终端对目标音频数据进行加速播放。
这里,步骤S410-步骤S412的具体实现方式可参考图2对应的实施例中步骤S103-步骤S105的描述,此处不再赘述。
进一步地,如图7b所示,该方法实施例还包括如下步骤:
S501,流媒体服务器将第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行合成,得到合唱歌曲的合唱片段。
具体的,异地实时合唱装置(流媒体服务器)在接收到第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据后,将伴奏时间戳相同的第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和本地存储的合唱歌曲的伴奏音频进行对齐合成,得到合唱歌曲的合唱片段。之后执行步骤S502。
举例来说,流媒体服务器接收到的第一合唱用户的干声音频数据的伴奏播放进度时间为1分15秒,至少一个第二合唱用户的干声音频数据中第二合唱用户的干声音频数据a的伴奏时间戳和第二合唱用户的干声音频数据b的伴奏时间戳分别为1分15秒和1分16秒,则将流媒体服务器将伴奏时间戳均为1分15秒的第一合唱用户的干声音频数据、第二合唱用户的干声音频数据a和伴奏音频进行合成,得到伴奏时间戳为1分15秒的合唱片段。
S502,流媒体服务器向听众用户终端发送合唱片段。
S503,听众用户终端播放合唱片段。
具体的,听众用户终端接收并播放合唱片段。
在本申请实施例中,由于第一合唱用户终端和第二合唱用户终端在合唱开始前通过流媒体服务器相互发送数据包的方式确定第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间,第一合唱用户终端和第二合唱用户终端分别在第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间开始播放伴奏音频,使得两端的接收延迟时长相等且最小,并且避免了双端存在时钟差异和端到端传输时间不一致的问题,第一合唱用户终端在播放伴奏音频的过程中,一边录制第一合唱用户的干声音频数据,一边接收第二合唱用户终端发送的至少一个干声音频数据,并根据该至少一个干声音频数据确定目标时刻及目标时刻播放目标音频数据,若目标时刻时伴奏音频的播放进度时间与目标音频数据的伴奏播放进度时间之间的时间间隔,即合唱延迟时长,大于100ms,则对目标音频数据进行加速播放,使得合唱延迟时长一直保持在100ms以内,进而使参与合唱的合唱用户均有完整的实时合唱体验,提升了K歌的互动性和趣味性。此外,流媒体服务器对暂存的一定数量的第一合唱用户的干声音频数据、第二合唱用户的干声音频数据和伴奏音频进行对齐合成,因此,具有一定的网络抖动抗性,对第一合唱用户终端和第二合唱用户终端的性能要求低,此外,由于流媒体服务器将合成后的合唱片段发送至听众用户终端,使得听众用户终端体验良好,并且在存在多个听众的情况下,多个听众听到的合成后的合唱片段相同。
请参见图8a和图8b,是本申请实施例提供的另一种异地实时合唱方法的流程示意图。如图8a所示,该方法实施例包括如下步骤:
S601,第一合唱用户终端在第一时刻向流媒体服务器发送第一数据包。
S602,流媒体服务器向第二合唱用户终端发送第一数据包。
具体的,流媒体服务器在接收到第一合唱用户终端发送的第一数据包时向第二合唱用户终端发送第一数据包。
S603,第二合唱用户终端在第三时刻向流媒体服务器发送第二数据包及第三时刻。
具体的,第二合唱用户终端在第三时刻接收到第一合唱用户终端发送的第一数据包时,向流媒体服务器返回第二数据包及发送第二数据包的第三时刻。
S604,流媒体服务器向第一合唱用户终端发送第二数据包及第三时刻。
具体的,流媒体服务器在接收到第二合唱用户终端发送的第二数据包及发送第二数据包的第三时刻时,向第一合唱用户终端发送第二数据包及发送第二数据包的第三时刻。
S605,第一合唱用户终端在第二时刻接收到第二数据包及第三时刻,基于第一时刻、第二时刻和第三时刻得到基准时刻偏移量,根据基准时刻偏移量与初始合唱开始时间确定第一合唱用户终端的合唱修正开始时间。
这里,步骤S605的具体实现方式可参考图2对应的实施例中步骤S101中第一合唱用户终端确定第一合唱用户终端的合唱修正开始时间的描述,此处不再赘述。
S606,第一合唱用户终端在第一合唱用户终端的合唱修正开始时间播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据。
这里,步骤S606的具体实现方式可参考图2对应的实施例中步骤S101的描述,此处不再赘述。
S607,第二合唱用户终端向流媒体服务器发送至少一个第二合唱用户的干声音频数据。
具体的,第二合唱用户终端在第二合唱用户终端的合唱修正开始时间播放存储的合唱歌曲的伴奏音频,并显示合唱歌曲的歌词,并在伴奏音频播放的过程中获取麦克风录制的第二合唱用户跟随伴奏音频和歌词字幕进行演唱的至少一个干声音频数据,同时根据第二合唱用户开始演唱该至少一个干声音频数据中每个干声音频数据的时刻与伴奏音频开始播放时刻之间的时间间隔,得到每个干声音频数据的伴奏时间戳,并将每个干声音频数据的伴奏时间戳写入其对应的干声音频数据中,从而得到至少一个第二合唱用户的干声音频数据,并向流媒体服务器发送至少一个第二合唱用户的干声音频数据,流媒体服务器接收至少一个第二合唱用户的干声音频数据。其中,每个第二合唱用户的干声音频数据可以理解为音频帧,帧长可以为5ms。
S608,流媒体服务器向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
具体的,流媒体服务器在接收到第二合唱用户终端发送的至少一个第二合唱用户的干声音频数据时,向第一合唱用户终端发送至少一个第二合唱用户的干声音频数据。
S609,第一合唱用户终端根据接收到的至少一个第二合唱用户的干声音频数据,确定目标时刻播放的目标音频数据。
S610,第一合唱用户终端根据目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳,确定合唱延迟时长。
S611,若合唱延迟时长大于预设延迟时长阈值,则第一合唱用户终端对目标音频数据进行加速播放。
这里,步骤S609-步骤S611的具体实现方式可参考图2对应的实施例中步骤S103-步骤S105的描述,此处不再赘述。
进一步地,如图8b所示,该方法实施例还包括如下步骤:
S701,第一合唱用户终端将第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和伴奏音频进行合成,得到合唱歌曲的合唱片段。
其中,第一合唱用户的干声音频数据包括第一合唱用户的干声音频数据的伴奏时间戳,至少一个第二合唱用户的干声音频数据中的每个第二合唱用户的干声音频数据均包括各自干声音频数据的伴奏时间戳。
具体的,第一合唱用户终端在获取到第一合唱用户的干声音频数据和接收到流媒体服务器发送的至少一个第二合唱用户的干声音频数据后,将伴奏时间戳相同的第一合唱用户的干声音频数据、至少一个第二合唱用户的干声音频数据和合唱歌曲的伴奏音频进行对齐合成,得到合唱歌曲的合唱片段。之后执行步骤S702。
S702,第一合唱用户终端向流媒体服务器发送合唱片段。
S703,流媒体服务器向听众用户终端发送合唱片段。
具体的,流媒体服务器在接收到第一合唱用户终端发送的合唱片段时,将合唱片段发送至听众用户终端。
S704,听众用户终端播放合唱片段。
具体的,听众用户终端接收并播放合唱片段。
需要说明的是,这里接收并发送第一合唱用户的干声音频数据和至少一个第二合唱用户的干声音频数据的流媒体服务器和将合唱片段发送至听众用户终端的流媒体服务器可以为同一个服务器,也可以为不同的服务器,在本实施例中对此不做限定。
在本申请实施例中,由于第一合唱用户终端和第二合唱用户终端在合唱开始前通过流媒体服务器相互发送数据包的方式确定第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间,第一合唱用户终端和第二合唱用户终端分别在第一合唱用户终端的合唱修正开始时间和第二合唱用户终端的合唱修正开始时间开始播放伴奏音频,使得两端的接收延迟时长相等且最小,并且避免了双端存在时钟差异和端到端传输时间不一致的问题,第一合唱用户终端在播放伴奏音频的过程中,一边录制第一合唱用户的干声音频数据,一边接收第二合唱用户终端发送的至少一个第二合唱用户的干声音频数据,并根据该至少一个第二合唱用户的额干声音频数据确定目标时刻播放目标音频数据,若目标时刻时第一合唱用户终端播放伴奏音频的播放进度时长与目标音频数据的伴奏时间戳之间的时间间隔,即合唱延迟时长,大于100ms,则对目标音频数据进行加速播放,使得合唱延迟时长一直保持在100ms以内,进而使参与合唱的合唱用户均有完整的实时合唱体验,提升了K歌的互动性和趣味性。此外,第一合唱用户终端进行第一合唱用户的干声音频数据、目标音频数据和伴奏音频的对齐合成,流媒体服务器只对音频流进行转发,使得流媒体服务器的设备压力小。
请参见图9,是本申请实施例提供的一种异地实时合唱装置的结构示意图。如图9所示,该异地实时合唱装置900包括播放获取模块901、第一接收模块902、目标音频确定模块903、延迟时长确定模块904和加速播放模块905。
播放获取模块901,用于播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收生成模块902,用于接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,上述第二合唱用户的音频数据携带第二合唱用户终端录制上述干声音频数据时添加的伴奏时间戳;
目标音频确定模块903,用于在上述第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;
延迟时长确定模块904,用于根据上述目标时刻时上述第一合唱用户终端播放上述伴奏音频的播放进度时长与上述目标音频数据的伴奏时间戳,确定合唱延迟时长;其中,上述目标时刻为上述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。
加速播放模块905,用于若上述合唱延迟时长大于预设延迟时长阈值,则对上述目标音频数据进行加速播放。
可选的,上述加速播放模块905,包括:
待加速时长确定单元9051,用于根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
第一播放目标音频单元9052,用于根据上述待加速时长确定上述目标音频数据的同步合唱播放位置,从上述同步合唱播放位置处播放上述目标音频数据。
可选的,上述加速播放模块905,还包括:
上述待加速时长确定单元9051,用于根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
加速常速播放音频确定单元9053,用于根据上述待加速时长和预设倍速确定上述目标音频数据中待加速播放音频数据,并确定上述目标音频数据中常速播放音频数据;
第二播放目标音频单元9054,用于按照上述预设倍速开始播放上述待加速播放音频数据,并在上述待加速播放音频数据播放结束后按照常速开始播放上述常速播放音频数据。
可选的,上述装置还包括:
合成合唱片段模块906,用于将上述第一合唱用户的干声音频数据、上述至少一个干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段;
发送合唱片段模块907,用于将上述合唱片段发送至流媒体服务器,以使上述流媒体服务器将上述合唱片段发送至听众用户终端。
可选的,上述装置还包括:
发送模块908,用于在第一时刻向上述第二合唱用户终端发送第一数据包;
接收模块909,用于在第二时刻接收到上述第二合唱用户终端发送的第二数据包及发送上述第二数据包的第三时刻,其中,上述第二数据包为上述第二合唱用户终端在上述第三时刻接收到上述第一合唱用户终端发送的上述第一数据包时向上述第一合唱用户终端返回的数据包;
合唱修正开始时间确定模块910,用于基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,其中,上述第一合唱用户终端的合唱修正开始时间为上述第一合唱用户终端播放上述伴奏音频的时刻,上述初始合唱开始时间为上述第一合唱用户终端与上述第二合唱用户终端共同确定得到。
可选的,上述合唱修正开始时间确定模块910,具体用于:计算上述第一时刻和上述第二时刻的中间时刻与上述第三时刻之间的时间差,得到上述基准时刻偏移量。
可选的,上述合唱修正开始时间确定模块910,具体用于:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为起始点向后延迟上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述起始点向前提前上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间。
可选的,上述合唱修正开始时间确定模块910,还具体用于:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为第二起始点向前提前第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间,其中,上述第一预设时长和上述第二预设时长之间的和为上述基准时刻偏移量的绝对值;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述第一起始点向前提前上述第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为上述第二起始点向后延迟上述第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间。
可以理解的,该异地实时合唱装置900用于实现图2、图8a和图8b实施例中第一合唱用户终端所执行的步骤。关于图9的异地实时合唱装置900包括的功能块的具体实现方式及相应的有益效果,可参考前述图2和图8a和图8b的实施例的具体介绍,这里不赘述。
请参见图10,是本申请实施例提供的另一种异地实时合唱装置的结构示意图。如图10所示,该异地实时合唱装置1000包括第一接收模块1001、第二接收模块1002和合唱歌曲合成播放模块1003。
第一接收模块1001,用于接收流媒体服务器发送的上述第一合唱用户的干声音频数据;
第二接收模块1002,用于接收上述流媒体服务器发送的上述至少一个第二合唱用户的干声音频数据;
合唱片段合成播放模块1003,用于将上述第一合唱用户的干声音频数据、上述至少一个第二合唱用户的干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段,并播放上述合唱片段。
可以理解的,该异地实时合唱装置1000用于实现图6a和图6b实施例中听众用户终端所执行的步骤。关于图10的异地实时合唱装置1000包括的功能块的具体实现方式及相应的有益效果,可参考前述图6a和图6b的实施例的具体介绍,这里不赘述。
请参见图11,是本申请实施例提供的另一种异地实时合唱装置的结构示意图。如图11所示,该异地实时合唱装置1100包括第一接收模块1101、第二接收模块1102和合唱歌曲合成发送模块1103。
第一接收模块1101,用于接收第一合唱用户终端发送的上述第一合唱用户的干声音频数据;
第二接收模块1102,用于接收第二合唱用户终端发送的上述至少一个第二合唱用户的干声音频数据;
合唱片段合成发送模块1103,用于将上述第一合唱用户的干声音频数据、上述至少一个第二合唱用户的干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段,并上述合唱片段发送至听众用户终端。
可以理解的,该异地实时合唱装置1100用于实现图7a和图7b实施例中流媒体服务器所执行的步骤。关于图11的异地实时合唱装置1100包括的功能块的具体实现方式及相应的有益效果,可参考前述图7a和图7b的实施例的具体介绍,这里不赘述。
上述图9所示实施例中的异地实时合唱装置900可以以图12所示的异地实时合唱装置1200来实现,该异地实时合唱装置1200可运行于第一合唱用户终端中。请参见图12,是本申请实施例提供的一种异地实时合唱装置的结构示意图。如图12所示,上述异地实时合唱装置1200可以包括:一个或多个处理器1201、存储器1202和收发器1203。上述处理器1201、存储器1202和收发器1203通过总线1204连接。其中,上述收发器1203用于接收或者发送数据,上述存储器1202用于存储计算机程序,该计算机程序包括程序指令;处理器1201用于执行存储器1202存储的程序指令,执行如下操作:
播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,上述第二合唱用户的音频数据携带第二合唱用户终端录制上述干声音频数据时添加的伴奏时间戳;
在上述第二合唱用户的干声音频数据中确定目标时刻播放的目标音频数据;
根据上述目标时刻时上述第一合唱用户终端播放上述伴奏音频的播放进度时长与上述目标音频数据的伴奏时间戳,确定合唱延迟时长;其中,上述目标时刻为上述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。
若上述合唱延迟时长大于预设延迟时长阈值,则对上述目标音频数据进行加速播放。
可选的,上述处理器1201对上述目标音频数据进行加速播放,具体执行以下操作:
根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
根据上述待加速时长确定上述目标音频数据的同步合唱播放位置,从上述同步合唱播放位置处播放所述目标音频数据。
上述处理器1201对上述目标音频数据进行加速播放,还具体执行以下操作:
根据上述合唱延迟时长和上述预设延迟时长阈值确定待加速时长;
根据上述待加速时长和预设倍速确定上述目标音频数据中待加速播放音频数据,并确定上述目标音频数据中常速播放音频数据;
按照上述预设倍速开始播放上述待加速播放音频数据,并在上述待加速播放音频数据播放结束后按照常速开始播放上述常速播放音频数据。
可选的,上述处理器1201还具体执行以下操作:
将上述第一合唱用户的干声音频数据、上述至少一个第二合唱用户的干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段;
将上述合唱片段发送至流媒体服务器,以使上述流媒体服务器将上述合唱片段发送至听众用户终端。
可选的,上述处理器1201播放合唱歌曲的伴奏音频之前,具体执行以下操作:
在第一时刻向第二合唱用户终端发送第一数据包;
在第二时刻接收到上述第二合唱用户终端发送的第二数据包及发送上述第二数据包的第三时刻,其中,上述第二数据包为上述第二合唱用户终端在上述第三时刻接收到第一合唱用户终端发送的上述第一数据包时向上述第一合唱用户终端返回的数据包;
基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,其中,上述第一合唱用户终端的合唱修正开始时间为上述第一合唱用户终端播放上述伴奏音频的时刻,上述初始合唱开始时间为上述第一合唱用户终端与上述第二合唱用户终端共同确定得到。
可选的,上述处理器1201基于上述第一时刻、上述第二时刻和上述第三时刻得到基准时刻偏移量,具体执行以下操作:
计算上述第一时刻和上述第二时刻的中间时刻与上述第三时刻之间的时间差,得到上述基准时刻偏移量。
可选的,上述处理器1201根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,具体执行以下操作:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为起始点向后延迟上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述起始点向前提前上述基准时刻偏移量的绝对值,得到上述第一合唱用户终端的合唱修正开始时间。
可选的,上述处理器1201根据上述基准时刻偏移量与初始合唱开始时间确定上述第一合唱用户终端的合唱修正开始时间,还具体执行以下操作:
若上述基准时刻偏移量大于0,则以上述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为第二起始点向前提前第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间,其中,上述第一预设时长和上述第二预设时长之间的和为上述基准时刻偏移量的绝对值;或
若上述基准时刻偏移量小于0,则以上述初始合唱开始时间为上述第一起始点向前提前上述第一预设时长,得到上述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给上述第二合唱用户终端,以使上述第二合唱用户终端以上述初始合唱开始时间为上述第二起始点向后延迟上述第二预设时长,得到上述第二合唱用户终端的合唱修正开始时间。
上述图10所示实施例中的异地实时合唱装置1000可以以图13所示的异地实时合唱装置1300来实现,该异地实时合唱装置1300可运行于听众用户终端中。请参见图13,是本申请实施例提供的另一种异地实时合唱装置的结构示意图。如图13所示,上述异地实时合唱装置1300可以包括:一个或多个处理器1301、存储器1302和收发器1303。上述处理器1301、存储器1302和收发器1303通过总线1304连接。其中,上述收发器1303用于获取移动接入点的资源使用量或者发送移动接入点的连接信息,上述存储器1302用于存储计算机程序,该计算机程序包括程序指令;处理器1301用于执行存储器1302存储的程序指令,执行如下操作:
接收流媒体服务器发送的上述第一合唱用户的干声音频数据;
接收上述流媒体服务器发送的上述至少一个第二合唱用户的干声音频数据;
将上述第一合唱用户的干声音频数据、上述至少一个第二合唱用户的干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段,并播放上述合唱片段。
上述图11所示实施例中的异地实时合唱装置1100可以以图14所示的异地实时合唱装置1400来实现,该异地实时合唱装置1400可运行于流媒体服务器中。请参见图14,是本申请实施例提供的另一种异地实时合唱装置的结构示意图。如图14所示,上述异地实时合唱装置1400可以包括:一个或多个处理器1401、存储器1402和收发器1403。上述处理器1401、存储器1402和收发器1403通过总线1404连接。其中,上述收发器1403用于获取移动接入点的资源使用量或者发送移动接入点的连接信息,上述存储器1402用于存储计算机程序,该计算机程序包括程序指令;处理器1401用于执行存储器1402存储的程序指令,执行如下操作:
接收第一合唱用户终端发送的上述第一合唱用户的干声音频数据;
接收第二合唱用户终端发送的上述至少一个第二合唱用户的干声音频数据;
将上述第一合唱用户的干声音频数据、上述至少一个第二合唱用户的干声音频数据和上述伴奏音频进行合成,得到上述合唱歌曲的合唱片段,并将上述合唱片段发送至听众用户终端。
在本申请实施例中还提供了一种计算机存储介质,可以用于存储图2、图6a和图6b、图7a和图7b以及图8a和图8b所示实施例中上述异地实时合唱装置所用的计算机软件指令,其包含用于执行上述实施例中为异地实时合唱装置所设计的程序。该存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
在本申请实施例中还提供了一种计算机程序产品,该计算机产品被计算设备运行时,可以执行上述图2、图6a和图6b、图7a和图7b以及图8a和图8b所示实施例中为所设计的异地实时合唱装置。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请中,“A和/或B”是指下述情况之一:A,B,A和B。“……中至少一个”是指所列出的各项或者任意数量的所列出的各项的任意组合方式,例如,“A、B和C中至少一个”是指下述情况之一:A,B,C,A和B,B和C,A和C,A、B和C这七种情况中的任一种。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (12)

1.一种异地实时合唱方法,所述方法应用于第一合唱用户终端,其特征在于,包括:
在第一时刻向第二合唱用户终端发送第一数据包;
在第二时刻接收到所述第二合唱用户终端发送的第二数据包及发送所述第二数据包的第三时刻,其中,所述第二数据包为所述第二合唱用户终端在所述第三时刻接收到第一合唱用户终端发送的所述第一数据包时向所述第一合唱用户终端返回的数据包;
基于所述第一时刻、所述第二时刻和所述第三时刻得到基准时刻偏移量,根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,其中,所述第一时刻和所述第二时刻的中间时刻为基准时刻;
在所述合唱修正开始时间播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,所述第二合唱用户的音频数据携带第二合唱用户终端录制所述干声音频数据时添加的伴奏时间戳;
在所述第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;
根据所述目标时刻时所述第一合唱用户终端播放所述伴奏音频的播放进度时长与所述目标音频数据携带的伴奏时间戳,确定合唱延迟时长;
若所述合唱延迟时长大于预设延迟时长阈值,则对所述目标音频数据进行加速播放。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标音频数据进行加速播放,包括:
根据所述合唱延迟时长和所述预设延迟时长阈值确定待加速时长;
根据所述待加速时长确定所述目标音频数据的同步合唱播放位置,从所述同步合唱播放位置处播放所述目标音频数据。
3.根据权利要求1所述的方法,其特征在于,所述对所述目标音频数据进行加速播放,还包括:
根据所述合唱延迟时长和所述预设延迟时长阈值确定待加速时长;
根据所述待加速时长和预设倍速确定所述目标音频数据中待加速播放音频数据,并确定所述目标音频数据中常速播放音频数据;
按照所述预设倍速开始播放所述待加速播放音频数据,并在所述待加速播放音频数据播放结束后按照常速开始播放所述常速播放音频数据。
4.根据权利要求1所述的方法,其特征在于,所述目标时刻为所述第一合唱用户终端当前正在播放的第二合唱用户的干声音频数据播放结束后,下一个第二合唱用户的干声音频数据开始播放的时刻。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一合唱用户的干声音频数据、所述至少一个第二合唱用户的干声音频数据和所述伴奏音频进行合成,得到所述合唱歌曲的合唱片段;
将所述合唱片段发送至流媒体服务器,以使所述流媒体服务器将所述合唱片段发送至听众用户终端。
6.根据权利要求1所述的方法,其特征在于,所述初始合唱开始时间为所述第一合唱用户终端与所述第二合唱用户终端共同确定得到。
7.根据权利要求1所述的方法,其特征在于,所述基于所述第一时刻、所述第二时刻和所述第三时刻得到基准时刻偏移量,包括:
计算所述第一时刻和所述第二时刻的中间时刻与所述第三时刻之间的时间差,得到所述基准时刻偏移量。
8.根据权利要求1所述的方法,其特征在于,所述根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,包括:
若所述基准时刻偏移量大于0,则以所述初始合唱开始时间为起始点向后延迟所述基准时刻偏移量的绝对值,得到所述第一合唱用户终端的合唱修正开始时间;或
若所述基准时刻偏移量小于0,则以所述初始合唱开始时间为所述起始点向前提前所述基准时刻偏移量的绝对值,得到所述第一合唱用户终端的合唱修正开始时间。
9.根据权利要求1所述的方法,其特征在于,所述根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,还包括:
若所述基准时刻偏移量大于0,则以所述初始合唱开始时间为第一起始点向后延迟第一预设时长,得到所述第一合唱用户终端的合唱修正开始时间,并将延迟消息发送给所述第二合唱用户终端,以使所述第二合唱用户终端以所述初始合唱开始时间为第二起始点向前提前第二预设时长,得到所述第二合唱用户终端的合唱修正开始时间,其中,所述第一预设时长和所述第二预设时长之间的和为所述基准时刻偏移量的绝对值;或
若所述基准时刻偏移量小于0,则以所述初始合唱开始时间为所述第一起始点向前提前所述第一预设时长,得到所述第一合唱用户终端的合唱修正开始时间,并将提前消息发送给所述第二合唱用户终端,以使所述第二合唱用户终端以所述初始合唱开始时间为所述第二起始点向后延迟所述第二预设时长,得到所述第二合唱用户终端的合唱修正开始时间。
10.一种异地实时合唱装置,其特征在于,包括:
播放获取模块,用于在第一时刻向第二合唱用户终端发送第一数据包;在第二时刻接收到所述第二合唱用户终端发送的第二数据包及发送所述第二数据包的第三时刻,其中,所述第二数据包为所述第二合唱用户终端在所述第三时刻接收到第一合唱用户终端发送的所述第一数据包时向所述第一合唱用户终端返回的数据包;基于所述第一时刻、所述第二时刻和所述第三时刻得到基准时刻偏移量,根据所述基准时刻偏移量与初始合唱开始时间确定所述第一合唱用户终端的合唱修正开始时间,其中,所述第一时刻和所述第二时刻的中间时刻为基准时刻;在所述合唱修正开始时间播放合唱歌曲的伴奏音频,获取第一合唱用户的干声音频数据;
接收生成模块,用于接收至少一个第二合唱用户的干声音频数据,生成第二合唱用户的音频数据,所述第二合唱用户的音频数据携带第二合唱用户终端录制所述干声音频数据时添加的伴奏时间戳;
目标音频确定模块,用于在所述第二合唱用户的音频数据中确定目标时刻播放的目标音频数据;
延迟时长确定模块,用于根据所述目标时刻时所述第一合唱用户终端播放所述伴奏音频的播放进度时长与所述目标音频数据携带的伴奏时间戳,确定合唱延迟时长;
加速播放模块,用于若所述合唱延迟时长大于预设延迟时长阈值,则对所述目标音频数据进行加速播放。
11.一种异地实时合唱装置,其特征在于,包括处理器、存储器和收发器,所述处理器、存储器和收发器相互连接,其中,所述收发器用于接收或发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1-9任一项所述的异地实时合唱方法。
12.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令;所述程序指令当被处理器执行时使所述处理器执行如权利要求1-9任一项所述的异地实时合唱方法。
CN202010345610.0A 2020-04-27 2020-04-27 一种异地实时合唱方法及装置、存储介质 Active CN111524494B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010345610.0A CN111524494B (zh) 2020-04-27 2020-04-27 一种异地实时合唱方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010345610.0A CN111524494B (zh) 2020-04-27 2020-04-27 一种异地实时合唱方法及装置、存储介质

Publications (2)

Publication Number Publication Date
CN111524494A CN111524494A (zh) 2020-08-11
CN111524494B true CN111524494B (zh) 2023-08-18

Family

ID=71905349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010345610.0A Active CN111524494B (zh) 2020-04-27 2020-04-27 一种异地实时合唱方法及装置、存储介质

Country Status (1)

Country Link
CN (1) CN111524494B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111741370A (zh) * 2020-08-12 2020-10-02 腾讯科技(深圳)有限公司 一种多媒体互动的方法、相关装置、设备及存储介质
CN112130727B (zh) * 2020-09-29 2022-02-01 杭州网易云音乐科技有限公司 合唱文件生成方法、装置、设备及计算机可读存储介质
CN112489610B (zh) * 2020-11-10 2024-02-23 北京小唱科技有限公司 智能合唱的方法及装置
CN112492338B (zh) * 2020-11-27 2023-10-13 腾讯音乐娱乐科技(深圳)有限公司 线上歌房实现方法及电子设备和计算机可读存储介质
CN112489611A (zh) * 2020-11-27 2021-03-12 腾讯音乐娱乐科技(深圳)有限公司 线上歌房实现方法及电子设备和计算机可读存储介质
CN112927666B (zh) * 2021-01-26 2023-11-28 北京达佳互联信息技术有限公司 音频处理方法、装置、电子设备及存储介质
CN113270080A (zh) * 2021-06-02 2021-08-17 广州酷狗计算机科技有限公司 合唱方法、系统、装置、终端及计算机可读存储介质
CN113470613A (zh) * 2021-07-16 2021-10-01 北京达佳互联信息技术有限公司 合唱混音方法、装置、电子设备和存储介质
CN113596516B (zh) * 2021-08-06 2023-02-28 腾讯音乐娱乐科技(深圳)有限公司 进行连麦合唱的方法、系统、设备及存储介质
CN114417050B (zh) * 2022-03-09 2022-06-28 深圳市云动创想科技有限公司 智能缓存方法、装置、存储介质以及电子设备
CN115174981B (zh) * 2022-08-03 2024-02-23 湖南广播电视台 一种基于微服务的异地联唱方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353174B1 (en) * 1999-12-10 2002-03-05 Harmonix Music Systems, Inc. Method and apparatus for facilitating group musical interaction over a network
CN103337240A (zh) * 2013-06-24 2013-10-02 华为技术有限公司 处理语音数据的方法、终端、服务器及系统
CN103377649A (zh) * 2012-04-20 2013-10-30 上海渐华科技发展有限公司 一种实现实时网络卡拉ok对唱的方法
CN103856369A (zh) * 2012-11-30 2014-06-11 雅马哈株式会社 用于网络音乐会话的延迟测量设备和延迟测量方法
CN107396137A (zh) * 2017-07-14 2017-11-24 腾讯音乐娱乐(深圳)有限公司 在线互动的方法、装置及系统
CN109859730A (zh) * 2019-03-25 2019-06-07 北京达佳互联信息技术有限公司 一种音频处理方法及装置
CN110491358A (zh) * 2019-08-15 2019-11-22 广州酷狗计算机科技有限公司 进行音频录制的方法、装置、设备、系统及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353174B1 (en) * 1999-12-10 2002-03-05 Harmonix Music Systems, Inc. Method and apparatus for facilitating group musical interaction over a network
CN103377649A (zh) * 2012-04-20 2013-10-30 上海渐华科技发展有限公司 一种实现实时网络卡拉ok对唱的方法
CN103856369A (zh) * 2012-11-30 2014-06-11 雅马哈株式会社 用于网络音乐会话的延迟测量设备和延迟测量方法
CN103337240A (zh) * 2013-06-24 2013-10-02 华为技术有限公司 处理语音数据的方法、终端、服务器及系统
CN107396137A (zh) * 2017-07-14 2017-11-24 腾讯音乐娱乐(深圳)有限公司 在线互动的方法、装置及系统
CN109859730A (zh) * 2019-03-25 2019-06-07 北京达佳互联信息技术有限公司 一种音频处理方法及装置
CN110491358A (zh) * 2019-08-15 2019-11-22 广州酷狗计算机科技有限公司 进行音频录制的方法、装置、设备、系统及存储介质

Also Published As

Publication number Publication date
CN111524494A (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
CN111524494B (zh) 一种异地实时合唱方法及装置、存储介质
CN110267081B (zh) 直播流处理方法、装置、系统、电子设备及存储介质
CN101448009B (zh) 音乐同步播放系统、方法及音乐播放器
EP2940940B1 (en) Methods for sending and receiving video short message, apparatus and handheld electronic device thereof
CN101502111B (zh) 同步化媒体体验
KR101983107B1 (ko) 라이브 비디오 스트리밍에 정보 푸시를 삽입하는 방법, 서버 및 단말
CN105448312B (zh) 音频同步播放方法、装置及系统
CN110390925B (zh) 人声与伴奏同步方法、终端、蓝牙设备及存储介质
CN104602133A (zh) 多媒体文件共享方法和终端及服务器
CN104869467A (zh) 媒体播放中的信息输出方法、装置和系统
CN102577360A (zh) 媒体播放器的同步回放
CN102170584A (zh) 同步hs终端设备之间媒体播放的方法、装置和系统
CN110503935B (zh) 音频数据处理方法、装置、电子设备及存储介质
CN108111997A (zh) 蓝牙设备音频同步方法和系统
CN112130616B (zh) 时钟同步方法、装置及存储介质
JP2007013705A (ja) 同時再生システム、情報処理装置、途中参加方法及び途中参加プログラム
CN110992920B (zh) 直播合唱方法、装置、电子设备及存储介质
CN110428798B (zh) 人声与伴奏同步方法、蓝牙设备、终端及存储介质
JP5394307B2 (ja) 同期再生システム、同期再生方法及び同期再生プログラム
CN111541531A (zh) 一种双端时延对齐方法及装置、服务器、存储介质
CN107710754B (zh) 音视频数据同步方法和装置
CN107872678B (zh) 基于直播的文本展示方法和装置、直播方法和装置
JP2008171194A (ja) 通信システム、通信方法、サーバ及び端末
JP6007098B2 (ja) 歌唱動画生成システム
CN112927666A (zh) 音频处理方法、装置、电子设备及存储介质

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