发明内容
为了解决现有技术的问题,本发明实施例提供了一种获取人声音高数据的方法和装置。所述技术方案如下:
第一方面,提供了一种获取人声音高数据的方法,所述方法包括:
提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据;
在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据;
基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,包括:
确定所述多个人声音频的人声音高数据中每个人声音高数据,与所述原唱歌曲音频的人声音高数据之间的数据距离;
在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
这样,通过数据距离确定人声音高数据之间的匹配度,可以使匹配度计算更精确。
可选的,所述在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据,包括:
如果确定出的数据距离中存在小于预设阈值的数据距离,则在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
这样,可以保证选取的目标人声音高数据与原唱歌曲音频的人声音高数据,具有足够的匹配度,可以提高修正后的人声音高数据的准确性。
可选的,所述数据距离为范数距离、欧式距离或余弦距离。
可选的,所述基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据,包括:
在所述原唱歌曲音频的人声音高数据所对应的各时间点中,确定包含于所述目标歌曲的歌词时间段内、且在所述原唱歌曲音频的人声音高数据中对应的音高值为0的目标时间点;
将所述原唱歌曲音频的人声音高数据中所述目标时间点对应的音高值,替换为所述目标人声音高数据中所述目标时间点对应的音高值,得到所述原唱歌曲音频的修正后的人声音高数据。
这样,可以更准确的确定原唱歌曲音频的人声音高数据中丢失音高值的时间点。
可选的,所述提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据,包括:
通过多音部音高提取算法,提取目标歌曲的原唱歌曲音频的人声音高数据,并通过单音部音高提取算法,分别提取所述目标歌曲的多个人声音频的人声音高数据。
可选的,所述方法还包括:
接收多个终端分别上传的所述目标歌曲的多个人声音频。
这样,可以获取到更多人声音频,有助于提高选取的目标人声音高数据与原唱歌曲音频的人声音高数据的匹配度。
第二方面,提供了一种获取人声音高数据的装置,所述装置包括:
提取模块,用于提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据;
选取模块,用于在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据;
修正模块,用于基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述选取模块,用于:
确定所述多个人声音频的人声音高数据中每个人声音高数据,与所述原唱歌曲音频的人声音高数据之间的数据距离;
在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述选取模块,用于:
如果确定出的数据距离中存在小于预设阈值的数据距离,则在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述数据距离为范数距离、欧式距离或余弦距离。
可选的,所述修正模块,用于:
在所述原唱歌曲音频的人声音高数据所对应的各时间点中,确定包含于所述目标歌曲的歌词时间段内、且在所述原唱歌曲音频的人声音高数据中对应的音高值为0的目标时间点;
将所述原唱歌曲音频的人声音高数据中所述目标时间点对应的音高值,替换为所述目标人声音高数据中所述目标时间点对应的音高值,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述提取模块,用于:
通过多音部音高提取算法,提取目标歌曲的原唱歌曲音频的人声音高数据,并通过单音部音高提取算法,分别提取所述目标歌曲的多个人声音频的人声音高数据。
可选的,所述装置还包括:
接收模块,用于接收多个终端分别上传的所述目标歌曲的多个人声音频。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取目标歌曲的多个人声音频的人声音高数据,在多个人声音频的人声音高数据中,选取与原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,基于目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。这样,可以通过人声音频的人声音高数据,对原唱歌曲音频的人声音高数据进行丢失音高值的补偿,从而,可以提高获取的人声音高数据的准确度。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种获取人声音高数据的方法,该方法可以由服务器或终端设备实现,本发明实施例以服务器作为执行主体为例进行方案的说明。其中,服务器可以是某歌唱类应用程序的后台服务器,服务器可以包括处理器、存储器。处理器,可以用于提取人声音高数据的处理,可以用于比较用户的人声音频的人声音高数据与原唱歌曲音频的人声音高数据的匹配度的处理,可以用于对原唱歌曲音频的人声音高数据中丢失的音高值进行补充,存储器,可以用于对原唱歌曲音频和人声音频进行存储。服务器还可以包括收发器,收发器可以包括天线、匹配电路、调制解调器等组成部件,可以用于向各终端获取不同歌曲的人声音频。
本发明实施例提供的获取人声音高数据的方法,可以如图1所示,包括如下步骤:
步骤101,提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据。
其中,目标歌曲可以是任意歌曲。原唱歌曲音频可以是目标歌曲由原唱歌手演唱并结合有伴奏的音频。原唱歌曲音频是由原唱人声音频(歌曲原歌手的清唱音频)和伴奏音频两部分组成多音部音频。人声音频是目标歌曲的清唱音频,属于单音部音频,可以是用户在使用上述歌唱类应用程序时录制并上传服务器的清唱音频。
在实施中,歌唱类应用程序的提供商可以从唱片公司获取不同歌曲的原唱歌曲音频。另外,用户在使用歌唱类应用程序的过程中,可以通过歌唱类应用程序进行某歌曲的歌唱,终端会播放该歌曲的伴奏音频,用户则可以随着伴奏音频进行歌唱,此时终端还可以对用户唱的人声音频进行录制,并可以将录制的人声音频上传至服务器进行保存。服务器对于每一首歌曲,都可以存储大量的用户上传的人声音频。也就是说,在执行步骤101之前,对于任一目标歌曲,服务器可以存储有终端上传的大量人声音频。
在执行本实施例的方法时,服务器可以分别对其存储的每首歌曲,进行本流程的处理。在一首歌曲在此歌唱类应用程序中上线以后,当用户上传的人声音频的数量达到预设阈值(如500)的时候,服务器可以对该歌曲进行本流程的处理,此时该歌曲即为目标歌曲,此后,还可以每达到一定的周期时长,对该歌曲进行一次本流程的处理。或者,服务器也可以设置一个总周期,每达到总周期的时长时,对服务器存储的每一首歌曲都分别进行一次本流程的处理。
可选的,对于原唱歌曲音频和人声音频,可以采用不同的音高提取算法,进行人声音高数据的提取,相应的,步骤101的处理可以如下:通过多音部音高提取算法,提取目标歌曲的原唱歌曲音频的人声音高数据,并通过单音部音高提取算法,分别提取目标歌曲的多个人声音频的人声音高数据。
在实施中,可以获取目标歌曲的原唱歌曲音频,基于polyphonic music(多音部)音高提取算法,提取原唱歌曲音频的人声音高数据,多音部音高提取算法可以是melodia(一种算法名称)算法等。获取的原唱歌曲音频的人声音高数据可以记做X=[x(1),x(2)…x(N)],其中,N为正整数,x(n)为目标歌曲的原唱歌曲音频中不同时间点的音高值。
同时,可以获取上述存储的目标歌曲的多个人声音频,基于monophnic music(单音部)音高提取算法,分别提取每个人声音频的人声音高数据,单音部音高提取算法可以是pYIN(一种算法名称)算法等。获取的人声音频的人声音高数据可以记做Yk=[yk(1),yk(2)…yk(N)],其中,N为正整数,k=1、2、…k,yk(n)为目标歌曲的任一人声音频中不同时间点的音高值。
步骤102,在多个人声音频的人声音高数据中,选取与原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据。
在实施中,在提取原唱歌曲音频的人声音高数据以及多个人声音频的人声音高数据后,可以将每个人声音频的人声音高数据,分别与原唱歌曲音频的人声音高数据进行对比,确定匹配度。具体可以将人声音频的人声音高数据与原唱歌曲音频的人声音高数据中相同时间点对应的音高值进行对比,确定接近程度。
可选的,该匹配度可以采用各种能够反应数据接近度的参数,当匹配度采用数据距离时,步骤102的处理可以如下:确定多个人声音频的人声音高数据中每个人声音高数据,与原唱歌曲音频的人声音高数据之间的数据距离;在多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
在实施中,可以计算原唱歌曲音频的人声音高数据X与每个人声音频的人声音高数据Yk之间的数据距离ek,ek=distance(X,Yk),distance(x,y)为数据距离公式,可以选择任意数据距离公式,如范数距离、欧式距离、余弦距离等。数据距离可以反应出两个数据之间的近似程度,即上述匹配度。经过以上计算,则可以对应每个人声音频的人声音高数据得到一个数据距离,进而,可以在这些数据距离中选取最小的数据距离,进而,选取此最小的数据距离对应的人声音高数据(即目标人声音高数据)。
可选的,在上述选取目标人声音高数据时,如果各个人声音频的人声音高数据与原唱歌曲音频的人声音高数据的匹配度都比较低,可以不在这些人声音频的人声音高数据中,选取目标人声音高数据,相应的处理可以如下:如果确定出的数据距离中存在小于预设阈值的数据距离,则在多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
在实施中,技术人员可以预先设置一个数据距离的阈值,用于判断两个人声音高数据是否足够接近。在上述处理过程中,经过计算得出每个人声音频的人声音高数据对应的数据距离之后,如果计算得到的各数据距离中,存在小于预设阈值的数据距离,则可以在这些数据距离中选取最小的数据距离,进而,选取此最小的数据距离对应的人声音高数据(即目标人声音高数据)。如果计算得到的各数据距离中,不存在小于预设阈值的数据距离,则说明上述多个人声音频中,没有人声音高数据与原唱歌曲音频足够接近的人声音频,这时,可以在另外获取多个人声音频,重新执行本方法流程的处理。
步骤103,基于目标人声音高数据,对原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。
在实施中,在原唱歌曲音频的人声音高数据中,音高值为0的时间点即为没有检测到人声的时间点,这些音高值为0的时间点中,有一部分是确实没有人声的时间点,如间奏过程中的某时间点,而这些音高值为0的时间点中,还有一部分则是丢失音高值的时间点,这些时间点实际有人声,可以由于伴奏干扰等原因,导致没有检测到人声的音高值,导致其音高值为0。可以先确定原唱歌曲音频的人声音高数据中丢失音高值的时间点。然后,可以基于目标人声音高数据中相应时间点的音高值,对原唱歌曲音频的人声音高数据中丢失的音高值进行补充。
可选的,可以基于目标歌曲的歌词时间段,来确定原唱歌曲音频的人声音高数据中丢失的音高值,相应的步骤103的处理可以如下:
步骤一,在原唱歌曲音频的人声音高数据所对应的各时间点中,确定包含于目标歌曲的歌词时间段内、且在原唱歌曲音频的人声音高数据中对应的音高值为0的目标时间点。
歌词时间段是指歌词中记录的目标歌曲中人声歌唱的时间段,可以包括目标歌曲中的多个时间段,每个时间段可以对应歌词中的一个字或多个字,歌词时间段能反映目标歌曲的原唱歌曲音频的人声音高数据中哪些时间点是应该具有音高值的。所以,在原唱歌曲音频的人声音高数据所对应的各时间点中,包含于目标歌曲的歌词时间段内的时间点,应该都是音高值非零的时间点,那么,在这些时间点中音高值为0的时间点即为丢失音高值的时间点。可见,按照步骤一的方式,可以在原唱歌曲音频的人声音高数据中,确定丢失音高值的时间点(即目标时间点)。如图2A所示,为原唱歌曲音频的人声音高数据存在音高值丢失的示意图(图中时间点的密度比实际情况低很多,仅作为示意图使用)。
步骤二,将原唱歌曲音频的人声音高数据中目标时间点对应的音高值,替换为目标人声音高数据中目标时间点对应的音高值,得到原唱歌曲音频的修正后的人声音高数据。
在实施中,在确定丢失音高值的时间点(即目标时间点)后,可以在目标人声音高数据中,获取目标时间点对应的音高值,用获取的音高值,替换原唱歌曲音频的人声音高数据中目标时间点对应的音高值,从而对原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。如图2B所示,为目标人声音高数据的示意图,如图2C所示,为原唱歌曲音频的修正后的人声音高数据的示意图(两图中时间点的密度比实际情况低很多,仅作为示意图使用)。
在获取原唱歌曲音频的修正后的人声音高数据之后,可以基于修正后的人声音高数据,对后续用户录制的目标歌曲的人声音频进行打分。具体的,服务器可以获取用户录制并上传的目标歌曲的人声音频,提取该人声音频的人声音高数据(称作第一人声音高数据),计算第一人声音高数据与修正后的人声音高数据的匹配度(可以采用数据距离作为匹配度),根据匹配度确定用户上传的人声音频的得分,匹配度越高,得分越高,匹配度月底,得分越低。或者,服务器也可以将修正后的人声音高数据发送给每个终端,由终端进行上述计算匹配度并确定得分的处理,处理过程不再累述。
本发明实施例中,提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取目标歌曲的多个人声音频的人声音高数据,在多个人声音频的人声音高数据中,选取与原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,基于目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。这样,可以通过人声音频的人声音高数据,对原唱歌曲音频的人声音高数据进行丢失音高值的补偿,从而,可以提高获取的人声音高数据的准确度。
基于相同的技术构思,本发明实施例还提供了一种获取人声音高数据的装置,如图3所示,该装置包括:
提取模块310,用于提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据;
选取模块320,用于在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据;
修正模块330,用于基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述选取模块320,用于:
确定所述多个人声音频的人声音高数据中每个人声音高数据,与所述原唱歌曲音频的人声音高数据之间的数据距离;
在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述选取模块320,用于:
如果确定出的数据距离中存在小于预设阈值的数据距离,则在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述数据距离为范数距离、欧式距离或余弦距离。
可选的,所述修正模块330,用于:
在所述原唱歌曲音频的人声音高数据所对应的各时间点中,确定包含于所述目标歌曲的歌词时间段内、且在所述原唱歌曲音频的人声音高数据中对应的音高值为0的目标时间点;
将所述原唱歌曲音频的人声音高数据中所述目标时间点对应的音高值,替换为所述目标人声音高数据中所述目标时间点对应的音高值,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述提取模块310,用于:
通过多音部音高提取算法,提取目标歌曲的原唱歌曲音频的人声音高数据,并通过单音部音高提取算法,分别提取所述目标歌曲的多个人声音频的人声音高数据。
可选的,所述装置还包括:
接收模块,用于接收多个终端分别上传的所述目标歌曲的多个人声音频。
本发明实施例中,提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取目标歌曲的多个人声音频的人声音高数据,在多个人声音频的人声音高数据中,选取与原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,基于目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。这样,可以通过人声音频的人声音高数据,对原唱歌曲音频的人声音高数据进行丢失音高值的补偿,从而,可以提高获取的人声音高数据的准确度。
需要说明的是:上述实施例提供的获取歌曲信息的装置在获取歌曲信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的获取歌曲信息的装置与获取歌曲信息的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作***1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器1900可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据;
在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据;
基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述在所述多个人声音频的人声音高数据中,选取与所述原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,包括:
确定所述多个人声音频的人声音高数据中每个人声音高数据,与所述原唱歌曲音频的人声音高数据之间的数据距离;
在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据,包括:
如果确定出的数据距离中存在小于预设阈值的数据距离,则在所述多个人声音频的人声音高数据中,选取对应数据距离最小的目标人声音高数据。
可选的,所述数据距离为范数距离、欧式距离或余弦距离。
可选的,所述基于所述目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到所述原唱歌曲音频的修正后的人声音高数据,包括:
在所述原唱歌曲音频的人声音高数据所对应的各时间点中,确定包含于所述目标歌曲的歌词时间段内、且在所述原唱歌曲音频的人声音高数据中对应的音高值为0的目标时间点;
将所述原唱歌曲音频的人声音高数据中所述目标时间点对应的音高值,替换为所述目标人声音高数据中所述目标时间点对应的音高值,得到所述原唱歌曲音频的修正后的人声音高数据。
可选的,所述提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取所述目标歌曲的多个人声音频的人声音高数据,包括:
通过多音部音高提取算法,提取目标歌曲的原唱歌曲音频的人声音高数据,并通过单音部音高提取算法,分别提取所述目标歌曲的多个人声音频的人声音高数据。
可选的,还包括:
接收多个终端分别上传的所述目标歌曲的多个人声音频。
本发明实施例中,提取目标歌曲的原唱歌曲音频的人声音高数据,并分别提取目标歌曲的多个人声音频的人声音高数据,在多个人声音频的人声音高数据中,选取与原唱歌曲音频的人声音高数据匹配度最高的目标人声音高数据,基于目标人声音高数据,对所述原唱歌曲音频的人声音高数据中丢失的音高值进行补充,得到原唱歌曲音频的修正后的人声音高数据。这样,可以通过人声音频的人声音高数据,对原唱歌曲音频的人声音高数据进行丢失音高值的补偿,从而,可以提高获取的人声音高数据的准确度。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。