键盘乐器以及键盘乐器的计算机执行的方法与流程
本发明涉及能够进行说唱(rap)等演奏的键盘乐器以及键盘乐器的计算机执行的方法。
背景技术:
有一种称为说唱的歌唱方法。说唱是与音乐的节奏、韵律或旋律线的时间行进相匹配地以口头语言等内容进行歌唱的音乐方法之一。在说唱中,尤其是通过使语调即兴地变化从而能够进行个性丰富的音乐表现。
这样,说唱既有歌词,还有flow(节奏、韵律、旋律线),因此想要以这些进行歌唱时障碍非常高。说唱的上述flow中包含的各音乐要素中的至少若干个要素已自动化,只要能够与这些相匹配地将剩余的音乐要素通过电子乐器等进行演奏,则即使是初始者也能够熟悉说唱。
作为用于使歌唱自动化的第1现有技术,已知一种电子乐器,其输出通过对录音的语音片段进行连接并加工的片段连接型合成方式而进行语音合成后的歌声(例如,日本特开平9-050287号公报)。
但是,在上述现有技术中,虽然能够与基于合成语音的歌唱的自动行进相匹配在电子乐器上进行音高指定,但无法实时地控制说唱特有的语调。此外,不限于说唱,以往难以在乐器演奏中附加高超的语调。
技术实现要素:
根据本发明,优点为在乐器、歌唱的演奏中可通过简单的操作来附加所希望的语调。
在实施方式的一例的键盘乐器中,键盘乐器具备:键盘,其包含多个键;多个操作元件,其是设置在键的长度方向的后侧且乐器壳体的顶面的多个操作元件,包含第1操作元件和第2操作元件,第1操作元件与输出的语音数据的从第1定时到第2定时前为止的第1区间数据对应起来,第2操作元件与上述语音数据的从上述第2定时到第3定时前为止的第2区间数据对应起来;以及至少1个处理器,上述至少1个处理器根据向上述第1操作元件的第1用户操作决定第1图形的语调,并通过所决定的上述第1图形的语调来指示与上述第1区间数据对应的语音的发音,上述至少1个处理器根据向上述第2操作元件的第2用户操作决定第2图形的语调,并通过所决定的上述第2图形的语调来指示与上述第2区间数据对应的语音的发音。
附图说明
图1表示电子键盘乐器的一实施方式的外观例。
图2是表示电子键盘乐器的控制系统的一实施方式的硬件结构例的框图。
图3是表示实施方式的主要功能的框图。
图4是实施方式的弯音滑块(bendslider)、弯音开关(bendswitch)和弯音曲线(bendcurve)指定动作的说明图。
图5表示实施方式的数据结构例。
图6表示实施方式的弯音曲线设定表的数据结构例。
图7表示实施方式的弯音曲线表的数据结构例。
图8是表示本实施方式的电子乐器的控制处理例子的主流程图。
图9是表示初始化处理、乐曲速度变更处理以及说唱开始处理的详细例子的流程图。
图10是表示开关处理的详细例子的流程图。
图11是表示弯音曲线设定处理的详细例子的流程图。
图12是表示自动演奏中断处理的详细例子的流程图。
图13是表示说唱再生处理的详细例子的流程图。
图14是表示弯音处理的详细例子的流程图。
具体实施方式
以下,参照附图对用于实施本发明的方式进行详细说明。图1表示搭载了作为信息处理装置的自动演奏装置的电子键盘乐器的一实施方式100的外观例。电子键盘乐器100具备:键盘101,其由作为演奏操作元件的多个键组成;第1开关面板102,其用于指示音量的指定、说唱再生的乐曲速度(tempo)设定、说唱再生开始、伴奏再生等各种设定;第2开关面板103,其用于进行说唱、伴奏的选曲、音色的选择等;lcd(liquidcrystaldisplay:液晶显示器)104,其用于显示说唱再生时的歌词、乐谱、各种设定信息、弯音滑块105(也被称为滑动操作元件105),例如针对发出的说唱语音的音高(pitch)指定语调图形(intonationpattern)即弯音曲线(bendcurve);以及弯音开关106,其用于指定弯音滑块105的指定的有效/无效。此外,虽然未特别进行图示,但电子键盘乐器100在底面、侧面或者背面等具备扬声器,该扬声器用于发出通过演奏而产生的乐音。
如图1所示,多个操作元件(滑动操作元件105)被设置在键的长度方向的后侧(演奏键盘乐器的用户位于键的长度方向的前侧)且乐器壳体的顶面(上侧)。第1开关面板102、第2开关面板103、lcd104、弯音开关106也与多个操作元件同样地设置在键的长度方向的后侧且乐器壳体的顶面。
多个操作元件可以不是滑动操作元件105,而是旋转操作元件(旋钮操作元件)105、按钮操作元件105。
图2表示图1的搭载了自动演奏装置的电子键盘乐器100的控制系统200的一实施方式的硬件结构例。在图2中,控制系统200的cpu(中央运算处理装置)201、rom(只读存储器)202、ram(随机存取存储器)203、音源lsi(大规模集成电路)204、语音合成lsi205、连接图1的键盘101、第1开关面板102、第2开关面板103、弯音滑块105以及弯音开关106的键扫描器206、以及连接图1的lcd104的lcd控制器208分别与系统总线209连接。此外,用于控制自动演奏的顺序的计时器210与cpu201连接。并且,从音源lsi204以及语音合成lsi205分别输出的乐音输出数据218以及说唱语音输出数据217通过d/a转换器211、212分别被转换为模拟乐音输出信号以及模拟说唱语音输出信号。模拟乐音输出信号以及模拟说唱语音输出信号通过混合器213进行混合,在通过放大器214对该混合信号进行放大后,从未特别图示的扬声器或输出端子输出。
cpu201一边将ram203作为工作存储器使用一边执行在rom202中存储的自动演奏控制程序,由此执行图1的电子键盘乐器100的控制动作。此外,在rom202中除了存储上述控制程序以及各种固定数据外,还存储包含歌词数据以及伴奏数据的音乐数据。
在cpu201安装了在本实施方式中使用的计时器210,例如对电子键盘乐器100的自动演奏的行进进行计数。
音源lsi204按照来自cpu201的发音控制指示,例如从未特别图示的波形rom读出乐音波形数据,并输出到d/a转换器211。音源lsi204具有同时振动发出最多256个音(256-voicepolyphony)的能力。
当作为说唱数据215从cpu201赋予了歌词的文本数据和与音高有关的信息时,语音合成lsi205将与之对应的说唱语音的语音数据进行合成,并输出到d/a转换器212。
键扫描器206始终扫描图1的键盘101的按键/离键状态、第1开关面板102、第2开关面板103、弯音滑块105以及弯音开关106的开关操作状态,对cpu201施加中断来传递状态变化。
lcd控制器609是控制lcd505的显示状态的ic(集成电路)。
图3是表示本实施方式的主要功能的框图。在此,语音合成部302作为图2的语音合成lsi205执行的一个功能而内置在电子键盘乐器100内。该语音合成部302通过后述的说唱再生处理输入从图2的cpu201指示的说唱数据215,由此将说唱语音输出数据217合成并输出。
例如,如图3所示,可以作为与图1的电子键盘乐器100不同的存在于外部的服务器计算机300所执行的一个功能来安装语音学习部301。或者,虽然在图3中未进行图示,但只要图2的语音合成lsi205的处理能力具有余裕,语音学习部301也可以作为语音合成lsi205所执行的一个功能而内置在电子键盘乐器100内。在图2中示出了音源lsi204。
弯音处理部320是图2的cpu201执行后述的弯音曲线设定处理(参照图11)以及弯音处理(参照图14)的程序的功能,弯音处理部320执行以下处理:从图2所示的键扫描器206经由系统总线209取入图1或图2所示的弯音滑块105以及弯音开关106的状态,由此例如对说唱语音的音高赋予语调图形即弯音曲线的变化。
例如,根据下述的非专利文献1中记载的“基于深度学习的统计性语音合成”的技术来安装图2的语音学习部301以及语音合成部302。
(非专利文献1)
桥本佳,高木信二“深層学習に基づく統計的音声合成(基于深度学习的统计性语音合成)”日本音响学会杂志73卷1号(2017),pp.55-62。
如图3所示,例如作为外部的服务器计算机300执行的功能的图2的语音学习部301包含学习用文本解析部303、学习用声学特征量提取部304以及模型学习部305。
在语音学习部301中,作为学习用说唱语音数据312,例如使用对某个说唱歌手演唱多个说唱歌曲的语音进行录音而得到的数据。此外,作为学习用说唱数据311,准备各说唱歌曲的歌词文本。
学习用文本解析部303输入包含歌词文本的学习用说唱数据311,并对该数据进行解析。作为结果,学习用文本解析部303推定并输出作为离散数值序列的学习用语言特征量序列313,该学习用语言特征量序列313用于表现与学习用说唱数据311对应的音素、音高等。
与上述学习用说唱数据311的输入相匹配地,学习用声学特征量提取部304输入某歌手演唱与该学习用说唱数据311对应的歌词文本,由此经由麦克风等而记录的学习用说唱语音数据312,并进行分析。作为结果,学习用声学特征量提取部304提取并输出学习用声学特征量序列314,该学习用声学特征量序列314用于表示与学习用说唱语音数据312对应的语音特征。
模型学习部305通过机器学习来推定使根据学习用语言特征量序列313和声学模型生成学习用声学特征量序列314的概率为最大的声学模型。即,通过称为声学模型的统计模型来表现作为文本的语言特征量序列与作为语音的声学特征量序列之间的关系。
在模型学习部305,作为学习结果315输出作为进行机器学习的结果而计算出的表现声学模型的模型参数。
例如,如图3所示,可以在图1的电子键盘乐器100出厂时,将该学习结果315(模型参数)存储在图2的电子键盘乐器100的控制系统的rom202中,在电子键盘乐器100开机时,从图2的rom202加载到语音合成lsi205内的后述的声学模型部306。或者,例如,如图3所示,可以通过演奏者对电子键盘乐器100的第二开关面板103进行操作,从而将学习结果315从未特别图示的因特网、usb(universalserialbus,通用串行总线)电缆等网络经由网络接口219下载到语音合成lsi205内的后述的声学模型部306。
语音合成lsi205执行的功能即语音合成部302包含文本解析部307、声学模型部306以及发声模型部308。语音合成部302执行统计性语音合成处理,即为通过使用声学模型部306中设定的称为声学模型的统计模型来预测与包含歌词文本的说唱数据215对应的说唱语音输出数据217从而进行合成。
作为与自动演奏相匹配的演奏者的演奏结果,文本解析部307输入说唱数据215并对该数据进行解析,该说唱数据215包含与图2的cpu201指定的歌词的音素、音高等相关的信息。作为结果,文本解析部307解析并输出语言特征量序列316,该语言特征量序列316用于表现与说唱数据215对应的音素、词性、单词等。
声学模型部306通过输入语言特征量序列316,来推定并输出与之对应的声学特征量序列317。即,声学模型部306推定使根据从文本解析部307输入的语言特征量序列316以及通过模型学习部305中的机器学习作为学习结果315而设定的声学模型来生成声学特征量序列317的概率为最大的声学特征量序列317的推定值。
发声模型部308通过输入声学特征量序列317,生成包含由cpu201指定的歌词文本的说唱数据215所对应的说唱语音输出数据217。说唱语音输出数据217从图2的d/a转换器212经由混合器213以及放大器214输出,从未特别图示的扬声器发出声音。
通过学习用声学特征量序列314、声学特征量序列317表现的声学特征量包含将人的声道模型化的频谱数据以及将人的声带模型化的音源数据。作为频谱参数,例如能够采用梅尔倒频谱(melcepstrum)、线谱对(linespectralpairs:lsp)等。作为音源数据,能够采用表示人的语音的音调频率(pitchfrequency)的基本频率(f0)以及功率值。发声模型部308包含音源生成部309和合成滤波部310。音源生成部309是将人的声带模型化的部分,通过依次输入从声学模型部306输入的音源数据319的序列,例如生成以音源数据319中包含的基本频率(f0)以及功率值周期性重复的脉冲串(有声音素的情况)、或具有音源数据319中包含的功率值的白噪声(无声音素的情况)、或将这些混合后的信号构成的音源信号。合成滤波部310是将人的声道模型化的部分,根据从声学模型部306依次输入的频谱数据318的序列形成将声道模型化的数字滤波器,以从音源生成部309输入的音源信号为激励源信号,生成并输出数字信号的说唱语音输出数据217。
与学习用说唱语音数据312相对的采样频率例如为16khz(千赫)。此外,作为学习用声学特征量序列314以及声学特征量序列317中包含的频谱参数,例如在采用通过梅尔倒频谱分析处理获得的梅尔倒频谱参数的情况下,其更新帧周期例如为5msec(毫秒)。并且,在进行梅尔倒频谱分析处理的情况下,分析窗口长度为25msec,窗口函数为布莱克曼窗(blackmanwindow),分析次数为24次。
接着,对图3的语音学习部301以及语音合成部302构成的统计性语音合成处理的第一实施方式进行说明。在统计性语音合成处理的第一实施方式中,作为通过在声学模型部306中设定的学习结果315(模型参数)表现的声学模型,使用上述的非专利文献1以及下述的非专利文献2所记载的hmm(hiddenmarkovmodel:隐马尔可夫模型)。
(非专利文献2)
酒向慎司、才野庆二郎、南角吉彦、德田惠一、北村正“声質と歌唱スタイルを自動学習可能な歌声合成システム”信息处理学会研究报告音乐信息科学(mus)2008(12(2008-mus-074)),pp.39-44,2008-02-08
在统计性语音合成处理的第一实施方式中,通过hmm声学模型来学习在用户对遵照某个旋律的歌词进行发声时,声带的振动、声道特性的说唱语音的特征参数进行怎样的时间变化来进行发声。更具体地说,hmm声学模型是以音素为单位将根据学习用说唱数据求出的频谱、基本频率以及它们的时间构造模型化的模型。
接着,对图3的语音学习部301以及语音合成部302构成的统计性语音合成处理的第二实施方式进行说明。在统计性语音合成处理的第二实施方式中,为了根据语言特征量序列316预测声学特征量序列317,通过深度神经网络(deepneuralnetwork:dnn)安装声学模型部306。与此对应地,语音学习部301内的模型学习部305学习模型参数,该模型参数用于表示从语言特征量向声学特征量的dnn内的各神经元的非线性变换函数,将该模型参数作为学习结果315输出给语音合成部302内的声学模型部306的dnn。
以下详细说明利用了在图3中说明的统计性语音合成处理的图1和图2的电子键盘乐器100的实施方式的包含说唱的歌曲的自动演奏动作。图4是使用了本实施方式的图1和图2的弯音滑块105以及弯音开关106的弯音曲线指定动作的说明图。在本实施方式中,对于自动行进的说唱歌曲,例如能够针对每个节拍(预定的行进单位)指定在各节拍的期间内进行变化的说唱音高的语调图形即弯音曲线。
用户例如针对连续的每16拍(在为4/4拍子的歌曲时为4小节)使用作为指定单元的图4所示的弯音滑块105的调节,对于自动行进的说唱歌曲实时地执行该弯音曲线的指定以及基于该弯音曲线的指定来附加弯音。弯音滑块105例如具备16个(在图4的例子中仅示出了8个)滑块,按照从左向右的顺序,各滑块分别能够指定当前自动行进中的说唱歌曲从此开始执行的16拍的各拍的弯音曲线的种类。作为指定的弯音曲线,能够准备多种弯音曲线图形401(在图4的例子中,在弯音滑块105的左侧例示了#0到#3的4种图形的弯音曲线图形401)。用户能够对弯音滑块105的16个滑块中的每一个分别指定多个弯音曲线图形401中的一个来作为各滑块的滑动位置。
例如在由16个滑块构成的弯音滑块105的上部,配置了由作为指定单元的例如16个开关构成的弯音开关106。弯音开关106中的各开关分别对应于配置在各自下部的弯音滑块105的各滑块。用户对于上述16拍中的任意的节拍,通过对弯音开关106内的对应的开关进行断开操作,能够将弯音滑块105内的对应的滑块设定为无效。由此,能够不对该节拍施加弯音效果。
通过图3中说明的弯音处理部320来取入以上通过弯音滑块105以及弯音开关106对于连续的16拍中的各拍进行的弯音曲线的设定。作为附加单元进行动作的弯音处理部320在语音合成部302(参照图2、图3)中自动行进的说唱歌曲的自动演奏中,针对连续的各16拍(在为4/4拍子时为各4小节)的每一节拍,对语音合成部302指示与通过弯音滑块105以及弯音开关106指定的弯音曲线对应的说唱语音的音高(pitch)的语调(intonation)。
具体地说,弯音处理部320针对每一拍的行进,基于对该节拍指定的弯音曲线,对语音合成部302指定音高的变更信息。1拍内的音高弯音的时间分辨率例如为48,弯音处理部320在将1拍分割成48份后的每个定时,对语音合成部302指定与所指定的弯音曲线对应的音高变更信息。图3中说明的语音合成部302根据由弯音处理部320指定的音高变更信息对从声学模型部306输出的音源信息319的音高进行变更,将变更后的该音源信息319提供给音源生成部309。
如以上所示,在本实施方式中,说唱歌曲的例如歌词和时间行进交给自动演奏,用户能够针对每个行进单位(例如节拍)指定像说唱那样的例如音高的弯音曲线的语调图形,从而能够轻松享受说唱演奏。
特别是在该情况下,用户例如能够使用与16拍的每个节拍对应的弯音滑块105以及弯音开关106,对自动行进中的自动演奏的每16拍实时地指定用于说唱语音的音高的每一拍的弯音曲线,能够一边自动演奏说唱歌曲一边施加给自己的说唱演奏。
另外,用户例如还能够与自动演奏的说唱歌曲对应地预先指定并存储每一节拍的弯音曲线的指定,弯音处理部320在执行说唱歌曲的自动演奏时读入该弯音曲线的指定,对语音合成部302指示与所指定的弯音曲线对应的说唱语音的音高的语调。
由此,用户能够慢慢地对说唱歌曲附加说唱语音的音高的语调。
然而,通常语音数据(包含音乐数据、歌词数据、文本数据等各种数据形式)所具有的区间数比多个操作元件(滑动操作元件105)的数量多,因此,处理器201在输出与第1操作元件相对应的第1区间数据后,执行将与第1操作元件相对应的区间数据从第1区间数据变更为第1区间数据之后的区间数据的处理。
假设在多个操作元件(滑动操作元件105)的数量为8个时,处理器201在某个定时例如将语音数据中的2小节长度的区间与多个操作元件对应起来。即,在某个定时如下那样与多个操作元件对应起来。
第1操作元件……第1区间数据(第1小节的第1拍的区间)
第2操作元件……第2区间数据(第1小节的第2拍的区间)
第3操作元件……第3区间数据(第1小节的第3拍的区间)
第4操作元件……第4区间数据(第1小节的第4拍的区间)
第5操作元件……第5区间数据(第2小节的第1拍的区间)
第6操作元件……第6区间数据(第2小节的第2拍的区间)
第7操作元件……第7区间数据(第2小节的第3拍的区间)
第8操作元件……第8区间数据(第2小节的第4拍的区间)
在键盘乐器输出与第1操作元件对应的第1区间数据后,处理器201执行将与第1操作元件对应的区间数据从第1区间数据变更为接着第8区间数据的第9区间数据(例如,第3小节的第1拍的区间)的处理。
即,在演奏中,向第1操作元件分配的区间数据依次变化为第1区间数据→第9区间数据→第17区间数据→……。即,例如在直到第1小节的第4拍为止的歌声的发声结束的定时,向各操作元件分配的区间数据如以下所示。
第1操作元件……第9区间数据(第3小节的第1拍的区间)
第2操作元件……第10区间数据(第3小节的第2拍的区间)
第3操作元件……第11区间数据(第3小节的第3拍的区间)
第4操作元件……第12区间数据(第3小节的第4拍的区间)
第5操作元件……第5区间数据(第2小节的第1拍的区间)
第6操作元件……第6区间数据(第2小节的第2拍的区间)
第7操作元件……第7区间数据(第2小节的第3拍的区间)
第8操作元件……第8区间数据(第2小节的第4拍的区间)
根据本发明,即使有限的操作元件的数量,但在演奏中向一个操作元件分配的语音数据的区间进行变更,因此具有无论多么长的语音数据也能够良好地进行歌唱的优点。
此外,关于向各操作元件分配的语调图形的组合,例如,关于向第1操作元件分配401(#0)的语调图形(第1图形),向第2操作元件分配401(#1)的语调图形(第2图形)这样的语调图形的组合,只要不操作操作元件105就不会变更。因此,只要通过操作元件105的操作决定一次语调图形的组合,之后,用户即使不对操作元件105进行操作,也能够通过所决定的语调图形的组合从语音数据的最初到最后为止使键盘乐器发声。即,在用户操作键盘101进行的演奏中,不需要进行用于对歌声附加语调的操作105。因此,具有用户能够集中于键盘101操作的优点。
当然,若在演奏过程中用户操作了操作元件105,则无论何时都能够变更语调图形的组合。即,在用户操作键盘101进行的演奏中,能够与演奏表现的变更相匹配地变更语调图形的组合。因此,具有用户能够更快乐地持续演奏的优点。
在图4的实施例中,关于多个操作元件105分别例示了滑动操作元件105。此时,处理器201根据表示滑动操作量的数据,从预先设定的多个语调图形中决定某个语调图形,上述滑动操作量是与用户向滑动操作元件105的滑动操作对应地取得的滑动操作量。在操作元件105为旋转操作元件105的情况下,根据表示旋转量的数据决定语调图形即可。此外,在操作元件105为按钮操作元件105的情况下,按照按钮的打开、关闭来决定语调图形即可。
在本实施例中,根据用户操作键盘101而指定的音高数据,对歌声进行合成。即,实时地生成与歌词以及指定的音高对应的歌声数据。
在本实施方式中,图5表示从图2的rom202向ram203读入的音乐数据的数据结构例。该数据结构例以midi(musicalinstrumentdigitalinterface:乐器数字化接口)用文件格式之一的标准midi文件格式为基准。该音乐数据由称为块(chunk)的数据块构成。具体地说,音乐数据由位于文件开头的标题块(headerchunk)、标题块后续的存储歌词部分用歌词数据的音轨块(trackchunk)1、存储伴奏部分用伴奏数据的音轨块2构成。
标题块由chunkid(块id)、chunksize(块大小)、formattype(格式类型)、numberoftrack(音轨编号)以及timedvision(时间分割)这四个值构成。chunkid是表示为标题块的“mthd”这样的半角4个字符所对应的4字节的ascii码“4d546864”(数字为16进制)。chunksize是在标题块中,表示除了chunkid和chunksize以外的formattype、numberoftrack以及timedvision部分的数据长度的4字节数据,数据长度被固定为6字节“00000006”(数字为16进制)。在本实施方式的情况下,formattype是表示使用多个音轨的格式1的2字节的数据“0001”(数字为16进制)。在本实施方式的情况下,numberoftrack是表示使用与歌词部分和伴奏部分对应的2个音轨的2字节的数据“0002”(数字为16进制)。timedvision是表示时间基准值的数据,该时间基准值表示每4分音符的分辨率,在本实施方式的情况下,是表示10进制480的2字节的数据“01e0”(数字为16进制)。
音轨块1、2分别由以下构成:chunkid、chunksize、deltatime_1[i]以及event_1[i](音轨块1/歌词部分的情况)或deltatime_2[i]以及event_2[i](音轨块2/伴奏部分的情况)构成的演奏数据组(0≤i≤l:音轨块1/歌词部分的情况,0≤i≤m:音轨块2/伴奏部分的情况)。chunkid是表示为音轨块的"mtrk"这样的半角4个字符所对应的4字节的ascii码“4d54726b”(数字为16进制)。chunksize是在各音轨块中,表示除了chunkid和chunksize以外的部分的数据长度的4字节数据。
deltatime_1[i]是表示从其紧前的event_1[i-1]的执行时刻开始的等待时间(相对时间)的1~4字节的可变长度数据。同样地,deltatime_2[i]是表示从其紧前的event_2[i-1]的执行时刻开始的等待时间(相对时间)的1~4字节的可变长度数据。event_1[i]是在音轨块1/歌词部分中,指示说唱的歌词的发声定时和音高的元事件(metaevent)。event_2[i]是在音轨块2/伴奏部分中,指示音符开(noteon)或音符关(noteoff)的midi事件,或者指示拍子的元事件。对于音轨块1/歌词部分,在各演奏数据组deltatime_1[i]以及event_1[i]中,从其紧前的event_1[i-1]的执行时刻开始等待了deltatime_1[i]后,执行event_1[i],由此实现歌词的发声行进。另一方面,对于音轨块2/伴奏部分,在各演奏数据组deltatime_2[i]以及event_2[i]中,从其紧前的event_2[i-1]的执行时刻开始等待了deltatime_2[i]后,执行event_2[i],由此实现自动伴奏的行进。
图6表示弯音曲线设定表600的数据结构例,该弯音曲线设定表600存储通过弯音滑块105、弯音开关106(参照图1、图2、图4)以及弯音处理部320(参照图3)指定的每一节拍的弯音曲线的设定。例如,将该弯音曲线设定表600存储在图2的ram203中。弯音曲线设定表600针对连续的每16拍存储指定了小节编号和节拍编号的弯音曲线编号。例如,在最初的连续的16拍的数据组601(#0)中存储小节编号0~3、各小节内的节拍编号0~3、弯音曲线编号0~3(对应于图4的401(#0)~401(#3))。另外,关于通过弯音开关106而关闭的节拍,弯音曲线编号成为null值(在图6中用“-”表示”)。
图7表示弯音曲线表700,该弯音曲线表700存储与图4的401(#0)~401(#3)对应的弯音曲线的语调图形所对应的例如4个图形的弯音曲线。例如,通过工厂设定将该弯音曲线表700存储在图2的rom202。在图7中,401(#0)、401(#1)、401(#2)以及401(#3)分别对应于图4所示的弯音曲线的图形,例如rom202上的各个开头的存储地址是bendcurve[0]、bendcurve[1]、bendcurve[2]以及bendcurve[3]。r是弯音曲线的分辨率,例如r=48。在各弯音曲线中,地址偏置表示相对于各个上述开头的存储地址的偏置值,对于0~r-1(例如0~47)的每个偏置值分别具有存储区域,将弯音值存储在各存储区域中。该弯音值是相对于变更前的音高值的倍率值,例如,值“1.00”的情况表示没有音高变化,值“2.00”的情况表示音高成为2倍。
图8是表示本实施方式中的电子乐器的控制处理例的主流程图。该控制处理例如是图2的cpu201执行从rom202加载到ram203的控制处理程序的动作。
cpu201首先执行初始化处理(步骤s801),然后反复执行步骤s802至s8708的一连串的处理。
在该反复处理中,cpu201首先执行开关处理(步骤s802)。在此,cpu201根据来自图2的键扫描器206的中断,执行与图1的第一开关面板102、第二开关面板103、弯音滑块105或弯音开关106的各开关操作对应的处理。
接着,cpu201根据来自图2的键扫描器206的中断来执行键盘处理,即为判定图1的键盘101的某个键是否被操作来进行处理(步骤s803)。在此,cpu201根据演奏者进行的某个键的按键或离键的操作,对图2的音源lsi204输出用于指示发音开始或发音停止的乐音控制数据216。
接着,cpu201执行显示处理,即为处理应该在图1的lcd104中显示的数据,并将该数据经由图2的lcd控制器208显示在lcd104(步骤s804)。作为在lcd104显示的数据,例如具有与要演奏的说唱语音输出数据217对应的歌词以及与该歌词对应的旋律的乐谱、各种设定信息。
接着,cpu201执行说唱再生处理(步骤s805)。在该处理中,cpu201根据演奏者的演奏执行在图5中说明的控制处理,生成说唱数据215并输出到语音合成lsi205。
接着,cpu201执行音源处理(步骤s806)。在音源处理中,cpu201执行音源lsi204中的正在发出的乐音的包络控制(envelopecontrol)等控制处理。
最后,cpu201判定演奏者是否按压了未特别图示的关机开关而进行了关机(步骤s807)。若步骤s807的判定为“否”,cpu201返回到步骤s802的处理。若步骤s807的判定为“是”,cpu201结束图8的流程图所示的控制处理,切断电子键盘乐器100的电源。
图9的(a)、(b)以及(c)分别是表示图8的步骤s801的初始化处理、图8的步骤s802的开关处理中的后述图10的步骤s1002的乐曲速度变更处理、以及该图10的步骤s1006的说唱开始处理的详细例子的流程图。
首先,在表示图8的步骤s801的初始化处理的详细例子的图9的(a)中,cpu201执行ticktime的初始化处理。在本实施方式中,歌词的行进以及自动伴奏以ticktime这样的时间为单位而行进。被指定为图5的音乐数据的标题块内的timedvision值的时间基准值表示4分音符的分辨率,若该值例如为480,则4分音符具有480ticktime的时间长度。此外,关于图5的音乐数据的音轨块内的等待时间deltatime_1[i]值以及deltatime_2[i]值也通过ticktime的时间单位进行计数。在此,关于1ticktime实际为几秒,根据对音乐数据指定的乐曲速度而不同。当前,若将乐曲速度值设为tempo[敲击/分],将上述时间基准值设为timedvision,则通过下式(1)计算ticktime的秒数。
ticktime[秒]=60/tempo/timedvision(1)
因此,在图9的(a)的流程图中例示的初始化处理中,cpu201首先通过与上述式(1)对应的运算处理,计算ticktime[秒](步骤s901)。另外,关于乐曲速度值tempo,设为在初始状态下在图2的rom20中存储预定值,例如60[敲击/秒]。或者,也可以在非易失性存储器中存储上次结束时的乐曲速度值。
接着,cpu201对图2的计时器210设定基于在步骤s901中计算出的ticktime[秒]的计时器中断(步骤s902)。结果,在计时器210中每经过上述ticktime[秒]时,针对cpu201产生用于歌词行进、自动伴奏以及弯音处理的中断(以下,记载为“自动演奏中断”)。因此,在cpu201根据该自动演奏中断而执行的自动演奏中断处理(后述的图12)中,执行控制处理使得按照每1ticktime进行歌词行进以及自动伴奏的行进。
此外,通过将1ticktime乘以d得到的时间单位执行后述的弯音处理。关于该d,使用在图3中说明的表示每4分音符的分辨率的时间基准值timedivision以及在图7中说明的弯音曲线表700的分辨率r,通过下式(2)来计算。
d=timedivision/r(2)
例如,如上所述,4分音符(为4/4拍子时的1拍)为480ticktime,在r=48时,按照每个d=480/r=480/48=10ticktime执行弯音处理。
接着,cpu201执行图2的ram203的初始化等其他初始化处理(步骤s903)。之后,cpu201结束在图9的(a)的流程图中例示的图8的步骤s801的初始化处理。
对图9的(b)以及(c)的流程图予以后述。图10是表示图8的步骤s802的开关处理的详细例子的流程图。
cpu201首先判定是否通过图1的第一开关面板102内的乐曲速度变更开关变更了歌词行进以及自动伴奏的乐曲速度(步骤s1001)。若该判定为“是”,cpu201执行乐曲速度变更处理(步骤s1002)。使用图9的(b)对该处理的细节予以后述。若步骤s1001的判定为“否”,cpu201跳过步骤s1002的处理。
接着,cpu201判定在图1的第二开关面板103中是否选择了某个说唱歌曲(步骤s1003)。若该判定为“是”,cpu201执行说唱歌曲读入处理(步骤s1004)。该处理是从图2的rom202向ram203读入具有在图5中说明的数据构造的音乐数据的处理。之后,对读入到ram203的音乐数据执行针对图5所例示的数据构造内的音轨块1或2的数据访问。若步骤s1003的判定为“否”,cpu201跳过步骤s1004的处理。
接着,cpu201判定在图1的第一开关面板102中是否操作了说唱开始开关(步骤s1005)。若该判定为“是”,cpu201执行说唱开始处理(步骤s1006)。使用图9的(c)对该处理的细节予以后述。若步骤s1005的判定为“否”,cpu201跳过步骤s1006的处理。
并且,cpu201判定在图1的第1开关面板102中是否操作了弯音曲线设定开始开关(步骤s1007)。若该判定为“是”,cpu201执行基于图1的弯音滑块105以及弯音开关106的弯音曲线设定处理(步骤s1008)。之后使用图11说明该处理的详细内容。若步骤s1007的判定为“否”,cpu201跳过步骤s1008的处理。
最后,cpu201判定在图1的第一开关面板102或第二开关面板103中是否操作了其他开关,并执行与各开关操作对应的处理(步骤s1009)。之后,cpu201结束在图10的流程图中例示的图8的步骤s802的开关处理。
图9的(b)是表示图10的步骤s1002的乐曲速度变更处理的详细例子的流程图。如上所述,当变更了乐曲速度值时,ticktime[秒]也变更。在图9的(b)的流程图中,cpu201执行与该ticktime[秒]的变更有关的控制处理。
首先,与在图8的步骤s801的初始化处理中执行的图9的(a)的步骤s901的情况同样地,cpu201通过与上述式(1)对应的运算处理,计算ticktime[秒](步骤s911)。另外,关于乐曲速度值tempo,将通过图1的第一开关面板102内的乐曲速度变更开关进行变更后的值存储在ram203等中。
接着,与在图8的步骤s801的初始化处理中执行的图9的(a)的步骤s902的情况同样地,cpu201对图2的计时器210设定基于在步骤s911中计算出的ticktime[秒]的计时器中断(步骤s912)。之后,cpu201结束在图9的(b)的流程图中例示的图10的步骤s1002的乐曲速度变更处理。
图9的(c)是表示图10的步骤s1006的说唱开始处理的详细例子的流程图。
首先,cpu201在自动演奏的行进中,以ticktime为单位,将用于表示从自动演奏开始时起的经过时间的ram203上的变量elapsetime的值初始设定为0。此外,同样以ticktime为单位,将用于对从紧前的事件的发生时刻开始的相对时间进行计数的ram203上的变量deltat_1(音轨块1)以及deltat_2(音轨块2)的值均初始设定为0。接着,cpu201将用于指定图5例示的音乐数据的音轨块1内的演奏数据组deltatime_1[i]以及event_1[i](1≤i≤l-1)的各个i值的ram203上的变量autoindex_1以及同样地用于指定音轨块2内的演奏数据组deltatime_2[i]以及event_2[i](1≤i≤m-1)的各个i的ram203上的变量autoindex_2的各值均初始设定为0。此外,将用于表示以ticktime为单位的分频时间的ram203上的变量dividingtime的值使用通过上述式(2)计算出的值d而设定为d-1。并且,将用于表示在图7中说明的弯音曲线表700上的偏置地址的ram203上的变量bendadressoffset的值,同样使用上述在图7中说明的分辨率r而初始设定为r-1的值。例如,r-1=48-1=47(以上,步骤s921)。由此,在图5的例子中,作为初始状态,首先分别参照音轨块1内的开头的演奏数据组deltatime_1[0]和event_1[0]以及音轨块2内的开头的演奏数据组deltatime_2[0]和event_2[0]。
接着,cpu201将用于指示当前的说唱位置的ram203上的变量songindex的值初始设为0(步骤s922)。
并且,cpu201将用于表示进行(=1)或不进行(=0)歌词以及伴奏的行进的ram203上的变量songstart的值初始设定为1(行进)(步骤s923)。
之后,cpu201判定演奏者是否通过图1的第一开关面板102进行了与说唱歌词的再生相匹配地进行伴奏再生的设定(步骤s924)。
若步骤s924的判定为“是”,cpu201将ram203上的变量bansou的值设定为1(有伴奏)(步骤s925)。相反,若步骤s924的判定为“否”,cpu201将变量bansou的值设定为0(无伴奏)(步骤s926)。在步骤s925或s926的处理之后,cpu201结束在图9的(c)的流程图中例示的图10的步骤s1006的说唱开始处理。
图11是表示图10的步骤s1008的弯音曲线设定处理的详细例子的流程图。首先,cpu201指定例如以16拍(在4/4拍子时为4小节)为单位的设定开始位置(小节编号)(步骤s1101)。能够与自动演奏的行进一起实时地执行弯音曲线设定处理,因此初始值例如为第0小节,每当每16拍的设定完成时,也可以自动地依次指定接下来的第16小节、第32小节、……。此外,为了对当前的自动演奏中的节拍也能够进行设定变更,用户例如能够通过第1开关面板102上的未特别图示的开关,将包含当前演奏中的拍子在内的连续的16拍指定为设定开始位置。
接着,cpu201从rom202取得在步骤s1101中指定的16拍(4小节)的说唱的歌词数据(步骤s1102)。cpu201为了辅助用户进行弯音曲线的指定,将这样取得的说唱的歌词数据例如显示在图2的lcd104。
接着,cpu201将连续的16拍中的节拍位置的初始值设为0(步骤s1103)。
之后,cpu201在步骤s1103中将用于表示连续的16拍中的节拍位置的ram203上的变量i的值初始设定为0之后,在步骤s1106中将i的值每次增加1,以16拍的量反复执行步骤s1104和步骤s1105(#0至#3中的某一个),直到在步骤s1107中判断为i的值超过15为止。
在上述反复处理中,首先,cpu201经由键扫描器206从图2的弯音滑块105读入在图4中说明的弯音滑块105上的节拍位置i的滑块的滑块值(s),并对该值进行判定(步骤s1104)。
接着,在节拍位置i的滑块值为s=0的情况下,cpu201将图4或图7的弯音曲线401(#0)的编号0存储在图6的弯音曲线设定表600的弯音曲线编号项目中。通过以下的式(3)和式(4)计算此时的小节编号和节拍编号的各项目的值,并存储该值(以上为步骤s1105(#0))。
小节编号=(在s1101中指定的小节编号)+(4/i的整数部分)(3)
节拍编号=节拍位置i/4的余数(4)
此外,在节拍位置i的滑块值为s=1的情况下,cpu201将图4或图7的弯音曲线401(#1)的编号1存储在图6的弯音曲线设定表600的弯音曲线编号项目中。通过上述的式(3)和式(4)计算此时的小节编号和节拍编号的各项目的值,并存储该值(以上为步骤s1105(#1))。
此外,在节拍位置i的滑块值为s=2的情况下,cpu201将图4或图7的弯音曲线401(#1)的编号2存储在图6的弯音曲线设定表600的弯音曲线编号项目中。通过上述的式(3)和式(4)计算此时的小节编号和节拍编号的各项目的值,并存储该值(以上为步骤s1105(#2))。
此外,在节拍位置i的滑块值为s=3的情况下,cpu201将图4或图7的弯音曲线401(#1)的编号3存储在图6的弯音曲线设定表600的弯音曲线编号项目中。通过上述的式(3)和式(4)计算此时的小节编号和节拍编号的各项目的值,并存储该值(以上为步骤s1105(#3))。
在上述处理的反复中,cpu201当在步骤s1107中判定为变量i的值达到了15时,结束图11的流程图的处理,结束图10的步骤s1008的弯音曲线设定处理。
图12是表示根据在图2的计时器210中按照每个ticktime[秒]而产生的中断(参照图9(a)的步骤s902或图9(b)的步骤s912)执行的自动演奏中断处理的详细例子的流程图。对图5所例示的音乐数据的音轨块1以及音轨块2的演奏数据组执行以下的处理。
首先,cpu201执行与音轨块1对应的一连串的处理(步骤s1201至s1206)。首先,cpu201判定songstart值是否为1,即判定是否指示了歌词以及伴奏的行进(步骤s1201)。
cpu201在判定为未指示歌词以及伴奏的行进(步骤s1201的判定为“否”)的情况下,cpu201不进行歌词以及伴奏的行进而直接结束图12的流程图所例示的自动演奏中断处理。
cpu201在判定为指示了歌词以及伴奏的行进(步骤s1201的判定为“是”)时,首先将用于表示从自动演奏开始时起的以ticktime为单位的经过时间的ram203上的变量elapsetime的值增加1。每ticktime秒产生图12的自动演奏中断处理,因此在每次发生该中断时累加1而得到的值成为elapsetime的值。该变量elapsetime的值在后述的图14的弯音处理的步骤s1406中用于计算当前的小节编号和节拍编号。
接着,cpu201判定与音轨块1相关的表示从前次事件的发生时刻开始的相对时刻的deltat_1值是否与autoindex_1值所表示的从此开始想要执行的演奏数据组的等待时间deltatime_1[autoindex_1]一致(步骤s1203)。
若步骤s1203的判定为“否”,cpu201对于音轨块1,使表示从前次事件的发生时刻开始的相对时刻的deltat_1值增加+1,使时刻行进与本次的中断对应的1ticktime单位的量(步骤s1204)。之后,cpu201转移至后述的s1208。
若步骤s1203的判定为“是”,cpu201对于音轨块1执行autoindex_1值所表示的演奏数据组的事件event[autoindex_1](步骤s1205)。该事件是包含歌词数据的说唱事件。
接着,cpu201将用于表示音轨块1内的下一个应执行的说唱事件的位置的autoindex_1值存储在ram203上的变量songindex中(步骤s1205)。
并且,cpu201将用于参照音轨块1内的演奏数据组的autoindex_1值增加+1(步骤s1206)。
此外,cpu201将关于音轨块1本次参照的用于表示从说唱事件的发生时刻开始的相对时刻的deltat_1值重置为0(步骤s1207)。之后,cpu201转移到步骤s1208的处理。
接着,cpu201执行与音轨块2对应的一连串的处理(步骤s1208至s1214)。首先,cpu201判定与音轨块2相关的表示从前次事件的发生时刻开始的相对时刻的deltat_2值是否与autoindex_2值所表示的从此开始想要执行的演奏数据组的等待时间deltatime_2[autoindex_2]一致(步骤s1208)。
若步骤s1208的判定为“否”,cpu201针对音轨块2使表示从前次事件的发生时刻开始的相对时刻的deltat_2值增加+1,使时刻行进与本次的中断对应的1ticktime单位的量(步骤s1209)。之后,cpu201进入步骤s1211的弯音处理。
若步骤s1208的判定为“是”,cpu201判定指示伴奏再生的ram203上的变量bansou的值是否为1(有伴奏)(步骤s1210)(参照图9的(c)的步骤s924至s926)。
若步骤s1210的判定为“是”,cpu201执行autoindex_2值所表示的与音轨块2的伴奏相关的事件event_2[autoindex_2](步骤s1211)。如果在此执行的事件event_2[autoindex_2]例如为音符开事件,则通过由该音符开事件指定的键编号(keynumber)以及速度,针对图2的音源lsi204发出伴奏用乐音的发音命令。另一方面,若事件event_2[autoindex_2]例如为音符关事件,则通过由该音符关事件指定的键编号以及速度,针对图2的音源lsi204发出发音中的伴奏用乐音的消音命令。
另一方面,若步骤s1210的判定为“否”,cpu201跳过步骤s1211,不执行与本次的伴奏相关的事件event_2[autoindex_2],而为了与歌词同步地行进,进入到下一步骤s1212的处理,仅执行用于使事件行进的控制处理。
在步骤s1211之后或s1210的判定为“否”的情况下,cpu201将用于参照音轨块2上的用于伴奏数据的演奏数据组的autoindex_2值增加+1(步骤s1212)。
此外,cpu201对于音轨块2将表示从本次执行的事件的发生时刻开始的相对时刻的deltat_2值重置为0(步骤s1213)。
然后,cpu201判定autoindex_2值所表示的下一个执行的音轨块2上的演奏数据组的等待时间deltatime_2[autoindex_2]是否为0,即判定是否为与本次的事件同时执行的事件(步骤s1214)。
若步骤s1214的判定为“否”,cpu201进入步骤s1211的弯音处理。
若步骤s1214的判定为“是”,则cpu201返回到步骤s1210,重复进行与autoindex_2值所表示的在音轨块2上下一个执行的演奏数据组的事件event_2[autoindex_2]相关的控制处理。cpu201按照本次同时执行的次数来重复执行步骤s1210至s1214的处理。例如像和音等那样在多个音符开事件在同步的定时发音的情况下,执行以上的处理顺序。
在步骤s1209的处理后,或者在步骤s1214的判定为“否”的情况下,cpu201执行弯音处理(步骤s1211)。在此,根据通过图10的步骤s1008的弯音曲线设定处理在图6例示的弯音曲线设定表600中设定的每小节以及小节内的每一节拍的弯音曲线的设定,实际执行对于图3的语音合成部302执行弯音的图3的弯音处理部320所对应的处理。对于该处理的详细内容,使用图14的流程图予以后述。在该步骤s1209的处理后,结束图12的流程图所示的本次的自动演奏中断处理。
图13是表示图8的步骤s805的说唱再生处理的详细例子的流程图。
首先,cpu201在图12的自动演奏中断处理的步骤s1205中,判定对于ram203上的变量songindex是否设定了值而不是null值(步骤s1301)。该songindex值表示当前的定时是否成为说唱语音的再生定时。
若步骤s1301的判定为“是”,即如果当前时间点成为说唱再生的定时,则cpu201判定通过图8的步骤s803的键盘处理是否检测出用户在图1的键盘101上进行的新的按键(步骤s1302)。
若步骤s1302的判定为“是”,cpu201将演奏者通过按键指定的音高作为发声音高设置给未特别图示的寄存器或ram203上的变量(步骤s1303)。
接着,cpu201从ram203上的变量songindex所表示的ram203上的音乐数据的音轨块1上的说唱事件event_1[songindex]读出说唱的歌词字符串。cpu201生成说唱数据215,并对语音合成lsi205指示发声处理(步骤s1305),上述说唱数据215用于通过在步骤s1303中设定的设置了基于按键的音高的发声音高发出与所读出的歌词字符串对应的说唱语音输出数据217。语音合成lsi205通过执行在图3中说明的统计性语音合成处理,将说唱语音输出数据217合成并输出,该说唱语音输出数据217用于与演奏者在键盘101上按压的键的音高实时对应地歌唱从ram203作为音乐数据而指定的歌词。
另一方面,当通过步骤s1301的判定判定为当前时间点成为说唱再生的定时,并且步骤s1302的判定为“否”,即判定为在当前时间点未检测出新的按键操作时,cpu201从ram203上的变量songindex所表示的ram203上的音乐数据的音轨块1上的说唱事件event_1[songindex]读出音高的数据,将该音高作为发声音高设置给未特别图示的寄存器或ram203上的变量(步骤s1104)。
在为说唱演奏时,音高既可以与旋律的音高联动,也可以不联动。
之后,cpu201通过执行上述的步骤s1305的处理来生成说唱数据215,并对语音合成lsi205指示发声处理(步骤s1305),上述说唱数据215用于通过在步骤s1304中设定的发声音高来发出与从说唱事件event_1[songindex]读出的歌词字符串对应的说唱语音输出数据217。语音合成lsi205通过执行图3中说明的统计性语音合成处理,即使演奏者在键盘101上未按压任何键,也将说唱语音输出数据217合成并输出,该说唱语音输出数据217用于与同样作为音乐数据而默认指定的音高对应地唱出从ram203作为音乐数据而指定的歌词。
在步骤s1305的处理之后,cpu201将ram203上的变量songindex所表示的进行了再生的说唱位置存储在ram203上的变量songindex_pre(步骤s1306)。
并且,cpu201将变量songindex的值清除为null值,将这之后的定时设为不是说唱再生定时的状态(步骤s1307)。之后,cpu201结束图13的流程图所示的图8的步骤s805的说唱再生处理。
在上述的步骤s1301的判定为“否”时,即当前时间点不是说唱再生的定时时,cpu201判定通过图8的步骤s803的键盘处理是否检测出演奏者在图1的键盘101上进行的新的按键(步骤s1308)。
当步骤s1308的判定为“否”时,cpu201直接结束图13的流程图所示的图8的步骤s805的说唱再生处理。
当步骤s1308的判定为“是”时,cpu201生成说唱数据215,并输出给语音合成lsi205(步骤s1309),该说唱数据215用于指示将当前语音合成lsi205发声处理中的ram203上的变量songindex_pre所表示的ram203上的音乐数据的音轨块1上的说唱事件event_1[songindex_pre]的歌词字符串所对应的说唱语音输出数据217的音高变更为基于在步骤s1308中检测出的演奏者的按键的音高。此时,在说唱数据215中,已经发声处理中的歌词的音素中的后半部分的音素,例如如果为歌词字符串“ki”则构成该歌词字符串的音素串“/k/”“/i/”中的后半部“/i/”起始的帧被设置在向音高变更的开始位置。语音合成lsi205执行使用图3说明的统计性语音合成处理,由此将说唱语音输出数据217合成并输出,该说唱语音输出数据217将当前发声中的说唱语音的音高实时变更为演奏者在键盘101上按下的键的音高来进行歌唱。
通过以上的步骤s1309的处理,将从当前的按键定时紧前的原本的定时开始发出的说唱语音输出数据217的发声的音高变更为演奏者演奏的音高,从而能够在当前的按键定时使该发声继续。
在步骤s1309的处理之后,cpu201结束在图13的流程图中示出的图8的步骤s805的说唱再生处理。
图14是表示图12的自动演奏中断处理中的步骤s1211的弯音处理的详细处理例的流程图。首先,cpu201将ram203内的变量dividingtime的值增加1(步骤s1401)。
之后,cpu201判定变量dividingtime的值是否与通过上述式(2)计算出的值d一致(步骤s1402)。若步骤s1402的判定为“否”,则cpu201直接结束图14的流程图中例示的图12的步骤s1211的弯音处理。d是表示对ticktime进行多少倍乘的值,因此,每1ticktime执行图12的自动演奏中断处理,每dticktime执行从中调出的图14的弯音处理的实质处理。例如,如果设d=10,则每10ticktime执行弯音处理。在上述图9的(c)的说唱开始处理的步骤s921中,将变量dividingtime的值初始设定为d-1,因此在执行自动演奏开始时的最初的自动演奏中断处理时,在步骤s1401的处理后,步骤s1402的判定必定为“是”。
在步骤s1402的判定为“是”时,cpu201将变量dividingtime的值复位为0(步骤s1403)。
接着,cpu201判定ram203上的变量bendadressoffseet的值是否与一个弯音曲线内的最终地址r-1一致(步骤s1404)。在此,判定针对一个拍子的弯音处理是否结束。在上述图9的(c)的说唱开始处理的步骤s921中,变量bendadressoffseet的值被初始设定为r-1,因此在执行自动演奏开始时的最初的自动演奏中断处理时,步骤s1404的判定必定为“是”。
在步骤s1404的判定为“是”时,cpu201将变量bendadressoffseet的值复位为表示弯音曲线的开头的值0(参照图7)(步骤s1405)。
之后,cpu201根据变量elapsetime的值计算出当前的小节编号和节拍编号(步骤s1406)。在为4/4拍子时,1拍的ticktime数通过timedivision的值给出,因此将变量elapsetime除以timedivision的值,并进一步将该结果除以4(每1小节的拍数),由此能够计算出当前的小节编号和节拍编号。
接着,cpu201从图6所例示的弯音曲线设定表600取得与在步骤s1406中计算出的小节编号和节拍编号对应的弯音曲线编号,对ram203上的变量curvenum设置该值(步骤s1407)。
另一方面,在ram203上的变量bendadressoffseet的值没有达到一个弯音曲线内的最终地址r-1,从而步骤s1404的判定为“否”的情况下,cpu201使表示弯音曲线内的偏置地址的变量bendadressoffseet的值增加1(步骤s1409)。
接着,cpu201判定通过执行本次或上次以前的自动演奏中断处理中的步骤s1407,在变量curvenum中数据是否得到弯音曲线编号(步骤s1408)。
若步骤s1408的判定为“是”,cpu201从以下的弯音曲线表700的地址取得弯音值(参照图7)(步骤s1410),上述弯音曲线表700是对在变量curvenum中得到的弯音曲线编号所对应的rom202的该弯音曲线数据的开头地址bendcurve[curvenum]相加在变量bendadressoffseet中得到的偏置值而得到的弯音曲线表。
最后,与图13的步骤s1309中说明的情况同样地,cpu201生成说唱数据215并输出到语音合成lsi205,该说唱数据215用于指示将当前语音合成lsi205发声处理中的ram203上的变量songindex_pre所表示的ram203上的音乐数据的音轨块1上的说唱事件event_1[songindex_pre]的歌词字符串所对应的说唱语音输出数据217的音高变更为根据在步骤s1410中取得的弯音值计算出的音高。然后,cpu201结束图14的流程图中例示的图12的步骤s1211的弯音处理。
若变量curvenum中没有得到弯音曲线编号从而步骤s1408的判定为“否”,则用户针对该拍子将弯音曲线的设定设为无效,因此cpu201直接结束图14的流程图所例示的图12的步骤s1211的弯音处理。
如上所述,在本实施方式中,能够针对每个拍子,对说唱音执行用户实时或预先对该拍子指定的弯音曲线所对应的弯音处理。
除了以上说明的实施方式外,当在拍子与拍子的连接部分指定了不同的弯音曲线的情况下,图3的弯音处理部320能够进行是继承前面拍子的最后的音高,还是对双方的音高在时间上进行插补的处理,使得通过弯音曲线进行变更前的拍子的最后的音高与本次拍子的最初的音高不会不连续。由此,可抑制不同音的产生等能够再生音质良好的说唱音。
在以上说明的实施方式中,用户例如在连续的16拍(在为4/4拍子时为4小节)内针对每一拍设定弯音曲线,但也可以采取将16拍的弯音曲线的组合一并进行指定的用户接口。由此,能够简单地直接模拟并指定有名的说唱歌手的说唱演奏。
此外,还能够具备强调单元,该强调单元每隔小节的开头等拍子连续的预定数(例如4拍)或实时地使弯音曲线变化来强调语调。由此,能够进行更多彩的说唱表现。
在上述实施方式中,对于说唱语音的音高作为音调弯音执行了弯音处理,但也可以对音高以外的例如声音的强度或音色等执行弯音处理。由此,能够进行更多彩的说唱表现。
在上述的实施方式中,对说唱语音进行了语调图形的指定,但也可以对说唱语音以外的乐器音的音乐信息执行语调图形的指定。
在使用图3和图4说明的采用了hmm声学模型的统计性语音合成处理的第一实施方式中,能够再现特定歌手、歌唱风格等微妙的音乐表现,能够实现没有连接失真的流畅的语音音质。并且,通过学习结果315(模型参数)的变换,能够适应于其他歌手,表现多样的声质和感情。并且,能够根据学习用说唱数据311以及学习用说唱语音数据312来机器学习hmm声学模型中的全部模型参数,由此作为hmm声学模型获得特定歌手的特征,在合成时能够自动构筑表现这些特征的乐音合成系统。语音的基本频率、长度基于乐谱的旋律、乐曲速度,能够根据乐谱唯一地决定音高的时间变化、节奏的时间构造,但是由这些合成的说唱语音单调且是机械性的,欠缺作为说唱语音的魅力。在实际的说唱语音中,并非按乐谱那样整齐划一,而且根据声质和声音的高低、它们的时间上的构造变化,存在各个歌手独特的风格。在采用hmm声学模型的统计性语音合成处理的第一实施方式中,能够根据内容将说唱语音中的频谱信息和音高信息的时序变化模型化,并且通过考虑乐谱信息,能够进行更接近实际的说唱语音的语音再生。并且,在统计性语音合成处理的第一实施方式中采用的hmm声学模型相当于在对按照某个旋律的歌词进行发声时,歌手的声带振动、声道特性中的语音的声学特征量序列一边进行怎样的时间变化一边进行发声这样的生成模型。并且,在统计性语音合成处理的第一实施方式中,通过使用包含了音符与语音的“偏差”的内容的hmm声学模型,实现一种说唱语音的合成,其能够准确地再现取决于歌手的发声特性而具有复杂地变化的倾向的歌唱法。采用这样的hmm声学模型的统计性语音合成处理的第一实施方式的技术例如通过与基于电子键盘乐器100的实时演奏的技术融合,能够准确地反映在以往的片段合成方式等的电子乐器中无法实现的成为模型的歌手的歌唱法以及声质,能够与电子键盘乐器100的键盘演奏等相匹配地实现如同某个说唱歌手实际进行说唱那样的说唱语音演奏。
在使用图3以及图5说明的采用了dnn声学模型的统计性语音合成处理的第二实施方式中,作为语言特征量序列与声学特征量序列的关系的表现,将统计性语音合成处理的第一实施方式中的取决于基于决策树的内容的hmm声学模型置换为dnn。由此,能够通过用决策树难以表现的复杂的非线性变换函数,来表现语言特征量序列与声学特征量序列的关系。此外,在取决于基于决策树的内容的hmm声学模型中,还根据决策树将对应的学习数据进行分类,因此取决于各内容的hmm声学模型被分配的学习数据减少。与此相对,在dnn声学模型中,根据全部学习数据学习单一的dnn,因此能够高效地利用学习数据。因此,dnn声学模型能够比hmm声学模型高精度地预测声学特征量,能够大幅度地改善合成语音的自然性。并且,在dnn声学模型中,能够利用与帧相关的语言特征量序列。即,在dnn声学模型中,预先决定声学特征量序列与语言特征量序列的时间上的对应关系,因此能够利用在hmm声学模型中难以考虑的“当前的音素的继续帧数”、“当前的帧的音素内位置”等与帧有关的语言特征量。由此,通过使用与帧有关的语言特征量,能够将更详细的特征模型化,能够改善合成语音的自然性。这样的采用dnn声学模型的统计性语音合成处理的第二实施方式的技术例如通过与电子键盘乐器100的实时演奏的技术融合,能够使基于键盘演奏等的说唱语音演奏更自然地接近成为模型的说唱歌手的歌唱法以及声质。
在以上说明的实施方式中,作为语音合成方式采用统计性语音合成处理的技术,由此与以往的片段合成方式相比能够实现极少的存储器容量。例如,在片段合成方式的电子乐器中,为了存储语音片段数据需要具有高达数百兆字节的存储容量的存储器,但是在本实施方式中,为了存储图3的学习结果315的模型参数,只具有几兆字节存储容量的存储器即可。因此,能够实现更低价格的电子乐器,能够使高音质的说唱演奏系统用于更广泛的用户层。
并且,在以往的片段数据方式中,需要人为地调整片段数据,因此制作用于说唱演奏的数据需要大量的时间(以年为单位)和劳力,但是在本实施方式中生成用于hmm声学模型或dnn声学模型的学习结果315的模型参数时,几乎不需要调整数据,因此只需要几分之一的生成时间和劳力。根据这些,能够实现更低价格的电子乐器。此外,一般用户还能够使用作为云服务可使用的服务器计算机300或语音合成lsi205中内置的学习功能来学习自己的声音、家族的声音、或者有名人士的声音等,并将这些作为模型语音通过电子乐器进行说唱演奏。在该情况下,作为更低价格的电子乐器能够实现比以往更自然且高音质的说唱演奏。
在以上说明的实施方式中,对电子键盘乐器实施了本发明,但本发明也可以应用于电子弦乐器等其他电子乐器。
此外,作为图3的发声模型部308能够采用的语音合成方式并不限于倒频谱语音合成方式,能够采用以lsp语音合成方式为首的各种各样的语音合成方式。
并且,在以上说明的实施方式中,说明了使用hmm声学模型的统计性语音合成处理的第一实施方式或使用dnn声学模型的随后的第二实施方式的语音合成方式,但是本发明并不限于此,只要是使用了统计性语音合成处理的技术,可以采用例如将hmm与dnn进行组合的声学模型等任何语音合成方式。
在以上说明的实施方式中,作为音乐数据而提供说唱的歌词信息,但是作为说唱的歌词信息也可以实时地提供对演奏者实时歌唱的内容进行语音识别而得到的文本数据。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除