搜索

iVocaloid论坛

查看: 6625|回复: 1

[调声辅助软件/插件] 约定的礼物——山寨之VocalTune [复制链接]

Rank: 3

0
0
0


UID: 50190
权限: 20
发帖: 19 (1精)
积分: 120
章鱼: 0
大葱: 16
茄子: 57
注册:2009/7/12
存在感:100
迪亚大菠萝 发表于 2009/7/14 04:05:44 |显示全部楼层
本帖最后由 cxm 于 2010-3-10 13:41 编辑

嘛...其实是在报道帖里面有提到...
山寨了一部分VocalListener功能的某自作物
呃...我把它叫做VocalTune

离完成还有很远很远的距离...
心急了所以放了这个半半半成品上了OTL

或许这里的人至少应该是知道VocalListener的
VocalListener的目标貌似是用人声原唱生成VSQ吧
现在放上的这个东西毕竟是山寨的...
所以没办法从人声直接生成VSQ

之所以叫他VocalTune,是因为它的功能是“调整”
使用者需要准备这么一些文件
1、一个填好音符的VSQ文件
2、这个文件生成的wav文件
3、人声的wav文件

然后交给VocalTune处理,生成另外一个VSQ文件
这个文件中的PIT(即升降调)和DYN(即音量,还未实现)这两个
参数会被VocalTune调整以接近原唱的值

现在的版本很不易用,很不灵活,而且十分慢:(mikum1:)
下面的那个简单例子,计算时间花了2分钟...




使用方法:

第一个要注意的事情是,这个程序不会在你机器上种木马啥的,
也不会导致莫名奇妙的死机,但是它自己可能莫名其妙地死掉
因为是个半半半成品
第二,我没用过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

使用道具 举报

啊,emm,啊

Lv.2-鱼仔酱

Rank: 2Rank: 2

0
0
0


UID: 134134
权限: 10
属性: 不明
发帖: 25 (0精)
积分: 21
章鱼: 0
大葱: 1
茄子: 338
注册:2014/10/4
存在感:55
splinter01 发表于 2015/4/29 16:19:47 |显示全部楼层
马克~~              

使用道具 举报

您需要登录后才可以回帖 登录 | 注册/sign up

申请友链|Archiver|iVocaloid - 自由,开放,合作,共享    | 版权持有者点击这里进行举报

GMT+8, 2019/5/25 10:02

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部