14 12
发新话题
打印

约定的礼物——山寨之VocalTune

约定的礼物——山寨之VocalTune

嘛...其实是在报道帖里面有提到...
山寨了一部分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 编辑 ]
决定了!先涂个头像吧XD

TOP

那个,LZ,我认为应该移动到V2区~~ 毕竟是V2的东西~

水区很乱的~

TOP

噢,方便的话,请帮忙移动吧
---------------------------------------------------
谢了

[ 本帖最后由 迪亚大菠萝 于 2009-7-14 11:08 编辑 ]
决定了!先涂个头像吧XD

TOP

新版的要好些了。。。。

期待继续更新。。。O(∩_∩)O哈!

TOP

现在才看到..抱歉....... orz
这个软件给我的第一印象就是VocalListener刚发布时日本v家圈里的研究热潮~那时在很短时间之内出现了很多类似的工具……
不知lz有没有去看过日本那边关于VSQ、NYD、PIT以及相关算法等研究文章~话说这类文章07年底就开始出现了
比如这些:
http://www.geocities.jp/zhuoware/index.html
http://www.geocities.jp/zhuoware/ripples/ripples_top.html
http://www.geocities.jp/cn_hibari/vsq/
http://akira-izumi.cocolog-nifty.com/
上面这些老师们的文章很有参考价值~如果LZ有兴趣继续完善的话类似的文章还有很多~

话说这类仿VocalListener的软件目前的最为完善的应该就是MMV了~不过这类工具已经不想以前那么被关注了~貌似全部停止开发了。

TOP

其实做这个的时候就参考了不少11区的资料。而且MMV可能和VocalTune这个使用了同样的snack库呢(因为那MMV也把频率叫做f0,也需要设置最大和最小频率XD)。
另,VocalTune中用到的调整PIT和DYN这些参数的算法是理论+实验出来的。

学习是创新的第一步。写VocalTune的时候我也明白其实这个用处不大,不过写出来给自己(或者别人)打打气嘛。(其实还有个目的,就是自用 。)增加GUI界面之类的工作已经是不必要的了(相比而言MMV比较好用)。最终估计也就自己实现频率检测算法(这样可以只用原唱与伴奏来检测频率),然后修修BUG了事。或许可以结合M$的语音识别引擎做个语音生成用的东西囧...

在对这些基本的东西比较熟悉以后,就可以开始做一些稍微有用的工具了。比如...“VOCALOID汉语发音(伪)生成器”之类的。用来辅助调教。


なんとか…やる気ないね…
决定了!先涂个头像吧XD

TOP

mmv感觉调出的精度不够高,曲线都是一个个竖着的窄条拼出来的(不知是不是偶使用上的原因。。。但软件里没有设置项。。)。
VocalTune的就很圆滑的。。。。感觉效果很好。

TOP

总之 菠萝你已经很强大了

TOP

很好……终于能听懂miku讲的中文了

TOP

强。。。。。 强大~~!!
燃烧吧!!
爱!!
强大的爱!!!

TOP


感謝LZ了~
一直在類似與這種玩意的東西~
終於給我翻到了~
LZ愛死你了~
不知道說啥
先鞠躬~
然後拖!

TOP

为什么我打不开内0.0
  大爱初音!

TOP

 14 12
发新话题