下面将要参照附图详细描述本发明的一个优先实施例。说明书中所包含的和附图中所示的全部内容将作示意性解释而不起限制作用。
本发明的方法和装置能够改变音乐伴奏的音拍,从而使音乐伴奏的音拍与演唱者的自然音拍匹配。这种改变主要通过探测演唱者演唱歌曲的一部分所花费的时间(例如演唱一个词所花费的时间)并将该时间与预先编程的演唱那部分歌曲的标准时间进行比较来实现的。根据比较结果,音乐伴奏机将音乐伴奏的音拍调整为与演唱者的音拍匹配。
图2所示是按照本发明构成的音乐伴奏系统200。音乐伴奏统200包括:控制器202、音乐伴奏存储器204、麦克风206、声音分析器208、实时动态MIDI控制器210和扬声器212。
在优先实施例中,音乐伴奏存储器204位于个人计算机的ROM部分、个人计算机的随机存取存储器(RAM)或某些等效存储介质中。构成控制器202的可以是个人计算机,且在某种程度上取决于音乐伴奏存储器204的介质。本领域技术人员按照这里所教授的方法可以组成音乐伴奏系统200装置的硬件实施例,而在优先实施例中,该装置是由安装在个人计算机主控制器202上的软件模块实现的。
图3是音乐伴奏系统200操作的流程图300。首先,演唱者选择一首歌曲(步骤302)。根据这个选择,控制器202从音乐伴奏存储器204提取包含以MIDI格式存储的音乐伴奏信息的预存文件,且使该文件存储在MIDI控制器210可存储访问器中(步骤304)。例如,控制器202从存储在主个人计算机的ROM(音乐伴奏存储器204)中的多个音乐伴奏信息文件中提取被选的音乐伴奏信息文件,并在主个人计算机的RAM(未示出)中存储该音乐伴奏信息。该RAM可与控制器202或MIDI控制器210相连。演唱者对着麦克风206演唱被选音乐伴奏的歌词。麦克风206将歌声转换为电信号以输送给声音分析器208(步骤306)。
从麦克风206输出的电信号包含不期望有的背景噪声-如来自扬声器212的噪声。为了消除不期望有的噪声,如下面将要描述的,声音分析器208对电信号进行滤波(步骤308)。另外,声音分析器208将电信号分段以识别演唱者歌声的音拍。MIDI控制器210从可访问存储器中检索到的音乐伴奏信息文件(步骤310)。步骤310基本上同时与步骤306和步骤308并行进行。实时动态MIDI控制器210利用已识别的歌声的音拍来改变音乐伴奏信号的参数从而使音乐伴奏信号的音拍与歌声信号的音拍匹配(步骤312)。被选歌曲的伴奏MIDI文件全部预存储在例如主个人计算机RAM中,并且其可以在重放期间由MIDI控制器210实时地存取。这样,音拍的改变不会干扰乐曲的传送。换言之,音拍的改变不影响音乐的流畅。
为了使音乐的音拍与演唱者的音拍匹配,本发明的装置能够确定演唱者歌声的音拍。图4为声音分析器208的结构图,该声音分析器能够确定演唱者的音拍。声音分析器208能够确定演唱者演唱歌曲的自然音拍,并且它包括一噪声消除器402以将演唱者演唱的声音与其它不期望的背景噪声分离和一分段器404以确定演唱者演唱一部分歌曲(如一个词)的时间。
噪声消除器402具有滤除不期望的声音的功能,以便只采用演唱者的歌声确定音拍。不期望的声音被消除是必要的,因为接收器如麦克风206不仅可以拾取由演唱者产生的噪声,而且可以拾取由其它源如406位于演唱者较近位置的音乐伴奏系统200的左、右声道扬声器产生的噪声。噪声歌声信号一般由噪声消除器402处理。在处理完成后,噪声消除器402输出一估算歌声信号408。分段器404利用该估算歌声信号408来确定演唱者歌声的音拍。分段器404输出附带在估算歌声信号408上的表示演唱者歌声的自然音拍的段位置信息。含有附带段位置信息的估算歌声信号408在图4中被标志为段位置估算歌声信号410。
图5是表示噪声消除器402的操作的流程图500。首先,噪音歌声信号406被输入到噪声消除器402(步骤502)。噪音歌声信号406包括:实际的歌声信号,由SA[n]表示;左扬声器声道噪声和右扬声器声道噪声,这里由麦克风206接收到的总噪声由n0[n]表示。这里点[n]是沿时间轴上的某一点。这个组合声音可由下式表示:
S0[n]=SA[n]+n0[n] (公式1)
第二步,噪声消除器402去除超标噪声(步骤504)。如果假定作为左扬声器声道噪声和右扬声器声道噪声发射的不期望的信号由n1[n]表示(n1[n]信号等于扬声器在源(扬声器)处产生的实际噪声),而n0[n]信号等于在麦克风处的扬声器噪声,即:噪声在经过扬声器和麦克风之间的路径后还应包括路径长度上扬声器噪声的衰减,则噪音歌声信号406中超标部分可以表示为:
y[n]=∑h[i]n1[n-i] (公式2)
其中i=0到N-1,和
H[z]=Z{h[n]} (公式3)
这里公式3表示噪声消除器402的估算参数。函数h[i]表示从噪声的源(如扬声器)到麦克风之间路径上扬声器噪声的变化。故而,h[i]表示路径的滤波器效果。在超标声音被噪声消除器402去除之后,其输出由Sc[n]表示的估算歌声信号408,这里Sc[n]=S0[n]-y[n],Sc[n]是在没有超标噪声的情况下的演唱者歌声的估算。实际歌声与估算歌声信号408之间的误差定义为e[n]:
e2[n]=(SA[n]-SC[n])2 (公式4)
噪声消除器402是根据所期望的实际歌声与估算歌声信号408之间的最小误差设计的。误差由e[n]表示。噪声消除器402的参数是由迭代计算得到的:
h[i]n+1=h[i]n+η({e[n]*n1[n]}/||n1[n]||) (公式5)
对于i等于0到N-1,且0<η<2,进行迭代运算直到误差最小。η是系统学习(system leaming)参数,由系统设计者预置。这使估算歌声信号408(Sc[n])输出到分段器404(步骤506)。
分段器404用于区分时间轴上的各个所唱歌词的位置。例如,图6表示可能的歌唱声波轮廓600。声波轮廓600包括歌词602、604等。例如,歌词604开始于对应于歌词602结束位置的第一位置606,且结束于对应于下一歌词(未示出)起始位置的第二位置608。分段器404利用多种不同方法在时间轴上确定各个歌词的第一和第二位置606和608。例如,可以利用能量包络方法和非线性信号矢量分析法。
图7表示分段器404利用能量包络方法的流程图700。如波形轮廓600所示,歌词602、604等是连续的。这些词由边界区域分成段,其中边界区域是第一和第二位置606和608的最邻近区域,该区域有一明显的能级凹陷,其后跟随着能量上升。因此,通过检测能量的变化可以确定分段位置。假定波形轮廓600由x[n]表示,其中x[n]等于SA[n],则分段位置由流程图700概述的过程来确定。首先,利用估算歌声信号408确定具有2N+1长度的一滑动窗口(sliding window),如下所示(步骤702):其中N是由系统设计者预置的时间值。这样,随着时间的推移具体点的能量被确定为:
E[n]=[1/(2N+1)]∑|W[i]·x[n-1]|,i=-N到+N(公式7)
下一步,当能量信号增长超过一预定阈值时确定段的第一位置606(步骤704)。换言之,当公式7比一个预定阈值大时,歌词604开始于位置n。当T1·(E[n+d])小于或等于E[n]时以及E[n+d]小于或等于T2·(E[n+2d])时,分段位置被确定。T1和T2是0到1之间的常数,d是由系统设计者预定的间隔。T1、T2和d是为歌曲预先确定的。分段位置被输出到实时动态MIDI控制器210。时间位置信息附加在估算歌声信号上并作为时间位置估算歌声信号410从分段器404输出(步骤708)。
图8所示流程图800表示利用非线性信号矢量分析法确定分段位置。首先,利用预先记录的测试歌声信号x[n],一矢量定义为(步骤802):
X[n]={x[n],x[n+1],…,x[n-N],x[n]·x[n],x[n]·x[n-1],…,x[n-N]·x[n-N]}T
(公式8)
X[n]是歌声信号构成的矢量。分段特征定义为(步骤804):
Z[n]=1分段位置 (公式9)
0未分段位置
下一步,估算函数定义为(步骤806):
ex[n]=αT·X[n] (公式10)
其中e
x[n]是分段位置的估计量,α
T是常矢量。代价函数(cost function)定义为:
其中E代表其有关音域的函数的期望值。关于函数期望值的更多的信息参见A.Papoulis的《概率、随机变量与统计处理》,Megraw-Hill,1984。利用Wiener-Hopf公式对
进行最小化,Wiener-Hopf公式例如:α=R
-1β (公式12)R=E{X[n]·X
T[n]}和β={Z[n]·X[n]} (公式13)
关于Wiener-Hopf公式的更多的信息参见N·Kalouptisidis等的《自适应系统识别和信号处理算法》,Prentice-Hall,1993。将不同演唱者演唱的不同歌曲作为训练数据(training data)来记录以便获取α、β和R。上面所述的信号的分段位置Z[n]首先由程序器确定。公式12和公式13用来计算α。得到α后,利用公式10计算估计函数ex[n]。则分段位置定义为:
分段位置=是若|ex[n]-1|≤ε(公式14)
否其它情况其中ε是置信度系数(步骤808)。分段位置附加在估算歌声信号上并输出给实时动态MIDI控制器210(步骤810)。
总之,非线性信号矢量分析法使用配置的多个预先记录的检测歌声信号利用公式8得到矢量X[n]。听者首先识别检测信号的分段位置并得到Z[n]值。利用公式12和13计算α、β和R。一旦α、β和R计算出来,利用公式11和公式14能够确定歌声信号的分段位置。实时动态MIDI控制器210利用由声音分析器208识别的分段位置来加速或减速存储在可被MIDI控制器210访问的存储器中的伴奏音乐。
音乐伴奏信息最好是以MIDI格式存储在音乐伴奏存储器204中。如果,音乐伴奏信息不是以MIDI格式存储,则在将音乐伴奏信息存储在可被MIDI控制器210访问的存储器中之前需要MIDI转换器(未示出)将音乐伴奏信号转换为MIDI相容的格式。
实时动态MIDI控制器210在Alvin Wen-Yu SU等共同进行申请的说明书-实时动态MIDI控制的方法和装置(申请号_,申请的日期与本申请相同,这里公开引用以作参考)中有更充分的描述。具体而言,该被转换的MIDI信号和音乐伴奏信号被输入到软件控制子程序。该软件控制子程序利用模糊逻辑控制原理来加速或减速音乐伴奏信号的音拍,从而达到与转换歌声信号的音拍匹配。图9的流程图900表示软件控制子程序是如何调整音拍的。首先,软件控制子程序测定分段位置(步骤902)。图10代表分段位置P[n]的曲线图。软件控制子程序识别测定的位置并确定P[n]是否太靠后了(步骤904)。如果P[n]太靠后了,则音乐伴奏信号接收到很大的正加速信号(步骤906);否则确定P[n]是否太靠前了(步骤908),如果P[n]太靠前了,则音乐伴奏信号接收到很大的负加速信号(步骤910)。如果P[n]不是很靠前或很靠后,则Q[n]定义为P[n]-P[n-1],Q[n]被测定(步骤912)。图11表示Q[n]曲线图。下一步,软件控制子程序确定是否P[n]落后和Q[n]是否快速向前匹配(步骤914)。如果P[n]是落后和Q[n]是快速向前匹配的,则初始的正加速度值被大幅度提高(步骤916)。否则,进一步确定P[n]是否是落后的以及Q[n]是否是缓慢向前匹配的(步骤918)。如果P[n]是落后和Q[n]是缓慢向前匹配的,则初始的正加速度值提高(步骤920)。否则,进一步确定P[n]是否是落后的以及Q[n]是否是没有变化的(步骤922)。如果P[n]是落后和Q[n]是没有变化的,则初始的正加速度值被稍微提高(步骤924)。否则,进一步确定P[n]是否是落后的以及Q[n]是否是缓慢向后匹配的(步骤926)。如果P[n]是落后和Q[n]是缓慢向后匹配的,则正加速度值不变(步骤928)。否则,进一步确定P[n]是否是落后的以及Q[n]是否是快速向后匹配的(步骤930)。如果P[n]是落后和Q[n]是快速向后匹配的,则初始的正加速度值被降低(步骤932)。否则,进一步确定P[n]是否是超前的以及Q[n]是否是缓慢向前匹配的(步骤934)。如果P[n]是超前的和Q[n]是缓慢向前匹配的,则初始的负加速度值不变化(步骤936)。否则,进一步确定P[n]是否是超前的以及Q[n]是否是不变化的(步骤938)。如果P[n]是超前的和Q[n]是不变化的,则初始的负加速度值稍微增加(步骤940)。否则,进一步确定P[n]是否是超前的以及Q[n]是否是缓慢向后匹配的(步骤942)。如果P[n]是超前的和Q[n]是缓慢向后匹配的,则初始的负加速度值增加(步骤944)。否则,进一步确定P[n]是否是超前的以及Q[n]是否是快速向后匹配的(步骤946)。如果P[n]是超前的和Q[n]是快速向后匹配的,则初始的负加速度值大幅度增加(步骤948)。否则,进一步确定P[n]是否是超前的以及Q[n]是否是快速向前匹配的(步骤950)。如果P[n]是超前的和Q[n]是快速向前匹配的,则初始的负加速度值降低(步骤952)。一旦音乐伴奏信号的音拍与转换的MIDI信号匹配了,则演奏音乐的信号输出到扬声器212(步骤954)。
虽然上述公开内容是根据演唱者的音拍改变音乐伴奏文件,其也可以用于任意外部信号-如乐器、扬声器、自然界声音。唯一需要的是:外部信号具有可识别的音拍或可识别的分段位置。
对于本技术领域的技术人员而言,很明显的是在不脱离本发明的范围和要旨的情况下,能对本发明的方法和优先实施例的构造作不同修改和变更。参照这里公开的本说明书和本发明的实践,本发明的其它实施例对于本技术领域的技术人员也是清楚的。说明书和实例仅作示例,而本发明的真正范围和要旨如下面的权利要求所述。