分类目录
辅助功能
作者与出处
作者:cmx
http://bbs.ivocaloid.com/thread-52200-1-4.html
VocalTune(暂定名)是一个和VOCALOID搭配使用的软件(开发中)。用于参照某段人声,自动调整VOCALOID的参数,使得其输出效果趋近于参照的人声。
使用VOCALOID的时候,单纯地填写音符可以让 米库或者其他的 VOCALOID唱出声来,但是声音并不自然。这是因为,人唱歌的时候,声音有很多的细节表现。比如,从一个词唱到另外一个词的时候,并不是从这个音高直接跳到另外一个音高,而是中间有一个过渡过程,而这个过程有时候会比较复杂。VOCALOID只提供了最基本的音高过渡。类似这样的,VOCALOID默认情况下输出的歌声表现力有限。
然而,VOCALOID为调教者提供了进行各项精细调整的能力。VOCALOID中,可以调节每个音符的摩擦音参数(VEL)、颤音等等参数。而全局的情况下,有DYN(音量)、PIT(音高)、GEN(性别倾向)等9个参数,可以进行精确到时间点的调节。通过调节这些参数,可以让歌声达到基本的自然,乃至更高的表现力。
而其中,对表现力贡献最大的是DYN和PIT两个参数。VocalTune的作用就是调节VOCALOID中的DYN和PIT(以及PBS)参数,VOCALOID输出的歌声变得自然,消除僵硬感。(其实说“使变得自然”不准确,下面解释。)
VocalTune的原理很简单。读取一个真人演唱(要清唱)的音频文件,分析它的音高和音量变化。然后读取VOCALOID输出的歌声,分析这歌声的音高与音量变化。最后,将两组分析出来的数据进行对比,得到VOCALOID里面的PIT与DYN参数。所以,确切的说,VocalTune的作用不是使VOCALOID的歌声变得自然,而是使VOCALOID的歌声趋近于用于参照用的真人清唱的歌声。
首先需要说明一下MIDI时间的概念。
VOCALOID实际上应该算是一个音序器吧。如果你用电脑做过音乐,可能会明白这个。总之,VOCALOID和MIDI关系 慎密。在 VOCALOID的存储文件中,音符的位置啊什么的都是用”MIDI时间”来表示的。VOCALOID中将一个四分音符等分为480份,每一分的长度就是一个单位的MIDI时间。为什么要引入MIDI时间这个概念呢?因为作曲的时候,有时候节拍(Tempo或BPM)会改变,这样一来,在一首歌的不同段,相同的拍子 数经过的实际时间是不同的。这时候如果用实际时间 (比如1.0s啊0.05s)来计时就不方便了。你可以想象,你说“这个C5的音是在5.6s的地方”,而可能在3.0s处的Tempo改变了,这样计算一个音的位置在哪里就会很麻烦。所以才使用“MIDI时间” 来作为时间标志,因为 MIDI时间和节奏没有直接关系,是绝对的时间。
打开VOCALOID Editor,你会发现默认情况下左边会有四个小节是深色的(-3、-2、-1、0小节),你不能在上面放置音符。因为默认是4/4拍,所以一个小节有4个四分音符。上面提到了一个四分音符长度为480个单位的MIDI时间,所以这段深色区域的长度为4*4*480=7680个单位的MIDI时间。也就是说,如果你放置一个音符在第一小节,那么这个音符开始时候的MIDI时间就是7680。VOCALOID存储时间参数的时候,是把这几个深色小节也考虑在内的。
VocalTune的设置参数中提到的时间都是MIDI时间。
打开VOCALOID Editor…原来怎么填音符怎么填歌词的就怎么填,还可以先小小调教一下,比如调一调DYN和PIT以外的参数。还有很重要一点,你需要精确地设定Tempo,推荐使用MixMeister BPM Analyzer。调教好以后保存并合成输出,得一个wav文件。注意你是输出的哪一段,这一段开始的MIDI时间是多少。
因为VocalTune的作用是使VOCALOID输出的声音逼近原声,所以说这个“原声”是必不可少的。所以第一步是找来清唱的原声。如果是原创曲…自己唱吧 囧。另外,你是想让初音翻唱的话,如果你手上有带伴奏的 无损 音频,倒是有个方法可以得到原声。打开Cool Edit或者任何一个你顺手的音频编辑软件,把原唱和伴奏都放到音轨上,完全对齐。最好是做到每个采样点都对齐…。然后将伴奏的音频Invert一下,也就是把波形上下颠倒。最后混合音轨,这样的效果就相当于用原唱“减去”了伴奏,剩下的就是清唱了。如果你用的是MP3而不是无损音频,通常来说这个方法就不会奏效了,因为MP3是有损压缩…另外,即使是无损音频也不见得会奏效..|||||
总之得到了人声的清唱。载入刚才VOCALOID输出的wav文件,以VOCALOID输出地wav文件为准,将人声清唱与VOCALOID输出的wav对齐,使得第一个音的位置基本相同。删减或者增加空白来,使音频开始到第一个音的距离相同。
不齐
大概对齐一下
放大继续观察,对齐
这样就差不多了
对齐后,得到两段音频之间的时间差,然后想办法补齐。
需要注意的是,这里对齐总是以VOCALOID输出的wav为准的。
修改的是人声清唱的wav。
补齐了,保存
这时候写一个INI文件。所谓INI文件其实就是一个文本文件,不过一般用来存储设置信息。总之就是打开笔记本或者其他纯文本编辑器,向里面写一些东西。
这里是一个例子:
; VSQ一节中的参数都是全局的 [VSQ] ; Input指定输入的VSQ文件 Input=input.vsq ; Ouput指定输出的VSQ文件 Output=output.vsq ; 音量差调节比例 DynamicsScale=20 ; 开始调节的MIDI时间,7680默认情况下是4个小节 Start=7680 ; 结束调节的MIDI时间 End=56000 ; 注:MIDI时间——即MIDI里面计时的单位,不受Tempo影响。 ; 嘛,搞过MIDI的人恐怕比我这个半路出家的家伙更熟悉 ; 默认情况下VOCALOID中的一个四分音符被分成480份,每份长为1单位的MIDI时间 ; 调节人声相关参数 [Human] ; 输入的波形文件 File=orig.wav ; 用于频率检测用的参数——最大频率和最小频率,这个区间至少要能包含你的歌中的所有音符的频率 ; 具体音阶与频率的对应关系可以google之 Min_Freq=120 Max_Freq=700 ; Offset确定一个偏移MIDI时间。 ; VOCALOID默认留了4个小节的 不可操作部分 (VOCALOID编辑器里面黑色的那些小节) ; 音符的位置或者参数的位置是把这4个小节也算进去的,也就是说 ; 即使你的第一个音符紧接着黑色小节后放置,那么它的MIDI时间仍不会是0,而是7680 ; 通常人声或者VOCALOID输出的波形文件,不会专门留出这么长的空白时间 ; 所以加入这个参数来说明这个音频文件的开始处对应于VSQ中的哪个时间点 Offset=7680 [Vocaloid] File=miku.wav Min_Freq=120 Max_Freq=800 Offset=7680
例子中以分号开头的是注释,程序不会读这些行。
这里主要解释几个参数:
1、
[VSQ]中的DynamicsScale参数。这个参数用来调节音量调节的力度。如果你发现你输出的VSQ中音量调节过头了,那么可以改小这个值。可以带小数点,不能为负数。
2、
[VSQ]中的Start参数。这个参数用来设定你从哪个MIDI时间开始调节。可以不写这个参数(连Start=也不要写),如果不写,意思就是从VSQ文件最开头开始调节。
3、
[VSQ]中的End参数。同样可以不写,不写就是调整到文件末尾。
4、
[Human]和[Vocaloid]中的Min_Freq与Max_Freq两个参数。前者规定一个频率下限,后者规定一个频率上限。这个上下限最为设定为稍微比正在做的VSQ的音域稍微宽一些。比如你的曲子中最低的音是C3,C3是130.81Hz,那么Min_Freq这里就填个100啊之类的就比较合适。
5、
[Human]/[Vocaloid]中的Offset参数。这个之前VOCALOID输出歌声的时候,有说过,记下你输出的是哪一段,这一段的开始的MIDI时间是多少。
比如你之前用 设置了从第2小节到末尾(4/4拍),那么这个Offset就应该设置为9600,第二个小节之前有一个白色的小节,和四个系统保留的暗色小节,总共5小节*每小节4个四分音符*每个四分音符占480MIDI时间=9600MIDI时间。
参数填完以后,存成后缀名为ini的文件(其实后缀名无所谓),然后拖到VocalTune_CUI.exe上。或者在命令行下输入“VocalTune_CUI option.ini”,其中“option.ini”就是你刚才存的ini文件。然后程序开始执行。
其实VocalTune就是这么个黑黑的东西。或许以后会写个更好看且好用的界面吧…
最后会用你在ini文件中[VSQ]下Output项所设定的名字来生成输出文件。用VOCALOID Editor打开看看吧。
最后需要注意的是:这是仍在开发中的软件,就算你正确的使用它,它也不见得不出问题(拖走。