嘛...其实是在报道帖里面有提到...
山寨了一部分VocalListener功能的某自作物
呃...我把它叫做VocalTune
离完成还有很远很远的距离...
心急了所以放了这个半半半成品上了OTL
或许这里的人至少应该是知道VocalListener的
VocalListener的目标貌似是用人声原唱生成VSQ吧
现在放上的这个东西毕竟是山寨的...
所以没办法从人声直接生成VSQ
之所以叫他VocalTune,是因为它的功能是“调整”
使用者需要准备这么一些文件
1、一个填好音符的VSQ文件
2、这个文件生成的wav文件
3、人声的wav文件
然后交给VocalTune处理,生成另外一个VSQ文件
这个文件中的PIT(即升降调)和DYN(即音量,还未实现)这两个
参数会被VocalTune调整以接近原唱的值
现在的版本很不易用,很不灵活,而且十分慢
下面的那个简单例子,计算时间花了2分钟...
[hr]
使用方法:
第一个要注意的事情是,这个程序不会在你机器上种木马啥的,
也不会导致莫名奇妙的死机,但是它自己可能莫名其妙地死掉
因为是个半半半成品
第二,我没用过VOCALOID1,所以整个帖子里面提到VOCALOID
就是指的VOCALOID2
然后定义几个概念
1、MIDI时间
MIDI时间和我们播放声音文件那个时间是不同的
比如,当BPM变化的时候,一个四分音符的实际长度也就变化了
而MIDI时间是绝对的,不变的
在VOCALOID里面,一个四分音符被分成480份,
每一份就是1单位的MIDI时间
如果我们提供一张Tempo表,表的内容是某一个MIDI时间点上
的Tempo,那么我们就能把MIDI时间转换成真实的时间
VOCALOID默认空了4个小结出来,因为默认是4/4拍,所以就有
16个四分音符,每个四分音符长480个单位的MIDI时间
16*480=7680个单位的MIDI时间
我想应该有人明白我想说的了,考虑到Tempo可能变化,
这样一来用实际时间来表示某些值就不怎么方便了,
所以下面的某些参数我使用了MIDI时间来表示
OK...现在是真的使用方法了...
上面说了,你需要那3个东西
所以,先找来原唱....注意,需要清唱,嗯我知道很难找
(例子里面的原唱是我用无损版的原唱减去无损版的伴奏得到的...)
打开Vocaloid,开始填音符。当然,你找得到MIDI的话
也可以直接导入。要获得最好的效果,你需要将每个音符精确对位
这个很麻烦,可能需要一遍又一遍地输出WAV....
总之,现在音符填好了,输出成一个WAV,
输出的时候要注意的是,你输出的哪段
比如你输出的是第10到20小节,4/4拍
那么就是输出从MIDI时间19200到MIDI时间38400这个区间的东西
记住这个区间,待会儿用得着
输出以后,打开CoolEdit啊或者其他的任何你顺手的类似软件
将原唱文件向输出的Wav对齐,
意思是,不改VOCALOID输出的文件
而原唱那个文件,要么切掉一部分,要么在前面加空白,
总之让它们的波形(*说波形不太准确)对齐
编写一个配置文件,内容类似这样
;========================
[VSQ]
Input=shizumeuta.vsq
Output=output.vsq
Start=7680
[Human]
File=orig.wav
Min_Freq=110
Max_Freq=550
Offset=7680
[Vocaloid]
File=miku.wav
Min_Freq=110
Max_Freq=550
Offset=7680
;========================

解释一下
这是一个标准INI文件
[XXX]表示一个叫做"XXX"的节
跟着的那些AAA=BBB就是这个节中的参数
里面的名字是大小写敏感的
也就是说VSQ不等于Vsq也不等于vsq
VSQ节中
Input后面的那个指的是你刚才填好音符的那个VSQ文件
Output指的是经过VocalTune调整后的VSQ文件
Start指的是从哪个MIDI时间点开始处理
例子里面使用7680这个值的意义就在于,跳过VOCALOID
前面那4个黑掉的小节,因为你不能在上面放音符,
根本没有调整的意义。
接着其实还有个End参数,和Start相对应
End参数就是用来设定到哪个时间点处理完毕,同样是MIDI时间
然后是Human和Vocaloid节
这一节中规定的就是与原唱或者Vocaloid输出的wav有关的一些东西
File后面的是原唱或者VOCALOID输出的wav的文件名
如果是在Human节中,这个参数就是原唱的wav文件名
如果在Vocaloid节中,就是VOCALOID的
Min_Freq和Max_Freq指定这个音频里面音符的频率的上下限
比如这段歌里面最低的音是C3,
那么Min_Freq就填一个稍微小于C3频率(即130.81Hz)的值,比如110
比如这段歌里面最低的音是D4,
那么Max_Freq就填一个稍微大于C3频率(即293.66Hz)的值,比如330
这两个如果不确定可以不填...那么默认的就会采用50-550的设置
Offset参数就是你上面输出Wav的开始位置,我这里设置为7680
因为我的开始位置是刚好从黑掉的小节之后
4小节 * 每小节4个四分音符 *每个四分音符480MIDI时间=7680
填好以后
在控制台里面用“VocalTune_CUI 配置文件名”来启动VocalTune
如果你完全不知道什么叫控制台/Console/Shell/Cmd的话
可以直接把所有的东西,即VSQ文件+2个wav文件+配置文件+VocalTune_CUI.exe
放在一个文件夹里面,然后把配置文件拖到VocalTune_CUI.exe上面...
然后等吧
我这机器CPU是烤土豆E6300 DDR2 800的内存,等了2分钟...
然后打开输出文件看看.....
嘛...理想和现实总是有差距的(?),世上没有完美的东西(??)
总之,里面可能会有很多地方听起来很奇怪
原因可能有几个,
一是频率检测不正确,这样的话,
想想原唱是否杂音太大(比如包含了伴奏...)、最大最小频率设置是否有问题
二是可能某些音符没能和原唱的对准
清唱的原唱啥的难找哎,所以考虑改造一下做成做对话的东西....
关于软件的构成,
频率检测的核心算法我可写不出来,
软件中使用了snack这个音频算法库
snack本来是为脚本语言设计的,
在vocaltune中进行了一些改装,使得它能够用到C++里面
snack在BSD协议下.....外国人可真是慷慨啊(各种内纽曼面
音量调节功能暂时还没弄╮(╯_╰)╭
例子里面用的歌曲是某女性向(非腐,大概)文字ADV
《あさき、ゆめみし》 的ED曲《鎮命歌 -しずめうた-》
和风曲各种大爱(心)
测试例子你只需要把shizumeuta.ini拖到VocalTune_CUI.exe上面就行了
啊啊,再顺便推荐一下Spectrogram这个软件
作用是频谱分析,看看人声的频谱,这样能对人声有更深的了解
对调教VOCALOID会有些帮助的
本体+例子下载链接
RayFile:
http://www.rayfile.com/files/8f9 ... -994e-0014221b798a/
纳米盘:
http://www.namipan.com/d/VocalTu ... b431473c3ce28bae600
(版主友情提示,不要用MP3来制作清唱wav,一定要用无损!!否则运算后会生成超大vsq文件(即运算溢出)
[
本帖最后由 cxm 于 2009-9-24 12:29 编辑 ]